We want to build a smartphone app which uses geolocation, etc. and target the most important smartphones. Which OS would you support for a b2c application? I found a german statistic here: http://de.statista.com/statistik/daten/studie/150842/umfrage/prognostizierte-marktanteile-der-smartphone-betriebssysteme-in-2013/ which forecasts the smartphone usage for 2013. To summarize it lists the following OS, ordered by priority:
Symbian, Android, Blackberry (RIM), Windows Mobile, iPhone
Would you agree with this priority or should we start with the classical: iPhone/Android combo?
It probably depends on the market you're targeting. The statistics you're quoting might be right for Germany but in the US situation is quite different. Blackberry still holds the biggest share, but if your app is a consumer (not business) one, iPhone/iPad and Android is the clear choice. Symbian is not a large player here at all, besides, there's a lot of talks going on about a crisis of the platform so I wouldn't even take it into consideration.
Wright now and in a foreseeable near future, iPhone and iPad are the trendy options, for most categories of consumers. Blackberry and Windows Mobile devices are more the tools of business oriented people. So I guess it's more about your target audience than general usage. iPhone OS and Android will cover, in my opinion, the most ground.
The only "crisis" in the Symbian Platform is the gradual shift towards Qt. If you develop a new app for Symbian, use Qt, which is a very nice and powerful environment. The Nokia Qt SDK is worth a try.
In Europe and large parts of Asia, Symbian outsells all the other platforms combined, so the market is huge. In the US, Symbian barely exists, because Nokia isn't much of a player there.
I would recommend you to take a look at Mobile Community Framework (MCF). This is a cross-platform framework that supports all today's smartphone OS - iPhone, Android, Symbian, Blackberry and WinMobile. It can perform tasks like simple object transfer over network in Wi-Fi Ad-Hoc mode (for direct connections) or through dedicated proxy server, defining and exchanging geolocation and discovering peers running specific MCF-enabled apps in a given radius. It is free and simple to use.
More info at http://uvamobiltec.com
I'd do a quick prototype for Android (as it's a simple platform to develop for) first. Then consider iPhone & probably RIM.
Related
I want to develop a SmartTV application for the GoogleTV platform and i've been browsing trough the GoogleTV Guidelines (https://developers.google.com/tv/android/).
However, i don't want GoogleTV to be my only platform. I also want the same app to work on devices like Samsung SmartTV and/or LG SmartTV.
But do the guidelines from Google conflict with Samsung guidelines and does the code of my application need a lot of rework to work on other devices?
I'm editing my answer. I just checked the Samsung website and, I'm happy to say, they threw out all the junk.
They use to have a number of different, non-interchangeable, coding languages. And none of them really worked on the TV's of the other manufacturers either. This is most likely the reason why few applications were ever developed for those platforms.
Now they are supporting basic javascript. So, you have the opportunity to build yourself a TV web page and load it up as an application on Samsung and potentially run it from the Google-TV browser. However, I would verify whether your application requires specific HTML5 features (such as offline support) that may not be implemented in the Android-like browser version running on Google-TV. Having said that, you can always build an app that loads locally on Samsung and runs from a remote server on Google-TV?
... for some historical perspective on how we go to where we're at you can continue reading....
The implication of each manufacturer having their own unique OS creating developer fragmentation was probably predictable to them but they were likely working in a panic. After they became aware of the Apple TV when the first patents were make public in 2008 they understood the longer term impact if Apple provided hundred of thousand of applications worth of content and they had nothing to compete. So they got together and decided on a standard they would implement that would provide a non-fragmented solution allowing any app to run on the TV's of any supporting manufacturer. AKA: they got it right.
In 2009 a good number of them announced support for the Yahoo Connected TV standard. However, by 2010 the development framework, app store, etc that was promised had not materialized. This is likely when they all went in their own direction (although you can still buy Yahoo Connected TV sets from Samsung, Sony, LG, Vizio, and Panasonic today).
With the implementation of the Google-TV Market and the ability of developers to transition existing apps to Google-TV apps with only 20% or so of the effort of creating new (thus lowering the cost and supporting the business case for a TV version) that they have a solution that meets their original requirements.
Now, there's certainly going to be a little 'bitten once twice shy' coupled with revenue sharing discussions and perhaps the impact of Google being a hardware manufacturer (Motorola Mobility) but, at the end of the day, the inevitable is inevitable. They either take Google-TV or create their own, very close, must run existing applications, version of Android.
PS: I didn't look at the other manufacturers site.
For my understanding core components like the Player and Remote Control Management are platform specific.
You would need to use a configuration file and implements these components independently for each platform.
Alternatively you can use some cross platform SDK.
Searching on Google for "smart tv app development" I found out:
Joshfire Smart TV SDK
http://www.joshfire.com/products/
Works on Google TV and Samsung
But not on LG
Mautilus Smart TV SDK
http://www.mautilus.com/knowhow/smart-tv-application-development/
As written in their website it covers
LG Netcast 2012
Samsung 2012 / 2013 models.
I hope it can helps.
orangeejs is a new open source project aims to ease the pain of cross platform smart tv app development. The target platforms are latest model of samsung/lg/android/ios.
There is a framework developed by BBC and called TAL. It aims to help you with cross-platform development. All their Smart TV apps were developed using this library so take a look.
First of all if you consider to develop for many TV platforms see the:
https://developers.google.com/tv/web/lib/jquery/
It's jQuery library for Google TV, so you can develop application in HTML/JavaScript just like in Samsung and LG.
Of course there are the differences in key handling, video player, event handling so you will need to develop the framework which cover all this differences.
There are few open source frameworks out there but not mature enough to use it "out of the box".
for example: http://framework.joshfire.com/
You might want to take a look at cloudee-couch which is open-sourced by Boxee. This example/framework is built on top of Spine.js. Base classes take care of key handling, focus, and oauth authentication.
It's not a big deal to make an application for the smart tv platform that supports across the devices. Now the industry is filled with a lot of smart tv app development companies with their unique functionalities and features to offer the customized app as per the business models. FYI I'd suggest you choose the best smart tv app builder from the list. Hope it will be helpful for the video content creators & business owners to stream across the tv.
VPlayed
Zype
Uscreen
Explore the complete list here Ref: https://dev.to/dwarak17/5-smart-tv-app-development-companies-to-develop-tv-apps-in-2021-1584
While both Samsung and LG have proprietary Smart TV systems, they also both support Google TV. If you create an app for Google TV, you'll only have to write it once and it will run on Samsung's Google TV's, LG's Google TV's, Vizio's Google TV's, and Sony's Google TV's.
I want to develop an application which runs on iPhone / Android / Windows Phone 7 smartphones and is able to recognize a marker and place augmented reality content on it.
Is there any common framework which I could use for that task?
This is probably the closest you'll get:
http://nyatla.jp/nyartoolkit/wiki/index.php?FrontPage.en
Not sure about Android or iPhone, but Kevin Marshall has done some proof-of-concept work on Windows Phone 7. You should keep in mind though, that augmented reality on WP7 requires access to camera APIs that are not publicly available and as such any AR application on WP7 would not be available officially through the Marketplace. Device manfacturers (such as LG) have access to these APIs, which is how some AR applications already exist for WP7.
As Derek and Stefan point out, it appears that there are ports of the ARToolKit augmented reality framework for all three platforms.
On iPhone, you can see this in the VRToolkit sample application by Benjamin Loulier, which leverages the enhanced ARToolKitPlus library.
For Android, it looks like NyARToolkit is available, with this sample application (as pointed out by Stefan).
Finally, it looks like SLARToolKit is used in the Windows Phone 7 sample application here (as pointed out by Derek).
Be aware that this toolkit and its derivatives are licensed under the GPL:
IMPORTANT NOTICE REGARDING YOUR RIGHT
TO USE ARTOOLKIT:
ARToolKit is made available freely for
non-commercial use under the GNU
General Public License. Commercial
licenses to a professional
implementation of ARToolKit are
available for users for whom the GPL
is not suitable, or who require a
higher level of support, or who
require customization or other
specialist modifictions. Commercial
licenses are administered by
ARToolworks, Inc., Seattle, WA, USA.
I've seen people violating this license in their applications and derivative frameworks, so it's something to be aware of.
Did you check Layar?
AFAIK they do not support WP7 but I guess it's a matter of time.
I'm in the middle of development of a client-server "socializing" that is supposed to run on several mobile devices. The project is pretty complex, involving networking, exchanging media, using geolocation services, and nice user UI.
In terms of development efforts, technical risks and extensibility what is the best platform to start with? Taking into the account that the goal is go "live" as fast as possible with the mobile version. And second goal is to cover most users (but first is more important).
iPhone (iPod iPad)
Android
BlackBerry
Java ME,
Symbian
I realize that there are limitations on every platform, and there are different aspects to take into the account (for example iPhone has better developer's community then Android, J2ME runs in a terrible sandbox but covers most devices).
Please share your pros and cons. I have the experience only with J2ME, unfortunately I can't evaluate other platforms.
If you're looking at native applications on the platforms you list, then the development effort required in order from least to most is:
iPhone
Android
Blackberry
Java ME
Symbian
Development effort is largely governed by language/libraries, tooling and fragmentation. Hence iPhone wins (good language & libraries, excellent tooling, little/no fragmentation). Symbian comes last (C++ with limited libraries, poor tools, large fragmentation). Android beats Blackberry on libraries and fragmentation, and Blackberry beats Java ME on fragmentation.
The counterpoint to this is market size, especially among your target user base - Java ME reaches far more devices than any other platform, whereas the Android installed base is still the smallest of the 5.
There's no one right answer, but if reach is important then Java is a good place to start, if time-to-market and user experience are the keys then iPhone makes sense.
It's also worth looking at how easy/difficult it would be to port across to other platforms. There are various cross-platform libraries around such as Airplay or J2ME Polish that might reduce the costs - provided you can implement your application on the cross-platform part.
I'd like to speak up for Maemo/Meego(Nokia's/Intel's mobile Linux). While it is in a state of transition and currently Maemo 5 has only one good phone(and a couple of cheap Chinese ones), but I feel that it will soon be big(I like many people believe that Meego will be Nokia's high end strategy and Nokia is the biggest phone maker in the world). Plus the N900 is the coolest phone around.
Also their it basically an open Linux device (pretty similar to standard desktop Linux). The ide QT Creator is great and cross-platform(comes with embedded visual designer and nice documentation broser) but you don't have to use it, there is some support for using your own text editor or ide.
There is no sort of signing key nonsense(I did a student project for the blackberry and have been quite annoyed by keys). Other things I didn't like about the blackberry: windows only eclipse plugins, our team had a lot of trouble figuring out how to add third party libraries to blackberry COD archives . Also some of the Classes are somewhat sparse in a lot of ways especially String/Char, probably since its ME based, I also didn't like the file read/write apis, it felt somewhat awkward, possibly since blackberry apps only recently got the ability to store files(before you could only store/retrieve objects to disk via the persistence layer)..
The preferred Languages are (Gobject C currently but less so for Meego) , Qt flavoured C++ and python. There libraries are nice and the qt ones are especially well documented. Since its a tiny linux box you can have on device debugging (there is also an emulator).
Note I haven't developed anything for Maemo/Meego but I've read a lot about and just fell in love.
I think that the best solution might be to start with a smartphone optimized web site. A native app can provide a richer interface, but a well designed web app can come close and will run on any device.
Have a look at the WPTouch for an example of a very good phone optimized web site.
In line with Roman A. Taycher, I'd like to raise my voice for windows Mobile/Windows Phone. It's has a large installed base, it has the tried and true Visual Studio toolset to develop with, it has the best emulator of them all (it actually emulates the ARM instruction set - you hear that, Apple?), and you can leverage your Win32 experience.
MS-haters - please don't bother responding. I've heard them all.
A cross-platform runtime such as Qt or HTML5 are good bets and are portable.
Qt supports many platforms including Symbian, Meego, Linux, Windows etc. It is highly regarded as one of the best programming frameworks around currently.
Qt creator is also a very highly regarded IDE.
HTML can be accessed on nearly everything of course and can there are plethora of tools out there.
While applications natively developed for a given platform typically win in terms of platform UI consistency and performance, you could try going for one of the available multi-platform frameworks, such as Rhodes (just to name one). Personally, I do not have any specific experience with Rhodes and only learned about it a couple of days ago (having a closer look is still on my todo list), so please judge the user experience that the framework offers on different devices on your own.
It sounds like you need Mobile Community Framework (MCF). It is cross-platform framework to develop network-centric, location- and proximity-aware applications on all modern smartphone platforms (iPhone, Android, Blackberry, Symbian, WinMo - almost all you mentioned, except J2ME). It provide native binaries for all these platforms. With MCF development time can be reduced, as you don't need to code all this network stuff by yourself, but you can just use simple API to send any amounts of data across enrypted connections, via Wi-Fi ad-hoc mode or via special proxy-server.
More info at http://www.uvamobiltec.com.
Do any libraries or other development resources exist that can help reduce the effort involved in porting applications between various mobile platforms? In particular, I am interested in supporting iPhone, Android, and Windows Phone 7. Some areas of concern include UI, client-server communication, and hardware support (e.g., camera, GPS, etc).
MonoTouch allows you to write iPhone apps using .NET (C#). In the near future, an Android version will also be available (MonoDroid)
As for Windows Mobile, I'd forget about that and concentrate on Windows Phone 7, which will use Silverlight for apps. And of course, Silverlight is .NET as well, so you can share all your business logic between Silverlight, MonoTouch (iPhone) and MonoDroid (Android)
There is actually a really good tool out there that allows you to write apps for android and iphone in javascrpit, HTML and CSS. Then the program will port the app for either iphone or android, building the objective C code (iphone) or java code (android) as it compiles. Later revisions of the program are said to include the ability to port to palm and blackberry as well. And the bonus... free and open-source!!
PhoneGap supports Android, Blackberry, and iPhone formally. They tweeted that it works on Windows Phone 7, but it's a bit early to feel certain of that, since that OS has not shipped yet. Has reasonable but far from complete hardware support.
Well it appears that iSpectrum seems to be what you're looking for.
You'll find a video on their website homepage ( http://www.flexycore.com/ ) which shows a 3D android game they ported in only 2 days!
All mobile platforms I've encountered so far have C89-compatible compilers, so that is what you want to use for the core application logic if you have high portability requirements.
The product I'm working on can currently be built and run on Android, iPhone, Symbian, Windows Mobile and some other proprietary platforms (Nintendo handhelds) and legacy platforms (PalmOS, OSE) as well as "real" machines (Linux and Solaris servers).
Of course the UI code has to be written specifically for each platform, but the core is built from the same source code for all targets.
I have a very popular Apple iPhone app and wish to port to another mobile platform. What is best the Palm Pre or Google Android? The Android has more popularity with manufacturers but I worry about installation issues and incompatibilities. The Pre has one carrier and one mfr but I worry its sales will be too low.
My app uses an SQLite database and is content rich and over 200MB.
You did not mention if your app was paid or free, and whether it included ads or not. The story is clear regarding both of those on Android. You can not yet sell Pre applications, and we don't even know how Palm is going to handle paid applications. I am also not aware of advertising solutions for Pre.
As for the number of users, Android beats Pre hands down currently. And being the more open platform, I have no doubt in Android enjoying faster growth as well.
Android has the ability to be written in Java a generic enough way that your J2ME ports which can then run on Sonys, Blackberries, Nokias and Samsungs should be a short hop away if you desired. However a lot more detail of what you application did would be necessary as it might be something that is very achievable in a short time frame on the Palm
Which may sway you decision as to Android and Pre thats probably a coin flip decision
You might want to add BlackBerry to your considerations.
When combining all of the RIM models available, the total number of units sold beats the total units sold for Pre and Android devices combined.
Plus they have their App World service up and running now for selling your app through.
Jim
Ahhh, the great debate. Likely to start a holy war. It seems to me that there is a bigger buzz about the Pre than the Android. On the other hand, Palm has failed at this once before, and I have a hard time counting Google out.
I think I'm in the Pre camp. Get in early. Risk versus reward.
Couple of points to port your iphone application on Android and Pre devices
Android: recently they come out with native support, so it should not be too hard to port cpp code to android paltform using JNI
Palm Pre: As if now, development is purely supporting using Java script, and i am afraid you will have to re-write your app to support Pre.
My obvious choice will be go with Android first, this platform is supported by many OEMs and many carriers worldwide while Pre is limited to one carrier and with only one device at the moment in the market. Android definitely has much better market penetration than Pre
I'd definitely go with Android. The palm pre is making progress, but is still rare as far as smartphones go. If your app caters to a niche market in any way, you're likely to find the market is just too small.
Just one thing to remember with Android, though -- you can't make a 200MB app. The phones only allow apps to be stored in onboard memory, which is usually about 512MB with the OS taking 300MB. 200MB is the entire storage space for all apps on the phone. Android phones come with SD cards where data, but not applications, can be stored. You'll probably need to allow users to download your app's database to their SD card after they've installed a smaller, data-less application.
I'd go for Android too, (ok we now have a clearer vision compared to when the question was first asked ;) )
It's just there, everywhere now, so it can't be ignored. Plus i'm more of a Java developer ;).
Actually my concern is the opposite of yours: I'm an Android developer, and I port my apps to the iPhone. I used to do it by hand, but I found this product called ,iSpectrum ( http://www.flexycore.com ). There a video showing an Android 3D app ported to iPhone in 2 days only. This may be interesting a choice tool for you (if you decided to choose Android against Palm...)
I'm answering my own question because its been so long since I asked that a lot has changed. Primarily I went ahead and ported to the Android thanks to some very good answers here and my intuition that Palm was not stable enough as a company. And in hindsight that was the perfect move...Palm almost went out of business having been snapped up at the last minute by HP...and Android rocketed to be more popular than the iPhone. And our product, iBird Explorer, ended up becoming one of the most profitable ports we have ever done. Its also one of the best selling apps in the reference category of the Marketplace. Especially from a grossing income point of view.