• 构建可视化手机程序(J2ME)编程平台 - [技巧攻略]

    2009-05-31

    版权声明:转载时请以超链接形式标明文章原始出处和作者信息及本声明
    http://gleisure.blogbus.com/logs/40241921.html

      端午假期,尝试编手机用的JAVA程序,虽然N久前电脑上已经安装了JDK1.4.2和JRE1.X(JRE自行升级了很多次,约有七、八个升级版本,纳闷升级为何都保留着旧版?),但是此次也只能称之为首次接触,很多词汇完全没有概念,就像小时候的女性朋友不能称之为女朋友。因此本文适合初次接触的菜菜鸟。

      首先作个简要介绍:JAVA是一门编程语言,JRE是运行环境,JDK是开发工具(其中J2SE是标准版,J2EE是企业版,J2ME是微型版),WTK是无线开发工具包(简化J2ME开发过程)。若要具体了解,可以访问以上相应的超链接。J2ME主要用于移动设备、嵌入式设备上的java应用程序,即支持JAVA的手机程序便是可以通过J2ME开发相应的程序。

      接着就是安装软件,配置软件了。网络是最好的教科书,遇到不懂的马上查网络。因为本人也是初次接触所以走了很多弯路,花费了大量的时间,更恼人的事就是安装新版可能网上相关资料也会比较少,故在此记述本人构建可视化手机程序(J2ME)开发环境(IDE)的过程,供参考。

      (一)安装和配置“JDK”(包含JRE)

        下载页面:http://java.sun.com/javase/downloads/index.jsp(选择“Java SE Development Kit(JDK)”安装,目前版本为:JDK 6 Update 14)。
        安装过程:可自定义组件和安装位置,默认配置。

      (二)安装和配置“WTK”

        下载页面:http://java.sun.com/products/sjwtoolkit/download.html(目前版本为:Sun Java Wireless Toolkit 2.5.2 for CLDC

      如上,只需要装上Java SDK 及 Sun Java Wireless Toolkit 就可以开始编写J2ME程式,编译及测试。目前各大手机厂商往往把WTK经过修改,推出适合自身产品的WTK,如SonyEricsson,Nokia Developer’s suit等。

      本人使用的是N年前的索爱手机,故可下载其SDK平台,官方下载页面:Sony Ericsson SDK 2.5.0.3 for the Java(TM) ME Platform。索爱开发者世界页面:http://developer.sonyericsson.com/home?opCoId=31

      (三)安装和配置可视化IDE

        通过JBuilder,Eclipse等可视化IDE,J2ME开发包工具可以被绑定在这些集成开发环境中,进一步提高开发效率。这里介绍Eclipse的安装与配置:
        下载页面:http://www.eclipse.org/downloads/(选择“Eclipse IDE for Java Developers”,目前版本为:Eclipse 3.4.2
        下载解压后便可使用,默认设置便可。

        要进行J2ME的开发,还要给Eclipse安装插件EclipseME,下载页面:http://sourceforge.net/project/showfiles.php?group_id=86829(目前版本为:EclipseME 1.7.9
        EclipseME的安装:运行Eclipse,打开“Help”(帮助)菜单下“Software Updates”(软件升级),选择“Available Software”(可用的软件),点击“Add Site...”(增加站点)按钮,在弹出的界面上点击“Archive...”按钮,浏览到下载的EclipseME安装包文件“eclipse-java-ganymede-SR2-win32.zip”,“OK”后点击“jar:file:...(路径)”左侧的十字展开,选对“EclipseME”再点“Install...”(安装)按钮,便可进行EclipseME的安装。
        EclipseME配置:
          导入设备定义:进入Eclipse选项界面(“Window”菜单下“Preferences”),打开界面左侧的J2ME选项分支,点击“Device Management”(设备管理),按“Import”(导入)按钮,“Browse...”(浏览)WTK无线工具包的目录,“确定”后按下“Refresh”(刷新)按钮,EclipseME将从中自动查找已知设备定义。选择所需的设备。

        Eclipse主页:http://www.eclipse.org
        EclipseME主页:http://www.eclipseme.org
        EclipseME中文主页:http://www.cnjm.net/eclipseme

      (四)第一个J2ME界面程序:HelloMIDlet

        (1)打开Eclipse。
        (2)建立项目:通过菜单“File”->“New”->“Other...”打开向导窗,打开“J2ME”节点,选择“J2ME Midlet Suit”,在“Name”栏输入名称:“HelloMIDlet”,然后点“Finish”(完成)关闭窗口。“Navigator”或“Project Explorer”窗会显示生成的相关文件,可以通过菜单“Window”->“Show View”->“Navigator”或“Project Explorer”显示和隐藏。
        (3)建立文件:选择“Navigator”项下“src”(程序源代码文件夹),通过菜单“File”->“New”->“Other...”打开向导窗,打开“J2ME”节点,选择“J2ME Midlet”,在“Name”栏输入名称:“HelloMIDlet”,然后点“Finish”(完成)关闭窗口。此时会生成“HelloMIDlet.java”文件,并自动打开该文件,文件内已生成J2ME程序文件结构内容。
        (4)输入源代码:
    import javax.microedition.midlet.*;
    import javax.microedition.lcdui.*;
    public class HelloMIDlet extends MIDlet implements CommandListener {
     private Command exitCommand;
     private Display display;
     public HelloMIDlet() {
      display = Display.getDisplay(this);
      exitCommand = new Command("Exit", Command.SCREEN, 2);
     }
     public void startApp() {
      TextBox t = new TextBox("Hello MIDlet", "String Test", 256, 0);
       t.addCommand(exitCommand);
      t.setCommandListener(this);
      display.setCurrent(t);
     }
     public void pauseApp() {
     }
     public void destroyApp(boolean uncoditional) {
     }
     public void commandAction(Command c, Displayable s) {
      if (c == exitCommand) {
      destroyApp(false);
      notifyDestroyed();
      }
     }
    }

        (5)运行源代码:通过菜单“Run”->“Run”运行代码。

      (五)安装和配置 Visual Editor 插件

        “Visual Editor”是用于构建图形用户接口(GUI)的工具(可视化编辑工具),可以拖放控件和设置相关属性。在“Available Software”下添加以下站点:http://update.soyatec.org/Ganymede/ve/1.4,选择“Visual Editor”安装。好像还不支持J2ME。

      (六)Eclipse的汉化

        看网上说,Eclipse已不再提供多国语言版,目前汉化的方式是通过“Babel”,Eclipse的Babel项目是供个人对Eclipse的国际化贡献自己力量的一个项目,下载页面:http://www.eclipse.org/babel/downloads.php。如在“Available Software”下添加站点:http://download.eclipse.org/technology/babel/update-site/ganymede,选择“Babel Language Packs in Chinese (Simplified)”安装。目前还没有完整的3.4.2版的简体中文语言包下载。

      (六)SonyEricsson WTK设备(索爱模拟器)的汉化

        部分索爱模拟器不支持中文显示,因为其设备配置文件(devices\*.properties)中配置的字体不支持中文,如:
    ……
    font.default = ../fonts/font*.properties
    ……

    font.softButton = ../fonts/font*.properties
    ……
    font.system.plain.medium = ../fonts/font*.properties
    ……

    以上是主要的三条设置,我们找到设备的字体文件夹,每一组字体含二个文件:“*.bin”(SEMC Bitmap Font)和“*.properties”(属性文件)。我们打开一个属性文件,显示如下:
    font_height = *
    font_ascent = *
    font_descent = *
    font_leading = *
    font_data_file = fonts/font*.bin

    字体文件底部含一个PNG图片,如:
    (点此放大)
    因此仅需把设备配置文件中对字体的相关设置改为相应支持中文的字体便可。设备配置文件对字体设置进行了说明:
    # Multiple font support:
    # font.<face>.<style>.<size>=<font properties file name> | <system font definition>
    # Where
    # <face> is one of
    # system, monospace, proportional
    #
    # <style> is one of
    # plain, bold, italic
    #
    # <size> is one of
    # small, medium, large
    按以上说明,可配置如下:
    font.default=SansSerif-plain-12
    font.softButton=SansSerif-plain-12
    font.system.plain.medium: SansSerif-plain-12
    ……


    有一点还不是很清楚,为何不能使用“font*.bin”进行汉字的定位,因为部分“font*.bin”文件包含的图片中有中文字体:


    (自行编写的程序,属性框内虚线以下部分是识别的信息)

    (整理的SEMC字体的信息)
    从这些“font*.bin”字体文件内容来看,每个字体文件都分配了固定的大小(131074字节)用于映射图片上的字符,每个序号占2字节,即能存放65537个。一开始没有找到可以正确定位的办法,即不晓得通过什么编码进行一定的转换得到位置进行定位,后看了ANSI和Unicode汉字编码的范围:
      ANSI:汉字区的内码范围高字节从B0-F7,低字节从A1-FE;
      Unicode:汉字的Unicode编码范围为4E00-9FA5,F900-FA2D。
    觉得与Unicode编码的汉字顺序一致,即每对字节的偏移位置除以2便得到Unicode编码。

        

    待修改与完善...


    收藏到:Del.icio.us