手机板书内容.docx

上传人:b****7 文档编号:26090412 上传时间:2023-06-17 格式:DOCX 页数:27 大小:89.46KB
下载 相关 举报
手机板书内容.docx_第1页
第1页 / 共27页
手机板书内容.docx_第2页
第2页 / 共27页
手机板书内容.docx_第3页
第3页 / 共27页
手机板书内容.docx_第4页
第4页 / 共27页
手机板书内容.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

手机板书内容.docx

《手机板书内容.docx》由会员分享,可在线阅读,更多相关《手机板书内容.docx(27页珍藏版)》请在冰豆网上搜索。

手机板书内容.docx

手机板书内容

手机可以编程吗?

手机硬件,基本可以按计算机对待。

作为计算机,最基本的部件是主机(处理器CPU+内存)。

从软件上看就是操作系统。

结论:

手机实际上就是一台小的计算机,其中配置一定的处理器和一定容量的内存,并工作在某种操作系统下。

常见的手机芯片(CPU):

目前英国ARM架构占据手机处理器90%的市场份额。

1.Intel的XScale处理器

2.ARM(AdvancedRISCMachines),既可以认为是一个公司的名字,也可以认为是对一类微处理器的通称,还可以认为是一种技术的名字。

3.OMAP:

无线设备制造商,诸如诺基亚、索尼爱立信、Palm、惠普公司及索尼等业界顶尖的设备制造商,以及诸如宏碁、LuckyGoldstar、HTC、Sendo及其它的主要设计制造商均宣布支持TI的OMAP处理器平台。

常见的手机操作系统:

操作系统

1.Symbian操作系统:

Symbian

系统的手机目前比较常见的是Nokia、三星、西门子

2.Windows Mobile(windowsCE)操作系统

3.iOS系统:

iphone系列手的操作。

4Palm系统

5..Android系统.新型手机操作系统,支持无线互联网技术。

主流的手机编程体系:

Midp

Adriod

本课程以MIDP手机程序设计为框架展开。

编程工具WTK2.5,它要求jdk版本为1.5版以上。

用WTK开发一个手机程序的过程:

新建一个项目(newproject),完成后结果:

注意以下三个信息:

PlaceJavasourcefilesin"C:

\WTK25\apps\演示程序\src"

将java源程序放在C:

\WTK25\apps\演示程序\src文件夹中。

只有将源程序放在这个位置上,才能被WTK找到并编译。

 Placeapplicationresourcefilesin"C:

\WTK25\apps\演示程序\res"

将项目所需的资源文件(如图片)存放在C:

\WTK25\apps\演示程序\res文件夹中,只有这个文件夹中的资源文件才能被WTK读出。

Placeapplicationlibraryfilesin"C:

\WTK25\apps\演示程序\lib"

这个文件夹中存放外来的库文件(略)

按以上要求存放文档后,就可以编译程序(Build),编译过程中可能产生错误,那么必须改正源程序中的错误,再编译,直到程序无错为止。

运行程序(Run)。

手机程序结构:

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassDEMOextendsMIDlet

{

publicvoidstartApp()

{}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

}

以上是一个最简单的手机程序,它可以表明一个手机程序的基本结构:

1.手机程序由若干类(class)构成

从java程序的观点,类应如下:

class类名

{

}

2.在若干类中,必须且只能有一个主类。

它是程序中最开始执行的类。

主要类有两个标志:

public、必须扩展于MIDlet类。

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassDEMOextendsMIDlet

{

publicvoidstartApp()

{}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

}

3.java类的写法:

class类名

{

变量声明;//可有可无,可多可少

函数声明;//可有可无,可多可少

}

变量是程序运行过程中用于存放数据的空间,这些空间是以变量的形式出现,变量需要声明

类型名变量名

intx,y;声明了x,y两个整型变量,存放整数。

doublez;声明了一个浮点型变量z,存放实数。

charc;变量c中存放一个字符

Stringstr;str可以存放一个字符串。

函数,由一组语句构成的程序段。

值类型函数名(参数表)

{

函数体;

}

如:

publicvoiddestroyApp(booleanb)

{

X=7;

}

函数是对数据的加工过程,它由名称、参数表(加工的原料,也就是被计算的数据)、值类型(加工结果的类型)以及函数体(加工过程)。

考查手机程序:

publicclassDEMOextendsMIDlet

{

publicvoidstartApp(){}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

}

这个手机程序是一个类,名字是DEMO,它是扩展于MIDlet类。

类中没有声明变量,声明了startApp、pauseApp和destroyApp三个函数。

三个函数都没有函数体。

可见,作为一个手机程序必须是一个java类,而且必须扩展于MIDlet类,声明startApp、pauseApp和destroyApp三个函数。

在手机程序中,可能会用到一些其他类,如MIDlet,在程序中必须导入(import)这些类。

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

MIDlet类就在javax.microedition.midlet包(文件夹)中。

*表示所有类。

类似于C中的#include的作用。

第三讲

在手机程序中的三个函数是与手机上的一些事件相关联的,当手机程序运行过程中发生了某些事件时,系统就会自动调用这些函数。

startApp函数:

当手机程序运行时,首先初始化(构造函数,init函数),然后自动调用该函数。

所以它是一个程序的入口部分,所以一个程序的功能代码将从这个函数开始。

pauseApp函数:

当一个手机程序运行时,如果有了电话呼叫、短信息,这时系统会暂停本程序,暂停本程序之前,自动调用该函数。

因此在接听电话或阅览短信之前,程序应该做的准备工作代码可以写在该函数中。

destroyApp函数:

在程序即将结束时,调用的函数。

在这个函数中,可以设计一些程序的善后处理代码。

程序中这三个函数是必不可少的,除此之外,程序还可以设计其他的函数甚至其他类。

在手机上显示文本框:

 

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassDEMOextendsMIDlet

{

Displaydisplay;

TextBoxtb=newTextBox(“标题”,“正文”,200,0);

publicvoidstartApp()

{

display=Display.getDisplay(this);

display.setCurrent(tb);

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

}

可以显示在屏幕上的对象必须是Dispalyable类的子类的对象。

1.声明并创建TextBox对象。

TextBoxtb=newTextBox(“标题”,“正文”,200,0);

TextBox生时必须给出四个参数:

标题,正文,最大长度,输入限制。

2.取得显示屏幕

Displaydisp=Display.getDisplay(this);

3.将可显组件设置到屏幕。

disp.setCurrent(tb);

第四讲:

手机程序中的菜单(命令项)。

MIDP中的菜单是由Command类实现。

声明并产生命令项的方法:

Commandc;

C=newCommand(“文字”,命令型态,优先级);

或者

Commandc=newCommand(“文字”,命令型态,优先级)

以上的语法中,命令型态:

–命令类型可以是下列8个值之一

•Command.BACK:

返回前一屏幕;

•Command.CANCEL:

取消当前正在进行的工作;

•Command.STOP:

中断当前正在运行的动作。

•Command.EXIT:

退出应用程序;

•Command.HELP:

请求在线帮助;

•Command.ITEM:

选择命令是当前屏幕中的某一项;

•Command.SCREEN:

应用到当前屏幕的命令;

•Command.OK:

确定当前正在进行的动作;

不同型态的命令将出现的位置不同。

优先级部分表现为一个整数,整数越小,优先级越高。

命令项产生后,可以用addCommand()函数将命令项设置到Dispalyable(如TextBox).

命令型态决定命令选项出现的位置:

 

命令项出现在屏幕最下行。

点中两个软件按钮,就可以选中某个菜单。

左边永远只能出现一项菜单。

其他菜单都会出现在右边,其他菜单如果有多项,则折迭成一个menu多级菜单。

所以,使用频率最高的菜单应该设计在左边。

BACK、CANCEL、STOP和EXIT型态的菜单可以出现在左边,其他四种型态只能出现在右边。

总结,各种菜单项出现的规律:

型态决定位置,如果把型态也理解为一种优先的话,那么上述八种型态的优先级别是依次降低的。

高四级可以出现在左边。

除型态之外,型态相同的前提下优先级可以决定各菜单出现次序。

Commandc=newCommand(“文字”,命令型态,优先级)

优先级值越小,越先出现。

即:

菜单出现的次序是:

先决定于型态;型态相同时,决定于优先级;型态和优先级都相同,则决定于在程序中添加的次序。

菜单响应:

当用户选定了某菜单时,都应该产生某一个动作。

程序中总需要将某些代码的执行与某菜单相联系,这就是事件模型。

MIDP中的事件模型:

事件,是手机中某状态改变。

这些事件有些是由系统产生的,如手机程序被呼叫中断。

有些事件是人为产生的,如按下了某按键。

系统事件的响应,由系统负责,如startApp,pauseApp,destroyApp函数的调用就是如此。

但人为产生的按键事件,必须在程序中将事件与动作(函数)对应。

这种编程规律,就是事件模型。

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassMyMIDletextendsMIDlet{

Displaydisp;

TextBoxtb=newTextBox("TextBox演示程序","天气真好......",256,1);

Commandcomm1=newCommand("退出",Command.SCREEN,2),comm2=newCommand("还原",Command.SCREEN,1),

comm3=newCommand("清除",Command.EXIT,2),comm4=newCommand("选项",Command.SCREEN,2);

 

publicvoidstartApp()

{

tb.addCommand(comm4);

tb.addCommand(comm1);tb.addCommand(comm2);tb.addCommand(comm3);

disp=Display.getDisplay(this);

disp.setCurrent(tb);

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

 

}

事件:

手机上发生的状态改变。

有些事件由系统产生,如:

手机程序的运行(初始化),中断,撤消;系统产生的事件的响应,由系统规定。

有些事件由操作者产生,如:

操作者按下键盘上的某键。

这些事件可以在程序中通过程序处理。

这样的事件分成两大类:

高级事件与低级事件。

高级事件:

由操作者按下软件按钮产生的事件。

对于高级事件的响应与硬件无关,容易移植,针对某公司某款式型号上写出的高级事件响应程序,将它移植到另一公司另一款式或另一个型号的机器上,一定能正确执行。

菜单事件就是高级事件之一。

低级事件:

指操作者按下除软件按钮之外的其他按键所产生的事件。

由于不同公司不同款式不同型号上,对这些按键的定义可能差别,所以针对某机型上设计的低级事件响应程序,在另一机型上不保证能正确运行。

可见,低级事件与硬件相关,不保证移植性。

菜单事件的响应:

菜单事件,是由一个接口去监视并处理。

CommandListener

程序中,首先必须指定事件的监视器,它负责监视事件是否发生,当事件发生后,进行处理。

监视器是一个类(的对象),任何类都以指定为监视器,但它必须实现CommandListener接口.

classAimplementsCommandListener{}

最简单的情况下,也可以指定主类(程序中MIDlet的派生类)作监视器。

publicclassAextendsMIDletimplementsCommandListener

{

……………..

}

Java语言规定,当一个类实现(implements)了接口时,在该类中必须写出接口中的所有接口函数的函数体。

在接口中只声明函数,但没有函数体。

CommandListener接口中只定义了一个抽象函数(只有声明,没有函数体):

publicvoidcommandAction(Commandc,Displayalbed);

接口的作用,将菜单项选中的动作,与commandAction函数相关联,即当选中菜单时,程序一定会转到这个函数。

所以,在实现该接口的类中,就应该给出这个函数的函数体。

publicvoidcommandAction(Commandc,Displayalbed)

{};

程序运行时,如果有某个菜单项被选中,则程序跳转到这个函数处运行。

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassMyMIDletextendsMIDletimplementsCommandListener

{

Displaydisp;

TextBoxtb=newTextBox("TextBox演示程序","abcdefg",256,1);

Commandcomm1=newCommand("大写",Command.SCREEN,2);

publicvoidstartApp()

{

tb.addCommand(comm1);

tb.setCommandListener(this);

disp=Display.getDisplay(this);

disp.setCurrent(tb);

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

publicvoidcommandAction(Commandc,Displayabled)

{

tb.setString(tb.getString().toUpperCase());

}

以上程序中用到了三个函数:

文本框类(tb)的函数

getString()得到文本框上显示的字符串,结果为String

setString()将字符串设置到文本框上

字符串类的函数:

toUpperCase()将字符串中的小写字母转为大写字母。

当程序中的多菜单先后被选中时,各菜单的选中,都会转到同一函数commandAction中执行。

publicvoidcommandAction(Commandc,Displayabled)……。

}

在函数中的参数c和d,是由系统产生并传给函数.所以c和d可以在函数中作为已知数据直接使用。

C中保存着倒致程序转到commandAction函数的菜单变量的名字。

D中保存着这时的屏幕对象。

程序中通过判断c的值可以决定是哪个菜单被选中。

多菜单操作:

importjavax.microedition.midlet.*;

importjavax.microedition.lcdui.*;

publicclassMyMIDletextendsMIDletimplementsCommandListener

{

Displaydisp;

TextBoxtb=newTextBox("TextBox演示程序","abcdefg",256,1);

Commandcomm1=newCommand("大写",Command.SCREEN,1),

comm2=newCommand("小写",Command.SCREEN,2),

exit=newCommand("退出",Command.BACK,1);

publicvoidstartApp()

{

tb.addCommand(comm1);tb.addCommand(comm2);

tb.addCommand(exit);

tb.setCommandListener(this);

disp=Display.getDisplay(this);

disp.setCurrent(tb);

}

publicvoidpauseApp(){}

publicvoiddestroyApp(booleanb){}

publicvoidcommandAction(Commandc,Displayabled)

{

if(c==comm1)

tb.setString(tb.getString().toUpperCase());

else

if(c==comm2)

tb.setString(tb.getString().toLowerCase());

elseif(c==exit)

notifyDestroyed();

}

}

其中,notifyDestroyed()函数是MIDlet类的函数,表示撤消本MIDlet;

解释程序中的函数调用方法:

notifyDestroyed();

disp.setCurrent(tb);

有些函数调用时需对象前缀,有些不需。

其实,在Java程序中任何函数都是属于某个类,不存在不属于类的游离函数。

程序中,如果调用其他对象的函数,必须指明对象名,如:

disp.setCurrent(tb);

但,调用本类的函数,可以不加前缀。

notifyDestroyed();

要加前缀,可以:

this.notifyDestroyed();

notifyDestroyed()函数是MyMIDlet类从MIDlet类中继承而来的函数。

;

List

选择的组件,在一组可选项中,选择一个或多个选项。

构造函数一:

publicList(Stringtitle,intlistType)

title表示标题,listType表示类型。

这种方式可以创建一个空白的List对象,没有可选项。

可以在随后的代码中用List的append添加可选项。

构造函数二:

publicList(Stringtitle,intlistType,String[]stringElements,Image[]imageElements)

产生完整的List对象,既有标题,也有内容。

List有三种形式:

Choice.EXCLUSIVE:

单选List

Choice.IMPLICIT:

隐含菜单,是一种单选List,选中时会触发事件

Choice.MULTPLE:

多选List

当显示List后,选中某项时,可以用以下函数得到我们所选中的项目:

publicintgetSelectedIndex()

得到选中项的序号,0,1,2,等。

适合于单选时。

–如果是多选List可以用

–publicintgetSelectedFlags(boolean[]sArray)

返回值返回我们选择的项数,具体的选项在sArray表达。

示例:

publicvoidcommandAction(Commandc,Displayabled)

{

boolean[]b=newboolean[3];

Stringmsg="共选择了"+list.getSelectedFlags(b)+"项,它们分别是:

";

for(inti=0;i

if(b[i])msg=msg+txt[i]+"";

TextBoxtb=newTextBox("您的选择是:

",msg,256,1);

disp.setCurrent(tb);

}

Choice.EXCLUSIVE和Choice.MULTIPLE两种形态的List本身并不触发事件,所以在程序中必须再用Command触发事件,在事件处理函数中,检测我们所选的项目。

Choice.IMPLICIT形态的List是单选,但它选中后自身触发Command事件,不需要再设计Command以触发事件,一旦选择,自动调用。

publicvoidcommandAction(Commandc,Displayabled)

{

}

但,这时在c中传入一个常量:

List.SELECT_COMMAND,由此可以区别是菜单还是List触发的事件,如下例:

publicvoidcommandAction(Commandc,Displayabled)

{

if(c==List.SELECT_COMMAND)

{TextBoxtb=newTextBox("您的选择是:

",txt[list.getSelectedIndex()],256,1);

disp.setCurrent(tb);}

else

notifyDestroyed();

}

带图片的List;

try{

img[0]=Image.createImage("/TranslatorPlugin.png");

img[1]=Image.createImage("/LoginAssis.png");

img[2]=Image.createImage("/ExtYouxi.png");

}catch(Exceptione){}

list=newList("请选择文化程度",Choice.IMPLICIT,txt,img);

list.a

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1