J2me MIDlet操作手机功能性用法总结
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本地应用程序列表。
基于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手机网络游戏使用说明书配置源程序发布与运行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所示。
“引擎教学法”在“J2ME MIDP手机游戏设计”课程中的应用
“引擎教学法”在“J2MEMIDP手机游戏设计”课程中的应用摘要:手机游戏引擎为手机游戏提供了完整的框架,开发人员可以直接往这个框架里填充内容来构建游戏。
“J2ME MIDP手机游戏设计”课程充分利用了“引擎”这个概念来构建基于工作过程的课程体系和教学方法。
本文介绍了该课程的课程内容和教学过程。
关键词:引擎;工作过程;组件;学习情景1 引言简单地说,引擎就是用于控制所有游戏功能的主程序。
在手机游戏领域,引擎可以理解为制作手机游戏的框架,它把图像渲染、输入处理、音频播放、资源管理等基本游戏功能组合成一个有机的整体,在这个整体框架中提供了各个功能接口以实现可编程性。
手机游戏引擎为手机游戏提供了完整的框架,开发人员可以直接往这个框架里填充内容来构建游戏。
这样,无论是预算成本还是时间方面都会形成很大的节约。
一直以来,游戏引擎都是游戏开发的核心技术之一。
一款游戏的成功往往伴随着一个尖端的游戏引擎的产生。
但手机游戏引擎的开发费用或者是购买费用是相当昂贵的,而且手机游戏种类繁多,学校不可能花费大量的资金去购买这些引擎。
学生的学习目标是利用J2ME MIDP来开发手机游戏,而不仅仅是学习利用引擎去开发手机游戏。
因此,“J2ME MIDP手机游戏设计”课程不仅要考虑行业技术的发展,重视“引擎”这个技术在教学过程中的运用,更要结合高职教学的特点,利用“引擎”这个概念来构建基于工作过程的课程体系和教学方法。
2 “引擎教学法”的基本思路2.1 构建基于工作过程的课程体系德国劳耐尔教授等认为,工作过程是“在企业里为完成一件工作任务并获得工作成果而进行的一个完整的工作程序”,“是一个综合的、时刻处于运动状态但结构相对固定的系统”。
一款手机游戏,无论属于何种类型,基本上都由以下六个部分构成:片头视频、闪屏、菜单、游戏主体、音效和排行榜。
课程以手机游戏开发流程为参照,将课程内容划分为六个学习情景,对每个学习情景划分出若干个学习单元,再根据职业岗位所需的各种能力和学生特点来选择知识点。
