phoneME for Maemo/MeeGo

This port of phoneME Advanced allows you to run some basic midlets on the Nokia N900 running Maemo 5. The Nokia N9 with MeeGo can run this port too, though with some little inconveniences. While many features like 3D, GPS, bluetooth, multimedia playback, etc. are still missing, some popular midlets like Opera Mini seem to work OK.
More information about the phoneME project can be found at https://java.net/projects/phoneme.

Download

You can find builds for the Maemo-based Nokia N900 and the MeeGo-based Nokia N9 over here.

Install and run

  • Download the phoneME deb package to your device.
  • Use the File manager on your device to select
  • The application manager will ask you to install the cvm_mr2.b168+svn20547-xxxxxxxx_armel.deb package.
  • In your main application menu, you will find several new entries:
    • Run MIDlet: Select a JAD or JAR midlet file and run the midlet.
    • MIDlet Settings: Set several properties on how the midlet will be run (full screen, logging, etc.)
    • microemu-demo: a simple test midlet from the MicroEmulator project.
    • Opera Mini: This is the JavaME webbrowser from Opera

Screenshots

Click to enlarge:

Helper utilities

The following utilities are accessible from the main application menu. Run MIDlet This application is located at /opt/phoneme/bin/runmidlet and allows you to select a JAR or JAD file and run the midlet. You can also use this application in a desktop shortcut file, and give it the JAR or JAD file as parameter: /opt/phoneme/bin/runmidlet /path/to/midlet.jar This application hides a lot of the ugly command line parameters you would otherwise have to specify: /opt/phoneme/bin/cvm -Xmx12m -Dmicroedition.profiles=MIDP-2.1 -Dsun.midp.library.name=midp -Dsun.midp.home.path=/opt/phoneme/midp/midp_linux_fb_gcc -Dcom.sun.midp.mainClass.name=com.sun.midp.main.CdcMIDletSuiteLoader sun.misc.MIDPLauncher -suitepath midlet.jar -jadpath midlet.jad -1 mainclass Note that the -jadpath midlet.jad is optional and is only useful if you have the JAD file as well. Most of the details in the JAD descriptor are also available in the manifest file of the JAR file (such as the names of the application, the main class, the icon, etc.). This manifest file will be automatically extracted by the runmidlet application if the JAD file is not available. However, it requires the unzip command line application to be installed on your device. MIDlet Settings This application allows you to set some default options on how your midlet will be run:
  • Start in full screen: When enabled, it will hide the top status bar (and the grey bar at the bottom on the N9)
  • Use built-in bitmap font for faster text rendering: By default, phoneME uses Qt4 to draw text using your current font, but also offers a built-in monospaced single size and style font which supports faster text rendering (at the expense of not looking that nice and not all characters being included).
  • Redirect all console output to log files in MyDocs/: If you do not start your midlets from a terminal, you can log all text and error console output to the out.txt and err.txt log files in your MyDocs/ folder. This is useful for debugging purposes.
  • Enable virtual keyboard: Currently not implemented yet. This option will enable you to pop up the native Maemo/MeeGo virtual keyboard to enter text.

Not working? Try the following ...

  • Open a terminal, go to the /opt/phoneme directory and run the 'hello world' console application:
    ~ $ cd /opt/phoneme /opt/phoneme $ bin/cvm -cp democlasses.jar cdc.HelloWorld Hello world.
  • See if you can also run the console test application:
    /opt/phoneme $ bin/cvm -cp testclasses.zip Test
    If all goes well, the test application will end with the following message:
    *CONGRATULATIONS: test Test completed with 411 tests passed and 0 failures *Output lines starting with a * should be checked for correctness *They can be compared to src/share/javavm/test/TestExpectedResult
  • If you don't see any text output, make sure you disable the redirecting to log files in the 'MIDlet Settings' application. Otherwise all output will be dumped into the err.txt and out.txt files in your MyDocs/ folder.
  • If this doesn't work, you can leave a message on one of the forums below

Forum links

Feature requests

TODO
  • Support for JSR 134 (Audio playback, only partial implementation)
  • Support for JSR 82 (Bluetooth)
  • Support for JSR 120/205 (Wireless Messaging API, only partial implementation - check QMessage/QMessageService)
  • Support for JSR 234 (AMMS, only partial implementation)
  • Improve native virtual keyboard support (long press or double tap trigger)
  • Simplify gameplay by assigning digit buttons in alternative keymap
  • Add copy-paste support
  • Trigger request for WiFi/3G network connectivity
  • Support pausing of midlets (or ask permission everytime to send/receive data)
  • Support installing midlets through browser
  • Proper timezone detection
  • Support vibration
  • Support Chinese and Arabic input
ONGOING
  • Auto-rescale midlets to 800x480: Software rescaling implementation has serious performance penalty. Need HW accelerated method for rescaling
  • Investigate crash/hang of Opera Mini Next 7: JIT related, problem occurs on Android too
DONE
  • Set window title based on midlet name
  • A midlet manager
  • Error reporting to file
  • Configuration option to start fullscreen by default
  • Support for JSR 179 (Location API)
UNSUPPORTED
  • Reconfigurable font sizes: requires dynamic rescaling of skin background images (looks ugly without) and some midlets come with built-in bitmap fonts (some LWUIT and J2ME Polish based midlets)
  • Support WhatsApp (investigate Nokia S40 dependency): no implementation available for the custom proprietary Nokia APIs
  • Investigate UC Browser/Nimbuzz download folder problem: seems to be a JSR 75 issue, but impossible to figure out without source code.