Monday, October 7, 2013

J2ME Compatibility: LWUIT w/Alcatel 871a

People think J2ME is dead: reports of it's death are rather exaggerated given the fact feature phones will dominate the market in developing countries (ie the most populous market).  The Alcatel 871a is a cheap ($33 USD prepay) with a QUERTY keyboard ready available on ATT in the US.

Getting an app to run happily across multiple implementations is not going to be huge amounts of fun.  So here's hoping I can save someone some headaches:
  • Use Nokia's LWUIT Fork worked not the original LWUIT from lwuit.java.net would just give a "this java application is not supported" message.  Ironic given I'm trying to get it from being on Nokia only to be more widely supported, and guess what, I need to use Nokia's version...  But that looks better maintained these days.
  • Don't request any permissions from JSRs that are not installed on the phone (e.g. javax.bluetooth) - that will make it show "this java application is not supported" without further explanation
  • Make sure the Manifest is MIDP-2.0 (not 2.1)
  • Do not use getClass().getResourceAsStream when the result might not be found and then pump it into an Image object (not good practice anyway but you think inside an exception handler it'd be safe).  No that will give an insufficient memory error
  • The Alcatel 871a does not like 3gp h263 encoded video that comes out of ffmpeg.  Does not work with the video player at all.  Whatever ffmpeg uses by default in mp4 works.