I’ve been pretty busy with my project for my MSc in Computer Science. It is a metronome/instrument tuner that runs on a mobile phone. All modern mobiles have Java so I didn’t think it was such a crazy idea when I was planning this. What I didn’t know was that if you want to use some advanced features of the J2ME Multimedia API then you are in a whole world of pain.
Basically, the problem boils down to this: there is a standard API with all sorts of cool stuff like MIDI and audio capture, but the mobile devices don’t necessarily implement it fully. Even if they say they support JSR 135, that doesn’t automatically mean you will be able to capture audio in the proper format or be able to access the needed MIDI controls.
Device support wasn’t the only problem. Not only do the devices differ from each other but each manufacturer supplies emulators for their different phones so you can test your programs against them while developing. This is a great idea. At least it would be if the emulator bore any resemblance to the actual device. I don’t mean how it looks. I mean code that runs on the emulator will crash your phone and vice versa. Aargh!
So I have spent waaay more time than I wanted faffing around just trying to get the damn thing to run without crashing my phone. I have also spent way more money than I wanted acquiring phones to test with. Not including old phones we had lying around, we now have four new mobiles in our house from three different manufacturers.
All this has given me some insight into the different phones and I have been able to compare the phones themselves along with how they work for a developer. These are the phones I have:
- Motorola Razr V3i
- Sony Ericsson W300i
- Sony Ericsson M600i
- Nokia E60
Motorola make some very stylish phones and the Razr is a very thin, very nice looking phone, but I have never liked the user interface. It was also the least fun to develop with. Motorola make it really hard to install Java MIDlets by USB cable rather than downloading over the air (and paying for it). It took me ages and loads of Googling to figure out how to hack my phone so I could install MIDlets using the cable. Once this was done however the Motorola MIDway tool isn’t bad for installing MIDlets and getting debug info while they are running. That said, the V3i (what’s up with all the i’s?) had the least success in running my app. It can only capture audio in AMR format and none of the MIDI stuff worked, however, the Motorola emulator isn’t too bad.
Kathryn upgraded her old T610 to a new W300i (again with the i) Walkman phone. This is actually a nice little phone and I know Kathryn likes it. I figured, seeing as it is a Walkman, it should have pretty good audio support. In a way all these phones have pretty good audio support, but the problem is with audio capture. Once again the W300i is limited to capturing in compressed AMR format; no good for audio processing. I didn’t actually look to see if there was an emulator for the W300i but installing apps is a lot easier than with the Motorola (well it couldn’t be any harder). The Sony Ericsson File Manager lets you browse the contents of your phone and then it is a simple matter of dragging your JAR/JAD files onto the phone and selecting install. The MIDI bit worked pretty flawlessly although the MIDI sounds on this phone all have a vibrato you could drive a tank through.
I was starting to get desparate now, so I decided to change tack a little and try using JavaME CDC instead of CLDC. Basically, the CDC is what PDAs and smartphones run and the CLDC is for smaller devices like mobiles. Unfortunately the CDC doesn’t contain the javax.sound package and the MMAPI implementation on the Sony Ericsson M600i I bought was one of the most limited of the bunch. Neither the MIDI nor the audio capture worked properly. Aside from those rather fundamental problems, the phone itself is really nice. It has a nice touch screen as well as a full QWERTY keyboard. It is 3G, has a good email client and you can easily edit MS Excel, Word and Powerpoint files. It can run Blackberry and other push email software and is generally a really sweet piece of kit. The Symbian OS it runs is nice and because it has a full Java CDC implementation you can get loads of cool software for it like IM clients. It serves as my phone/PDA now. The emulator is pretty good too, and installing apps is the same as the little W300i.
Today I got the Nokia E60. It isn’t just the fact that this phone doesn’t have an ‘i’ in its name that sets it apart. This one actually worked right away. Both the MIDI and the audio capture ran without a hitch. The MIDI instruments even sound quite good! The emulator is a bit limited in that it doesn’t support some of the MIDI controls that the actual device does, as well as being dog slow, but installing programs is a breeze; the Nokia PC suite makes it easy with a dedicated button for installing apps. The phone is really nice too. It is part of their executive range so it doesn’t have a camera, but it is nicely built with a fantastic screen and is absolutely loaded with features including 3G and even wifi built in! In fact, it can do almost everything my Sony M600i can do, incuding editing Word and Excel files and handle push email, although the PIM stuff is a bit more limited and it isn’t as nice entering text on the standard mobile keypad rather than the full QWERTY or stylus of the Sony. If I hadn’t already bought the Sony, I would be really pleased with this phone. The other great thing about it is that you can actually use it without a SIM card inserted! All the other phones won’t let you do a thing until a SIM is inserted whereas the Nokia will do everything apart from make calls. I’ve never had a Nokia before but I’m impressed!
Now all I need to do is finish the damn project…