Four months ago, I planned to use J2ME-enabled mobile phones for my master thesis. The idea is to make some kind of virtual laser pointer, where you can point your mobile phone to a big screen during a presentation in order to control the cursor/pointer. The mobile phone, using its camera, captures the picture of the big screen, process the data, and calculate the position of your pointer. The mobile will send the data to the computer (via Bluetooth) and then the system change the pointer position based on where you point your mobile phone. Yup, it’s just like moving the red-dot-thingy-on-the-screen when you’re using the laser pointer.
Â
Another important aspect is that more than one user can use this system. So, imagine more than one user were controlling several pointers on the screen. What can we create on top of this? Game (of course, it’s my first thought đ ), or a voting system (but my professor wants this), or other interactive multimedia application.
I love programming using J2ME and I’ve been using it for more than 2 years. I think that there are more people using mobile phone rather than PDA and thinking the right market is an important aspect for me. PDA is more for business people, which means perfect for business related application but not for other stuff. Even for gaming (except for simple time-killer games like puzzle or card).
But, J2ME really did a great job in disappointing me. Let me tell you why.
No J2ME Phones can support video capturing
Theoritically, using MMAPI, you can record video, audio, taking snapshot, play MP3, and other stuffs which can take one page long if you list them. But after searching the Nokia fourm, Sony Ericsson, J2ME programmers, I found that most of the phones only support taking snapshot. If you try to record video by using the example source code from Sun’s WTK 2.2, then you’ll get error message.
The only hardware that support video recording is the very latest Sony Ericsson phone K610, and Nokia N-series. I couldn’t found about someone implementing it on these phones. Maybe the phones are too expensive for the programmers.
Not even the emulators…
Yup, not even the emulator can support REAL video recording. Yes, you can do video recording, but you can only record some randomly-generated-pixels. You CANNOT connect to your webcam, for example, to capture real life picture, neither for just taking photo. Actually, there is one emulator which allows you to capture video/image from your webcam (motorola iDen 850) but the resolution was very small (160×120).
How about just taking snapshots continously?Â
I’ve tried that too. I made a single J2ME application for that purpose. When you press fire button on your joystick, it will capture several frames and show it to the screen. I tried it on Nokia N6600 and Sony Ericsson K750, one of the latest & widely used phones on the market. And guess the result…
It was too sloooooowwwwww
I got 2 frame per second. Yes, it’s TWO frame per second. And what I was doing is just capturing images continously. No image processing. No image transmission via Bluetooth. No complex calculation.
and many other limitations
You cannot change the image format freely. It really really depends on which formats that the hardware supports. For example, the Sony Ericsson K750Â which I used, only allows you to take picture in JPEG format. You cannot cange the format to raw bitmap for increasing the speed.
You cannot draw something on top of your ‘viewfinder’ image. So, before you press the button to take photo, you can see this viewfinder. It shows you anything that gets through your camera lens. And you can make you J2ME application to show this viewfinder image which is automatically updated smoothly but however you can’t access it. It’s untouchable.
So..Â
I have to throw away my idea of using J2ME. In the end, I am just using my laptop connected to webcam. I use C# with Visual Studio 2005 Express Edition. Just enough for proof of concept.