J2me MIDlet操作手机功能性用法总结
基于J2ME的手机游戏系统的实现

2 系统的设计目 标及总体结构
游戏程序是一项精度要求很高的程序系 统。一个最终作品,每秒都会运行很多行 程序,绘图事件、键盘事件都会以极高的 频率在后台等待响应,若有丝毫的差别都 将容易导致程序出现严重错误。因此,其 逻辑设计应当相当严谨,需将所有可能发 生的事件及意外情况考虑在设计中。 本游戏的操作流程简单 ,用户启动
MJD e 后, 进人游戏生画面, l t 即 屏幕显示 为习 画 姑虫 面。按下 1开始1后, 就可以玩游戏
了,当想暂停时,再次按一下[ 开始] ,游 戏就暂停了,在暂停的情况下再按[ 开始] , 游戏继续运行。 任何时候按【 退出1按钮,游 戏MIDlet 都会终止。
2 . 1 算法
2 2 根据该游戏的特点将程序分为4 个类. 分别是Tetris , Scene。 Map 和Block
工 程 技 术
基于 J ZME 的手机游戏系统的实现
(1 . 武汉理工大学 计算机学院;
朱海华’ 2 卢颖颖3 2 . 南阳师范学院 计算机与信息: 随着手机的日 益普及、J a v a 功能在移动设备上的实现, a v a 应用程序产生的手机增值服务逐渐体现出其影响力,对丰富 J 人们的生活内容、 提供快捷的资讯起着不可忽视的作用。本论文着眼于J ZME 技术的应用, 开发一款可商用的手机游戏程序聂俄罗
与Scene 和Map 均可直接通信。
在B o k 中以成员 l c 变量的形式存储了7个 预定义的方块逻辑数组,颜色选配方案以及 相对坐标端点。B 10 c k 定义画出单个小方 砖,小方块,以及对某个图形方块的位置, 碰撞检测 ,移动检测 ,转动检测 ,获取坐 标值, 更新坐标值等操作。BIock 提供粒子 级别的操作方法,将底层的数组更新和画布 重绘与上层的游戏逻辑隔离开。
跟我学J2ME手机应用开发——MidLet编程技术及应用实例

1、MIDlet 的生命周期 (1)MIDlet 生命周期
其实生命周期就是一个简单的规定,规定了 MIDlet 中的每个方法,什么时候被系统调用。 下面是一个示例代码,在每个方法的内部都输出一条语句,可以根据程序的输出结果来验证 各方法被调用的顺序,具体代码如下: package com.px1987.midletdemo.midlet; import javax.microedition.midlet.*; public class FirstMidletApp extends MIDlet {
杨教授工作室,版权所有2 ,盗版必究, 2/10 页
杨教授工作室 精心创作的优秀程序员 职业提升必读系列资料
通过 javax.microedition.midlet.MIDlet.getAppPorperty()方法来访问 (3)通过 RMS 的 Record Store 存贮在永续存储介质中的内容
1) MIDlet-Name:MIDlet Suite 的名称 2) MIDlet-Version:MIDlet Suite 的版本号码,其格式为“主要号码.次要号码.微号码”。
系统可以利用它来决定是否安装或升级,缺省值为 0.0.0。 3) MIDlet-Vendor:提供此 MIDlet Suite 的厂商名称。 4) MIDlet-Jar-URL:下载该 MIDlet Suite 的 JAR 文件的 URL 地址。 其中的 MIDlet-Name、MIDlet-Version 和 MIDlet-Vendor 的值必须要与 JAR 中的清单文件 中相同的属性的值一致。如果两个文件中的另外名称相同的属性,但是属性值不相同的,将 优先采取应用程序描述器文件 ( JAD )属性。 MIDlet-Icon:位于 JAR 文件中的 PNG 格式的图片文件名,系统会使用该图标来标志 MIDlet suite。 MIDlet-Description:MIDlet Suite 的相关信息的简要描述。 6、在 MIDlet 程序中可以访问的内容 (1)资源文件 可以通过 ng.Class.getResouceAsStream()方法来获得 (2)JAD 描述文件
RMS的高级操作

实验十四R M S的高级操作一、实验目的及任务1、RMS的高级操作记录集遍历,记录监听,记录过滤,排序功能二、实验环境1、J2ME Wireless Tookit2、任意一个java源代码开发工具,如Eclipse三、实验步骤1、仿照课本的电话簿案例制作一个简单的同学通信录。
同学信息包括:姓名,班级,出生年月,家庭住址,手机号码,Email,备注信息。
**************源代码***************package ch2;import javax.microedition.midlet.*;import java.util.*;public class shiyan_14 extends MIDlet implements mandListener, Recordparator{private String rmsRecord = new String 1000 ;private int recordLength = 0;Stack stack = new Stack ;//list 定义private List list = new List "cnnBook", List.IMPLICIT ;private Display display = null;private mand cmdck = new mand "查看", mand.OK, 1 ;private mand cmdadd = new mand "添加", mand.OK,1 ;private mand cmdupdate = new mand "修改", mand.OK,1 ;private mand cmddel = new mand "删除",mand.OK,1 ;private mand cmdexit = new mand "退出",mand.EXIT,1 ;private mand cmdserch = new mand "查询",mand.OK,1 ;//form定义private Form form = new Form "form" ;private StringItem Fname = new StringItem "姓名","",StringItem.PLAIN ;private StringItem Fmobile = new StringItem "手机","",StringItem.PLAIN ;private StringItem Fbj = new StringItem "班级","",StringItem.PLAIN ;private StringItem Femail = new StringItem "电子邮件","",StringItem.PLAIN ;private StringItem Fny = new StringItem "出生年月","",StringItem.PLAIN ;private StringItem Faddress = new StringItem "住址","",StringItem.PLAIN ;private StringItem Fbz = new StringItem "备注信息","",StringItem.PLAIN ;private mand formExit = new mand "退出",mand.EXIT,1 ;//添加界面定义private Form frmadd = new Form "添加界面" ;private mand Cfnish = new mand "完成", mand.EXIT, 1 ;private WORDField Cname= new WORDField "姓名:","",12,WORDField.ANY ;private WORDField Cmobile = new WORDField "手机:","",12,WORDField.ANY ;private WORDField Cbj = new WORDField "班级:","",12,WORDField.ANY ;private WORDField Cemail = new WORDField "电子邮件:","",12,WORDField.ANY ;private WORDField Cny = new WORDField "出生年月:","",12,WORDField.ANY ;private WORDField Caddress= new WORDField "家庭住址:","",1024,WORDField.ANY ; private WORDField Cbz= new WORDField "备注信息:","",1024,WORDField.ANY ;//modifyCnn定义private Form modifyCnn = new Form "form" ;private mand Mfinish = new mand "完成", mand.EXIT, 1 ;private WORDField Mname =new WORDField "姓名","",12,WORDField.ANY ;private WORDField Mmobile=new WORDField "手机","",12,WORDField.ANY ;private WORDField Mbj =new WORDField "班级","",12,WORDField.ANY ;private WORDField Memail=new WORDField "电子邮件","",12,WORDField.ANY ;private WORDField Mny = new WORDField "出生年月:","",12,WORDField.ANY ;private WORDField Maddress=new WORDField "家庭住址","",1024,WORDField.ANY ; private WORDField Mbz=new WORDField "备注信息","",1024,WORDField.ANY ;//查询WORDBox tb = new WORDBox "search","",40,WORDField.ANY ;private mand searchFin = new mand "完成", mand.EXIT, 1 ;private mand searchQuit = new mand "退出", mand.EXIT, 1 ;public shiyan_14 {RecordStore rs = rms.open "dbase" ;RecordEnumeration re = rms.enumRecord rs ;recordLength = re.numRecords ;for int i=0;i<recordLength;i++{int id = rms.nextID re ;rmsRecord i = rms.read rs, id ;list.append rmsRecord i , null ;}rms.close rs ;}public void startApp {//list添加组件list.setSelectmand cmdck ;list.setSelectmand cmdexit ;list.addmand cmdadd ;list.addmand cmddel ;list.addmand cmdupdate ;list.addmand cmdserch ;list.setmandListener this ;//form添加组件form.append Fbz ;form.append Faddress ;form.append Fny ;form.append Femail ;form.append Fbj ;form.append Fmobile ;form.append Fname ;form.addmand formExit ;form.setmandListener this ;//新建form添加组件frmadd.append Cname ;frmadd.append Cmobile ;frmadd.append Cbj ;frmadd.append Cemail ;frmadd.append Cny ;frmadd.append Caddress ;frmadd.append Cbz ;frmadd.addmand Cfnish ;frmadd.setmandListener this ;//修改form添加组件modifyCnn.append Mname ;modifyCnn.append Mmobile ;modifyCnn.append Mbj ;modifyCnn.append Memail ;modifyCnn.append Mny ;modifyCnn.append Maddress ;modifyCnn.append Mbz ;modifyCnn.addmand Mfinish ;modifyCnn.setmandListener this ;//searchtb.addmand searchQuit ;tb.addmand searchFin ;tb.setmandListener this ;if display==null {display = Display.getDisplay this ; }display.setCurrent list ;}public void pauseApp {}public void destroyApp boolean unconditional {try{RecordStore.deleteRecordStore "dbase" ;}catch Exception e {}rms.writeRecord rmsRecord ;}public void mandAction mand cmd, Displayable displayable { if cmd == cmdserch {display.setCurrent tb ;}if cmd == searchQuit {display.setCurrent list ;}if cmd == searchFin {String s = tb.getString ;boolean flg = false;int i;for i=0;i<recordLength;i++ {if this.rmsRecord i .equals s {flg = true;break;}}if flg {int r;RecordStore rs = rms.open rmsRecord i ;RecordEnumeration re = rms.enumRecord rs ;r = rms.nextID re ;s = rms.read rs, r ;Fbz.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Faddress.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fny.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Femail.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fbj.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fmobile.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fname.setWORD s ;rms.close rs ;display.setCurrent form ;}else{tb.setString "找不到" ;}}if cmd==cmdck //主窗口选择{String s;int r;int sel = list.getSelectedIndex ;s = list.getString sel ;RecordStore rs = rms.open s ;RecordEnumeration re = rms.enumRecord rs ; r = rms.nextID re ;s = rms.read rs, r ;Fbz.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Faddress.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fny.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Femail.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fbj.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fmobile.setWORD s ;r = rms.nextID re ;s = rms.read rs, r ;Fname.setWORD s ;rms.close rs ;display.setCurrent form ;}if cmd == cmddel //主窗口记录删除{int sel = list.getSelectedIndex ;String s = list.getString sel ;list.delete sel ;//del a recordint n = rms.del rmsRecord,s ;rmsRecord n = null;stack.push Integer.toString n ;try{RecordStore.deleteRecordStore s ;}catch Exception e {}}if cmd == cmdadd //主窗口创建{display.setCurrent frmadd ;}if cmd == cmdupdate{String s;int r;int sel = list.getSelectedIndex ;s = list.getString sel ;RecordStore rs = rms.open s ;RecordEnumeration re = rms.enumRecord rs ; r = rms.nextID re ;s = rms.read rs, r ;Mbz.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Maddress.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Mny.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Memail.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Mbj.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Mmobile.setString s ;r = rms.nextID re ;s = rms.read rs, r ;Mname.setString s ;rms.close rs ;display.setCurrent modifyCnn ;}if cmd==cmdexit //退出程序{try{this.destroyApp false ;notifyDestroyed ;}catch Exception e {}}if cmd==formExit //退出通信录{display.setCurrent list ;}if cmd == Cfnish //创建完成{String name = Cname.getString ;String mobile = Cmobile.getString ; String phone = Cbj.getString ;String email = Cemail.getString ;String ny = Cny.getString ;String address = Caddress.getString ; String bz = Cbz.getString ;Cname.setString null ;Cmobile.setString null ;Cbj.setString null ;Cemail.setString null ;Cny.setString null ;Caddress.setString null ;Cbz.setString null ;if name =null //名字不能为空{RecordStore rs = rms.open name ;int r = rms.write rs, name ;r = rms.write rs, mobile ;r = rms.write rs, phone ;r = rms.write rs, email ;r = rms.write rs, ny ;r = rms.write rs, address ;r = rms.write rs, bz ;rms.close rs ;//add a recordif stack.empty{Object t = stack.pop ;int top = Integer.parseInt t.toString ;rmsRecord top = name;}else{rmsRecord recordLength = name;recordLength ++;}list.append name, null ;}display.setCurrent list ;}if cmd == Mfinish //修改完成{String orig = list.getString list.getSelectedIndex ; String name = Mname.getString ;String mobile = Mmobile.getString ;String phone = Mbj.getString ;String email = Memail.getString ;String ny = Mny.getString ;String address = Maddress.getString ;String bz = Mbz.getString ;if name =null //名字不能为空{RecordStore rs = rms.open name ;int r = rms.write rs, name ;r = rms.write rs, mobile ;r = rms.write rs, phone ;r = rms.write rs, email ;r = rms.write rs, ny ;r = rms.write rs, address ;rms.close rs ;//modify a recordint n = rms.del rmsRecord, orig ;//rmsRecord n = name;list.set list.getSelectedIndex , name, null ;//list.append name, null ;}display.setCurrent list ;}}public int pare byte rec1, byte rec2 {String str1=new String rec1 ;String str2=new String rec2 ;int num1=Integer.parseInt str1 ;int num2=Integer.parseInt str2 ;if num1>num2 {return Recordparator.FOLLOWS;}else if num1<num2 {return Recordparator.PRECEDES;}return Recordparator.EQUIVALENT;}}package ch2;importpublic class rms {static String dbase = "dbase";public static RecordStore open String dbname {RecordStore rs = null;try {rs = RecordStore.openRecordStore dbname, true ;} catch Exception e {return null;}return rs;}public static void close RecordStore rs {try {rs.closeRecordStore ;} catch Exception e {}}public static int write RecordStore rs, String s { int id = -1;try {byte tmp = s.getBytes ;id = rs.addRecord tmp, 0, tmp.length ;} catch Exception e {}return id;}public static String read RecordStore rs, int r {String s = null;try {byte b = rs.getRecord r ;s = new String b ;} catch Exception e {}return s;}public static int del String s, String t {int i;int l = s.length;for i = 0; i < l; i++ {if s i .equals treturn i;}return -1;}public static RecordEnumeration enumRecord RecordStore rs { try {return rs.enumerateRecords null, null, false ;} catch Exception e {}return null;}public static int nextID RecordEnumeration re {try {return re.nextRecordId ;} catch Exception e {}return -1;}public static void writeRecord String s {RecordStore rs = open dbase ;int i;int n = s.length;for i = 0; i < n; i++ {if s i = null {write rs, s i ;}}close rs ;}}这是我做的一个手机小程序,在查看记录集信息的时候那个地方是反的,我一时半会还没想到怎么改,要是那位大哥把它改出来了,给我发下,谢谢,我的1074156299。
Nokia MIDlet代码签名证书申请和使用方法

文档出处:/support/Nokia_MIDlet_signing_guide.htmlVeriSign 和Thawte 的Java代码签名证书可以用于数字签名运行J2ME MIDlet(MIDP 2.0)代码,支持诺基亚和索爱等手机的MIDlet应用软件,运行签名后的MIDlet Suite就会显示软件发行商名称,否则会显示让用户不敢下载的警告“应用软件来源未知,继续?”。
同时,签名后访问网络等都不会弹出烦人的警告框了,让手机应用更加安全!但请注意:并不是所有手机都支持数字签名机制,Thawte Java代码签名证书对索爱手机支持多些,而VeriSign Java代码签名证书则对诺基亚手机支持多些,您可以提供使用两种证书签名的两种版本供用户选择安装,使得您的MIDlet软件适用手机范围更广和支持最多的手机型号。
本签名指南是基于Nokia Developer's Suite for J2ME 的使用指南编写,如果您还没有NDS forJ2ME,您到Nokia网站上下载NDS3.0签名工具。
或下载最新版的Carbide.j 1.5 开发工具。
请注意:您也可以直接使用Sun Java Wireless Toolkit 2.5.1 中文版来签名针对Nokia手机的MIDlet,如果您还没有此开发工具可以到SUN 网站上下载合适的开发工具同时,请一定要先参考:MIDP 2.0安全机制,充分理解MIDP 2.0的安全机制有助于签名MIDlet 的成功部署。
第1步创建Keystore和私钥Step 1. Create a Keystore and Key Pair:如图1所示,点击左边主菜单“Sign Application Package”,就会显示缺省的测试证书(default),如果您已经有了Java代码签名证书的密钥对(.sks文件)或您已经有了微软代码签名证书(.pfx)文件,则您可以点击“Import Key Pair”导入您的证书密钥对,导入时需要输入您的私钥密码。
《手持移动设备J2ME应用开发》第4章

4.1.1Display类的常用函数
Displayable中MIDP1.0就定义的函数有: boolean isShown() void addCommand(Command cmd) void removeCommand(Command cmd) void setCommandListener(CommandListener l) Displayable中MIDP2.0新添加的函数有: String getTitle() public void setTitle(String s) Ticker getTicker() public void setTicker(Ticker ticker) public int getWidth() public int getHeight() protected void sizeChanged(int w,int h)
处理高级别事件
所谓的高级别事件,就是指在处理高级界面上的控件时候 需要处理的事件。每一个高级界面的Dislayable对象都有 一个相应监听器,该监听器用来监听控件是否已经被触发 了相关的事件。本小节仅仅介绍Command对象的事件开 发,其他控件的事件开发将结合相关小节的具体内容再进 行详细介绍。 要处理按钮高级别事件,程序必须继承一个命令监听器接 口类CommandListener类,具体操作如下所示: public class HelloWorld extends MIDlet implements CommandListener{ }
<MTSE1.0>
按钮、菜单编程基础
在介绍事件开发之前首先了解基本的Command(命令)编 程。Midlet的javax.Microedition.lcdui包提供了一个命令 Command类,用来进行屏幕上按钮的相关开发, Command对象既可以显示为一个与键盘特定键相关联的 按钮,又可以作为屏幕菜单的一个菜单项。由于手机程序 功能有限,因此并没有提供像Windwos程序一样的菜单控 件,而是当屏幕需要显示多个按钮的时候,自动生成一个 菜单供用户选择使用。 创建一个新的Command对象需要调用Command对象的构 造函数,构造函数的的语法如 下所示: new Command(Labels,Type,Priority);
J2ME的PDA手机编程-湘潭市公交查询系统

免费论文 购买论文 定做论文 发表论文 3A 学习网()目 录附录 (17)1基于J2ME的PDA/手机编程-湘潭市公交查询系统快捷查询出相应的公交车次情况。
关键字:J2ME ;JAVA ;Eclipse;公交查询系统免费论文购买论文定做论文发表论文3A学习网()2Based on J2ME PDA/Handset Programming - Xiangtan Public ware for much more popular hardware platform. This graduate thesis introduced the software and hardware features of mobile phone, J2ME and its related technology as well as the analysis of the structure and procedures to achieve specific functions, The system is based on Eclipse, and for further ad-posses, JA V A and J2ME related technology is studied .This thesis introduced the programming of J2ME platform in windowsXP development envirment., and made the Xiangtan public transportation inquiry system completed. To check out the trips concerned, inputting the predicate station and terminal is only needed.Very conveniently and quickly indeed.Keywords:J2ME;JA VA;Eclipse;Public Transportation Inquiry System前言移动开发现已经成为了开发者社区最为时髦的名词,但由于其还是一个新兴的领域,所以在嵌入式消费类电子产品上开发应用程序依然充满了神秘的色彩。
2-J2ME 用户界面

2011年3月2日
23
TextBox方法 方法
存取、删除、插入、 存取、删除、插入、替换等操作 public void setString(String text) public String getString() public void setConstraints(int constraints) public int getConstraints() public void delete(int offset, int length); public void insert(char[] data, int offset, int length, int position); public void insert(String src, int position); public void setChars(char[] data, int offset, int length);
• Choice.EXCLUSIVE(单选)类型的list • Choice.IMPLICIT(隐含式菜单)类型的list • Choice.MULTIPLE(多选)类型的list
下面的语句生成一个EXCLUSIVE类型的 类型的list,标题是 下面的语句生成一个 类型的 , " Exclusive"的空列表。 的空列表。 的空列表 List list = new List("Exclusive", Choice.EXCLUSIVE);
public int append(String stringPart,Image imagePart) public void insert(int elementNum,String stringPart,Image imagePart) public void set(int elementNum,String stringPart,Image imagePart) public void delete(int elementNum) public String getString(int index); public Image getImage(int index); public int getSelectedIndex( ) public int getSelectedFlags(boolean[] selectedArray_return)
Java在手机中应用典型案例

如果使用C语言和专有的实时操作系统,不仅开发 速度慢,而且没有动态加载应用程序的能力,导致手 机程序开发很困难。
J2ME的体系结构
J2ME的体系结构是基于设备类别。为了支持有限 连 接 设 备 类 别 要 求 的 灵 活 性 和 可 定 制 性 , Sun 公 司 将 J2ME体系结构设计成具有模块特性和可伸缩性,在该 模型中的三个软件层都构建在设备的主机操作系统上。
模
音效设置模块
块
排行榜模块
设
训练关模块
游戏说明模块
计
继续游戏模块
流程图
(四)仿真发布
通过以上几个环节,手机游戏可以说已模块化的方式 基本实现了,并对今后此类手机游戏开发奠定了模块化的 基础,基本上可以如此理解,同一类的游戏只需在此基础 上略加修改就可变化成新的游戏。但是要让这个游戏真正 在手机上运行起来,还需要完成最后一个步骤——JAvA程 序仿真机发布.这个步骤已经脱离了代码测试的阶段,上 升到真机实际钡4试的阶段,也是游戏推向市场之前所作 的最后一个准备工作。
手机游戏在国内外的现状
(2)欧洲
欧洲很早就推出手机游戏业务,但在2003年以前,欧洲手 机游戏市场还主要停留在SMS和WAP游戏时代。与日本相比, 欧洲的手机游戏相对落后。
随着移动数据业务的不断发展和市场压力的不断加大,在终 端问题上,欧洲运营商开始直接引入日韩的高端手机,同时采 取开放的数据业务经营模式。
二、J2ME介绍
J2ME是专门为资源受限的小型消费性电子设备的应 用程序开发提供的Java版本。
目前J2ME被广泛应用于手机等众多小型资源受限 设备中,发展前景良好。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
J2me MIDlet操作手机功能性用法总结(如调用其他程序或者调用其他
MIDlet)
分类:j2me/wm/andriod/移动开发 2010-07-14 11:01 957人阅读评论(3) 收藏举报
本技术文章,由原创, 转载请说明。
方法1:MIDlet 通过 platformRequest,调用手机本地应用程序。
示例:
S60中调用
platformRequest("nativeapp:application-exe=MediaPlayer.ex e;content=E:/Feelings.MP3;application-args=-ExampleArgume nt");
S40中调用
platformRequest("localapp://gallery/show?folder=C:/predef gallery/predefphotos");
方法2:MIDlet通过 platformRequest,调用其他MIDlet。
示例:
S40中
platformRequest("localapp://jam/launch?midlet-name=ArcadeGames;midlet -vendor=Acme;sounds=OFF;difficulty=easy;wizard_mode=ON");
MIDlet启动参数说明
Nokia-MIDlet-Launch-Params: sounds,difficulty,wizard_mode
The ArcadeGames MIDlet can access the parameters as follows:
System.getProperty("sounds");
System.getProperty("difficulty");
System.getProperty("wizard_mode");
platformRequest("javaapp:midlet-name=ArcadeGames;midlet-vendor=Acme;s ounds=OFF;difficulty=easy;wizard_mode=ON");
通过MIDlet的UID启动
platformRequest("javaapp:midlet-uid=0xE1000000;sounds=OFF;difficulty= easy;wizard_mode=ON);
方法3:手机本地应用程序调用MIDlet
代码如下:
The following example code shows how to launch a MIDlet from a native Symbian application.
RProcess rProcess;
TInt err = rProcess.Create(_L("javalauncher.exe"),
_L("midlet-uid=0x10137c4d;startMode=startFromCmdLine;sound=ON;landsca peMode=true;"));
if (KErrNone == err)
{
TRequestStatus status;
rProcess.Logon(status);
rProcess.Resume();
// now wait until javalauncher exits
User::WaitForRequest(status);
if (status.Int() != KErrNone)
{
// Launching midlet failed
err = status.Int();
}
}
else
{
// Cannot start javalauncher
}
rProcess.Close();
The following example code shows how to launch the same MIDlet from a Symbian application using Open C APIs.
include <glib.h>
gint exitStatus = 0;
// Start javalauncher and wait until it starts midlet
gboolean startOK = g_spawn_command_line_sync(
"javalauncher
midlet-uid=0x10137c4d;startMode=startFromCmdLine;sound=ON;landscapeMo de=true;",
NULL,
NULL,
&exitStatus,
NULL);
if (startOK)
{
if (exitStatus != 0)
{
// launching midlet failed, (Symbian) error code in exitStatus }
}
else
{
// Cannot start javalauncher
}
方法4:MIDlet重新启动
In Series 40 and Symbian, when a MIDlet is already running and it is re-launched, it is set on the foreground and can receive the new command line parameters.
In Symbian, every time a MIDlet is re-launched, the integer value in com.nokia.mid.cmdline.instance system property is incremented by one. This value can be used to check whether the MIDlet has really been
re-launched or just brought to the foreground. The old values of the command line arguments are not changed unless new command line values redefine them. If JAD attribute Nokia-MIDlet-Background-Event has the value pause, the startApp method is called every time the MIDlet is brought to foreground. This provides an easy way to acquire new command line parameters.
方法5:从手机浏览器网站链接启动MIDlet
n Symbian, when a link with the javaapp: or localapp://jam/launch? URI scheme is opened on a web page, the corresponding MIDlet is launched. If JavaScript is enabled, a JavaScript function may also activate the link.
Before the MIDlet is started from a web browser link, the auto invocation permission of the MIDlet is checked. This means that in case of
third-party MIDlets, the user is always asked at least once to confirm the MIDlet launch.
If you use non-US-ASCII characters in the URL, you must use UTF-8 encoding. Also spaces must be encoded, for example:
javaapp:midlet-name=Arcade
Pro;midlet-vendor=Acme;midlet-n=1;sounds=OFF;difficulty=medium
方法6:MIDlet platformRequest其他常用功能
打电话:
platformRequest("tel:+19143680400");
打开网页:
platformRequest("/");
打开1个RTSP流连接:
platformRequest("rtsp://ra.yle.fi/ramgen/tv2/viihde/zencafe.rm");
利用本地默认软件打开1个本地文件
platformRequest("file://E/image.png");
打开短信编辑器,并发短信到指定号码
platformRequest("sms:+19143680400");
其他常用列表及功能:使用连接后提示用语列表
In Symbian, localapp supports launching only the following applications: Symbian本地应用程序列表。