Which Phone To Develop For?
Rob MacKenzie writes "I have to decide on a mobile phone to develop for. We're building a house with some automation built in, and we want the mobile phone to be able to control certain aspects of it, and retrieve information on what's going on in the house. Our choices are the usual suspects: Apple's IPhone, RIM's Blackberry, Nokia's line (Symbian), any Android phone we can get in Canada, J2ME generic app, or a Web-based UI we would interact with in the phone's browser. What would you choose if you had to go with one? Which exact model? We will be buying a few to develop for, so price is a bit of an issue."
You can target the iPod touch as well as the iPhone, and can develop on the iPod touch as well as the iPhone ($220 development platforms with no per-month cost).
You have some very interesting features (accelerometer, GPS, camera) which make for some particularly interesting ideas
You have a large installed base thats still growing rapidly.
And apple takes only a 30% cut of revenue, in exchange for a nice distribution mechanism.
Test your net with Netalyzr
That way you can control things with or without the phone. Give it a simple interface and then you can use any phone or device with the web page.
If you design your system with a web-based system, you can even go ahead and add other types of device into the mix while still properly supporting a phone. Something that works with the aging Nokia 770's web interface, or even the newer 810 would work just fine with an iPhone, or any flavor of Windows Mobile.
In my personal experience, the iPhone would be a great platform for something like this - though the cost of entry isn't so great. However, the iPod Touch would do just as well unless you really need to have cellular access to things from long distances. The Mobile Safari interface is nice and clean, and the "Sliding" paradigm used in a lot of interfaces for it seems to be quite user-friendly and not too tough to work with.
Windows Mobile might be good for development of a standard application, and Windows Mobile devices are a dime a dozen these days if you don't mind going back a few versions. Unfortunately, the underlying OS is.. Windows Mobile.
My own pointless vanity vintage computing page
Technology is becoming agnostic.
Build a 'phone' ready web page and stop worrying which device will connect to it.
The Kruger Dunning explains most post on
Id be hesitant to lock you into a platform before you even get started. That said, developing for the iPhone is pretty darn easy, if you are ready to get going, you can get off to a real quick start on it.
Prediction: The real iPhone killer is going to be sex robots from Japan. Think about it.
Why not develop it for Windows Mobile? It doesn't have as many restrictions as an iPhone or blackberry, is well established, is widely available, and has a good sdk.
Though, I will say that the most flexibility would probably be from a web-based app. Then you wouldn't be limited to a phone. However, it wouldn't be too difficult to make something that could work both on Windows Mobile and desktop Windows.
Personally, having developed for Windows Mobile and the iPhone, my inclination would be to instead create a web-based UI.
The reason is simple: first, the web is pretty universal. You can (in theory) use it from almost any device with a web browser.
Second, it's going to be a lot easier to quickly prototype the control software than a custom client/server architecture with a custom protocol, which you'd get with nearly any mobile device.
And third, if you switch to a new brand of phone, you're not completely hosed; the worst thing that will happen are a few web page tweaks.
Seriously consider using either J2ME or Web-based content. You can never rely on any one thing, but standards like these should allow you to change target platforms more easily in the future when the company you've chosen to follow either busts or, more likely, drops one of the features you've relied upon and you have a large amount of rework ahead of you.
(My fantasies always revolved around the Palm, but that was the standard when those dreams began).
Leela: "Is all the work done by children?" Alien: "No, not the whipping."
The cool thing about developing for the iPhone is that you are *essentially* also developing for OS X. So its almost a twofer.
Visit Jonesblog and say hello.
...and the "easiest" solution is to go the web route. You can determine, based on the browser identifier, what is connecting to your web server and adjust the CSS accordingly. In our app, for example, I use a CSS library from Google Code to make the app look like an iPhone app when I detect it's an iPhone. I use a different CSS file when it's anything Blackberry.
Your server, therefore, is what should be the controller. I'm assuming you want to connect somehow to things like the air conditioning, lights, etc. The web server can invoke a CGI program, as an example, which talks to whatever serial lines are necessary to control said equipment.
Even better, you don't need to buy the actual hardware; get XCode and you get an iPhone simulator. Likewise, RIM has a simulator for every freaking model of every phone they've ever released (as well as for the different carriers).
Total cost to you should be zip for development purposes.
I'd go web-based or Java, since many phones support it.
Think of the problems if you develop for a specific platform and it becomes obsolete. I imagine your home will be around for many years, but I doubt any interation of Android or the iPhone will be. Unless you plan to change around your programming when you get a new phone.
Anything that has strong ties to legacy software or hardware will be supported for a longer period of time. Look at user-base, ease of installation and repair, and of course, the track-record of the company...Apple would be a bad choice, I can see them switching things up without notice and all of a sudden you can't dim your lights.
...but how long will any mobile phone technology last? Will you find yourself having to re-do it all every 5 years as phone/carrier makers obsolete what you developed for?
Web based makes sense since you could possibly transition to some other technology, or, more likely, a mobile device's web access will only get better making it in-place upgradable for a long time.
Building your software to target a specific phone technology just seems terribly shortsighted for something like a house.
(IMHO, the real answer is "none" -- home automation is of limited value past a programmable thermostat and ultimately an albatross of shit that doesn't work and is expensive and time-consuming to fix. Its frightfully expensive to maintain ordinary systems like windows, gutters, and roofs, let alone a whole complex automation system).
I might be biased, as we've developed over seven web-based apps for iPhone + mobile and it seems to be the best solution. If you have the budget for several platforms, I'd next go with iPhone. Widespread Android adoption will be a slow process, and a little too exclusive (did I just say that, even though I'm an iPhone user?!? ha). Other platforms, unless your ecology currently has a wide adoption of some particular platform, aren't widespread enough, and there's plenty of iPhone adoption that's already happened/happening.
But again, the Web is your best bet. It is the only one that will work on all your phones. Otherwise, it's the iPhone because all your base will belong to us. Mwahahahaha!
Here's an interesting article on the advantages of mobile AJAX, that I enjoyed reading: http://mobiforge.com/developing/story/getting-started-with-mobile-ajax
Thinkingman.com New Media
>
You have a large installed base thats still growing rapidly.
A good fraction of said installed base has money to spend. All of them have a track record of being separated from their money with only moderate effort.
And separating other people from their money is the primary motivation for going into any business.
Those who can make you believe absurdities can make you commit atrocities. - Voltaire
Except with many smartphones you aren't locked into a single point of sale. There are plenty of very good Windows Mobile applications that vendors sell directly to the consumer, for example.
Sorry about the repost, forgot to preview and put up that unreadable wall of text...
Apple's IPhone, Obj-C and you need an intel mac dev platform + Apple dev license. But if you got those yea it's pretty fun to dev on. Not really the same as the others though.
RIM's Blackberry, supports generic j2me and has it's own incompatible java api too.
Nokia's line (Symbian), supports generic j2me.
Android phone we can get in Canada. java based but not the same as generic j2me.
J2ME generic app. Preferred if you just want to make the app once and have it support the largest number of devices. (doesn't allow the really cool stuff though)
Web-based UI. Never tried this since I only work on mobile games.
The other dev handles WinMo though it seems pretty easy to work with.
Also keep in mind that Verizon likes it's apps in BREW. (the biggest money maker in the US by far, though At&t is pretty big too)
And if you're going international, most support various versions of java. (often incompatible though)
For this purpose, I'd go dual interface, and not bother coding on the phone itself.
WAP (a cut-down version of HTML) works on all small-format web browsers, and should be your *high end* phone interface. But also, you should have a secondary interface, based on a voice modem, that is audio/keypress, and which would work with all phones hands down full stop.
SJW: a person who perceives an injustice, and while correcting it, commits a greater injustice.
The devilish thing is that mobile phones today are as the personal computers were before the IBM PC and MS-DOS appeared on the market.
Not that it was the best product that took over then, and we are still waiting for the 'killer phone'.
Apple could have taken that path if they were more open but from the perspective of a developer they are a locked-up dead end.
The phones that I think are the ones that's easiest to develop for are the Windows Mobile phones (horrible thought), but I haven't seen the Android yet, so I can't say it's better.
As for Symbian - I suspect that only Nokia will run that and that it eventually will die.
SonyEricsson is today targeting the Microsoft track, so they will essentially be diminished to a software shell and styled HTC phones.
If builders built buildings the way programmers wrote programs, then the first woodpecker would destroy civilization.
Consumer-grade crap is crap and it'll fail.
Get a real automation system and wire your house up properly. Hell, with what you're spending on your phone "solution", you could easily get some PLC controls and wire up your house so that it will last for the life of your house.
Here's some less-expensive stuff, but still of very good quality:
http://web4.automationdirect.com/adc/Home/Home
Of course, I'm just an EE that works in automation and control. What do I know?
---
ECHELON is a government program to find words like bomb, jihad, plutonium, assassinate, and anarchy.
Buy a G1. It has the best tools (Eclipse) and the cheapest development costs ($25, and that's only if you want to distribute in the Android Market).
Blackberry is free unless you want to access certain APIs that require signing, then it's a one-shot $100. Their development environment is somewhat primitive, but you can use Eclipse and command-line tools as well.
iPhone, of course, requires a yearly $99, and they can reject you or your applications. You'd better like Objective-C and Xcode.
Series 60 (Nokia) is a PITA to develop for, though with them moving over to Qt that will get better. But don't expect their phones to be upgradeable.
Windows Mobile is easy to develop for, but Visual Studio will cost you.
I use midpSSH (a j2me app) to control a number of bash scripts/command line programs for my media center computer from a non qwerty phone. The program allows commands to be saved into command lists, suits my needs, and let me sell my samsung blackjack (received for free from an AT&T upgrade) and downgrade to the slightly less ostentatious samsung a707 sync. It seems like you might want to write the code for the fun of it, but if you're looking for a quick solution, anything you can do from the command line can be done with this arrangement.
Thank you! I was reading retarded reply after reply, and was wondering why no one was mentioning the obvious.
The openmoko is clearly the best choice here, since you need to be able to have full control over your application if you want to do stuff like opening doors. Who knows what backdoors are hidden in the closed phones.
c++;
You gave the answer yourself: use a web interface and any phone with a browser.
My advice is, developing for mobile phones is generally more fiddly than for most platforms. Eg if you're used to developing J2EE/J2SE, J2ME is going to be familiar but irritatingly different.
The low hanging fruit is definitely the iPhone. I tried to develop for it. I failed. Here are my personal pros and cons:
Pro:
Great API exposing all the unique functionality quite well.
Good quality documentation, when you can find it. (See below)
That functionality itself is great too.
Easy to develop free apps and getting them into the iTunes application store is actually pretty reasonable and easy.
Cons
Objective C. I really just don't like it. REALLY don't like it. As a Java developer, it has some niggles that set my teeth on edge.
The development environment. If you're used to Eclipse for instance, you might not like XCode. I didn't.
Documentation on slightly deeper subjects is not always easy to find. I was sometimes left scratching my head at strange behaviour that seemed undocumented, with no recourse to investigation other than Google. This is poor.
Buying an iPhone is not cheap, specially with the contract. Guess you could get away with an iPod Touch for most functionality.
YMMV. I decided to use someone else's apps, who was already developing something close to what I wanted to do anyway. Pity, but it just wasn't worth the pain to me.
The BlackBerry-specific API exists because J2ME has traditionally been far too limited and incapable for what they want to do with the platform.
That being said, I just came from the BlackBerry Developer Conference and have an interesting tidbit to share...
Whenever they were implementing some new feature, whenever possible, they did it based on a JSR, and not their own home-grown API. Seriously, the presentations were littered with references to JSRs.
I don't know, I'd prefer to develop for a phone that people are using.
Developing for the iPhone or J2ME means at least you have quite a large installed base for selling your software.
All I want is a secure system where it's easy to do anything I want. Is that too much to ask ~~ Randall Munroe
It's the granddaddy of PDA OS and it's making a comeback.
I said it's making a comeback, dammit.
Grr.
Terrorists can attack freedom, but only Congress can destroy it.
Build a bare-bones web app. Works on all phones and you can tweak it as your taste in phones change.
Horns are really just a broken halo.
Don't design around a any phone that is on the market today. design around some standard interface. the you program whatever phone is popular this month to use that interface.
Solid and reliable, if a bit lacking in features.
Warning: this article may contain humor, sarcasm, parody, and perhaps even irony. Read at your own risk.
Apple users are well-trained to pay premium for everything, from the iphone accessories to the software applications.
I'd go for the well-paying techno-lusting, in-love-with their device user base.
While the bberry is highly addictive, it's used almost exclusively for the simple tasks of email/calendar/phone.
May I interest you in developing a $10,000 application which will display a message saying "I am filthy rich and you are my bitch!" on said device?
Good luck!
You can get the phone in Canada RIGHT NOW, you don't have to hack it like an iPhone or beg someone in the USA to send you one like the G1, and it is completely open source so there is no stupid EULA's to get in the way.
You know, in some ways that phone is real appealing... Particularly the whole "hackable" aspect. In other ways it looks like complete garbage, at both the hardware and software levels... I have trouble these days getting past the lack of a keyboard. I mean, I was a Palm fan until they decided to stop meaningfully improving the OS, so I'm down with pen computing - but I've also been using a Treo 650 for a couple years now, and I use that built-in keyboard all the time. I hate the idea of being without that.
I would be all over the G1, personally - except I hate the idea of a mobile device that doesn't allow you to develop and install native code. I don't like the idea of a Linux system that can't run "bash", or run the same software I run on my Linux machine at home... And I don't like the whole idea of my phone having to waste cycles converting one instruction set to another. I've had enough of that on the Treo with PACE.
Of course I recognize the benefits of a virtual environment for sandboxing, and of an API that's really designed for phone use... But to me the point of running Linux on a device is to be able to do Linuxy things with it...
All this is almost enough to make me turn to Windows Mobile - it doesn't require everything to go through an emulation layer like Android does, its operating software is a lot more mature than OpenMoko, you can get decent hardware for it (sliding keyboards, etc.)... Basically, it's still more of a "portable computer" system adapted to work as a phone (like PalmOS on the Treo) rather than "high-functionality phone" system like Android...
Why they gotta make this so hard? Android looks great except the whole "Linux appeal" is negated by the fact that you apparently can't actually get at it...
Bow-ties are cool.
Depends a bit on how compilicated the software will be. If it's very simple and a slow interface is not a problem, WAP + server-side PHP would be nice and the customers could choose any phone that supports WAP and GPRS (or whatever 3rd generation tech is used in the US) - which is practicaly any new phone in the market.
If you want to write the bulk software to run on the phone, I'd say Nokia's Symbian S60 line on Java, C/C++ or Python is a very good choice. It seems the C++ they use is a bit non-standard, but they also support Java ME which is much easier to learn. And Python.
Nokia has a pretty clean company portfolio, their SDK is based on Eclipse and all the relevant APIs are open, seem to be well-documented and full with developers manuals and code examples. forum.nokia.com is their the developer's site. Personally I have never developed mobile software, but I know some people who do mobile game development, and at least their employers seem to prefer Nokia S60. S60 has a very extensive range of phones, including touch-screen phones, and there's also a free emulator available. Sounds good, but I have no first-hands experience what so ever.
You guys didn't read the question. He's not asking which platform has the largest installed base or anything like that. He's asking the best way to scratch a personal itch.
The iPhone SDK running on a OS X Leopard machine beats the development platform of those other phones hands down. The only drawback is if you =don't= want to distribute through the apps store, or Apple rejects your app, you have to buy the commercial developer's license so you can get your own signing key. But you don't have to pay anything (nada) until after you've got your application completed and running in the emulator. Then it's $99 to submit to Apple, or $299 to sign and distribute yourself.
And, at https://developer.apple.com/iphone are video tutorials, reference libraries, sample code, how to's, tools, etc.
Make it easy on yourself.
Problem with Windows Mobile: the software market is dysfunctional: no central app store like Apple for at least another year, sites like Handango take 40-70% of your revenues, and WiMo market share is dying. Dropped from 24% in 2004 to 12% this year. Look at apps that are available: ugly, expensive, and lame-o. Consumers aren't attracted to that, and the installed base is falling apart. Microsoft sold 18 million in the last year, not even twice as many as the iPhone, except that the iPhone is one platform; all the WiMo devices are slightly different, with different features and capabilities, from non-touch tiny Smartphone screens to larger Palm-style Pocket PC form factors.
Look at RIM: Apple just passed them in sales this quarter. RIM sells replacement phones to a relatively slow growing base (19 million subscribers total, again less than double Apple's sales this year). Its installed base is also spread across a variety of different models.
Palm is dead.
Symbian is big but struggling. Difficult to develop for, has the same problems with marketing apps as WiMo. Nokia sells a lot of phones, but most don't run Symbian but only the feature phone Nokia OS. It's Symbian products are split between different hardware types, and the overall Symbian market is currently split between three platforms.
Flash Lite and Java struggle to run on hundreds of slightly different phones, which all have the same software marketing problems. Android is basically just a semi-consistent version of Java ME, the hardware will still be all over the place. Installed base is currently very small, and the G1 isn't going to help in that regard.
Apple's iPhone has a single installed base of over ten million units, and growing dramatically. It has a wildly profitable marketing system for software, good development tools that share a lot in common with Mac development, and a customer base that spends money. There is no real variation in hardware to deal with, nor problems between the software/hardware vendor.
So if you want to do mobile software to make a political statement, or because you like a certain technology, or just want to keep yourself busy, you have several options. If you want to make money, you write iPhone software and sell it to the ten million iPhone users and several million other iPod touch users.
Five More iPhone Myths
Myth 6: iPhone Developers will Flock to Android
Myth 7: iPhone Buyers will Flock to Android
Myth 8: iPhone will lose out to Steve Ballmer's Windows Mobile 7 in 2010
Myth 9: iPhone Unable to Penetrate Europe Due to Symbian Dominance
Myth 10: RIM's BlackBerry Will Contain iPhone Expansion
I've developed for both Blackberry and Windows Mobile. You can develop for both platforms for free, and do not even have to sign applications. With Blackberry you do have to sign your application to use certain Java classes deemed "secure". It costs $100 for a license allowing unlimited signing. However, you can do full J2ME (plus some BB APIs) for free. Blackberry UI, processing speed and graphics capability is very, very poor. I have recently been experimenting to push Blackberry graphically, and have hit nothing but dead-ends (for example, the native display is 16 bit RGB-565, but all APIs to push raw image data are 32 bit ARGB 8888, so a very slow conversion is done by the system). However if you stick to API-supported rendering (basic font rendering, blitting with alpha channel, simple drawing primitives) then you can do quite a bit with good performance. Just don't expect to be able to do your own bitmap-level rendering in realtime (like rotozoom, bumpmapping, texture mapping, etc). All development must be done in Java.
Windows Mobile offers a ton of CPU power and RAM (I've ported both Quake I & II for example). Devices are available with 3D accelerated GPUs, touchscreens, VGA-resolution displays, CF, SD, Wifi and Bluetooth (all in a single device even). So as far as raw options in hardware capability and form-factor, Windows Mobile gives you the most choice. If your app will do some really heavy lifting graphically then Windows Mobile is the better choice. You can develop in the widest variety of languages for this platform - C, C++, C#, Java, ARM assembly, Pocket C, and Visual Basic (just to name some off the top of my head). With both iPhone and Blackberry you are restricted to a single language.
As far as iPhone goes, I've not delved there at all. Things I've heard that concern me are a non-standard programming language, restrictive distribution policy, and whether or not you can simply write and build an app and stick it on your own phone or not without having to sign it or otherwise register it with Apple.
Better known as 318230.
I don't know about everyone else here, but from reading TFOP, it looks like he's working for a housing developer trying to build a house that can be controlled from the client's phone (it's not clear whether they are building for a specific client or attempting to sell, but it's irrelevant). As such, the iPhone (or iPod Touch) is the worst possible platform, as the idea is clearly to provide a specific application for one client, and Apple's distribution methods simply do not allow for it. A web-based interface is surely the best, as the client then doesn't need to buy a specific phone, but I would in the near future recommend Android from a moral standpoint, to try and support it and help kick Apple's dominance (which is stupid).