J2me MIDlet操作手机功能性用法总结
- 格式:doc
- 大小:67.00 KB
- 文档页数:8
实验十四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。
文档出处:/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”导入您的证书密钥对,导入时需要输入您的私钥密码。
免费论文 购买论文 定做论文 发表论文 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前言移动开发现已经成为了开发者社区最为时髦的名词,但由于其还是一个新兴的领域,所以在嵌入式消费类电子产品上开发应用程序依然充满了神秘的色彩。
手机网络游戏操作说明书1手机网络游戏使用说明书配置源程序发布与运行1.服务器端配置(1)将光盘\TM\10\XiangQiServer文件夹拷贝到Eclipse的工作空间中。
(2)启动Eclipse。
(3)选择”文件”/”导入”菜单项,展开”常规”节点,选择”现有项目到工作空间中”子节点,如图1.1所示。
图1.1 ”导入”窗口(4)单击【下一步】按钮,单击【浏览】按钮,选择程序所在目录,然后勾选”将项目复制到工作空间中”复选框,如图1.2所示。
图1.2 ”导入”窗口(5)单击【完成】按钮。
(7)参照第7章文档中的7.3.5节中的第5小节,为MyEclipse配置Tomcat服务器。
(8)单击工具栏的””按钮,将弹出如图1.3所示的对话框。
这个对话框是项目发布对话框,在对话框的”Project”下拉选择框中选择本系统的项目名称”XiangQiServer”,单击Add按钮进行项目发布的设置。
图1.3 MyEclipse项目发布对话框(9)在弹出如图 1.4所示的对话框中,选择”Server”下拉选择框中的”Tomcat 5”服务器,单击”完成”按钮程序将自动发布到服务器中。
如果需要重新发布项目,能够单击Redeploy按钮。
图1.4 New Deployment(10)单击工具栏中按钮右侧的小箭头,在弹出的菜单中选择”Tomcat 5”/”Start”菜单项,如图1.5所示。
这样能够在MyEclipse中启动Web 服务器。
图1.5 服务器运行菜单2.客户端发布与运行(1)将光盘\TM\10\xiangqi文件夹拷贝到Eclipse的工作空间中。
(2)启动Eclipse。
(3)选择”文件”/”导入”菜单项,展开”常规”节点,选择”现有项目到工作空间中”子节点,如图1.6所示。
图1.6 ”导入”窗口(4)单击【下一步】按钮,单击【浏览】按钮,选择程序所在目录,然后勾选”将项目复制到工作空间中”复选框,如图1.7所示。
“引擎教学法”在“J2MEMIDP手机游戏设计”课程中的应用摘要:手机游戏引擎为手机游戏提供了完整的框架,开发人员可以直接往这个框架里填充内容来构建游戏。
“J2ME MIDP手机游戏设计”课程充分利用了“引擎”这个概念来构建基于工作过程的课程体系和教学方法。
本文介绍了该课程的课程内容和教学过程。
关键词:引擎;工作过程;组件;学习情景1 引言简单地说,引擎就是用于控制所有游戏功能的主程序。
在手机游戏领域,引擎可以理解为制作手机游戏的框架,它把图像渲染、输入处理、音频播放、资源管理等基本游戏功能组合成一个有机的整体,在这个整体框架中提供了各个功能接口以实现可编程性。
手机游戏引擎为手机游戏提供了完整的框架,开发人员可以直接往这个框架里填充内容来构建游戏。
这样,无论是预算成本还是时间方面都会形成很大的节约。
一直以来,游戏引擎都是游戏开发的核心技术之一。
一款游戏的成功往往伴随着一个尖端的游戏引擎的产生。
但手机游戏引擎的开发费用或者是购买费用是相当昂贵的,而且手机游戏种类繁多,学校不可能花费大量的资金去购买这些引擎。
学生的学习目标是利用J2ME MIDP来开发手机游戏,而不仅仅是学习利用引擎去开发手机游戏。
因此,“J2ME MIDP手机游戏设计”课程不仅要考虑行业技术的发展,重视“引擎”这个技术在教学过程中的运用,更要结合高职教学的特点,利用“引擎”这个概念来构建基于工作过程的课程体系和教学方法。
2 “引擎教学法”的基本思路2.1 构建基于工作过程的课程体系德国劳耐尔教授等认为,工作过程是“在企业里为完成一件工作任务并获得工作成果而进行的一个完整的工作程序”,“是一个综合的、时刻处于运动状态但结构相对固定的系统”。
一款手机游戏,无论属于何种类型,基本上都由以下六个部分构成:片头视频、闪屏、菜单、游戏主体、音效和排行榜。
课程以手机游戏开发流程为参照,将课程内容划分为六个学习情景,对每个学习情景划分出若干个学习单元,再根据职业岗位所需的各种能力和学生特点来选择知识点。
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本地应用程序列表。