服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

手机java小程序diy


  现在市面上有很多手机都有了java功能,如西门子的6688i、6618摩托罗拉的388、t720诺其亚的7210、7650等等,我们可以从网上或通过数据线下载好多有趣的java小程到手机里,如各种小游戏、小工具软件,扩展手机的功能。那么,我们编程爱好者能不能自己动手编手机java小程序呢?当然可以了!这样我们既练习了编程,又节省了rmb呢!真是一举两得!因为在网上下载java小程序是收费的。

  要想编写手机java小程序,您需要具有一定的java基础或c/c++基础,如果不是,请首先学习java的基本语法。如果你是c/c++的高手,就可以轻松地diy你想要的java小程序了!

  一、安装开发工具

  目前,各大手机厂商都已发布各自的java小程序开发包,我们到相关的站点都可找到。本文以西门子6688i为例进行介绍,其它厂商和型号的手机编程与其大同小异,只需安装不同的开发包即可。西门子6688i的java小程序开发环境为:borland jbuilder 7 personal + borland mobileset 3.01 + siemens mobility toolkit(smtk)6688i v1.0 beta 7。关于这三个工具可到http://www.cnjm.net下载。

  开发工具的安装与设置

  首先安装borland jbuilder 7 personal,安装完成后初次运行需要注册,选择have license key,点next>,选择paste license key text,然后把注册码复制进去,确认一次协议后就ok了。

  接下来安装borland mobileset 3.01,安装完成后初次运行jbuilder6也需要注册,选择have license key,点next>,选择paste license key text,然后把注册码复制进去,确认一次协议后就ok了。

  最后安装siemens mobility toolkit(smtk)6688i 1.0 beta8 或 smtk 3118 1.0 beta8,安装过程中会自动识别jdk的路径为jbuilder6安装路径下的jdk1.3.1。

  全部安装完成后还需要配置一下jbuilder7。打开jbuilder7,然后点菜单tools->configure jdks,在jdk home path栏点change,选择6688i smtk安装的路径,要选到6688i_1b8为止,确定后上面的name栏会自动变成siemens,然后点ok搞定。

  二、创建工程

  启动borland jbuilder 7 personal,新建一个工程"car",本例程编译执得后是一辆赛车在手机屏幕飞驶而过,带背景音乐背景灯可一亮一灭的而且还有振动呢!

  在jbuilder7中先新建一个工程:点菜单file -> new project,在对话框(如图1)中输入工程名、路径等内容。请在这里输入name:car;directory:c:/windows/jbproject/car(或你自己选择的路径),然后直接点finish就可以了。

手机java小程序diy(图一)

  点击菜单file -> new,在对话框中micro属性页中的midiet,点ok(如图2),弹出midiet向导对话框,在对话框中输入包名、类名。请在这里输入package:car;class:car,然后点next。 在下一对话框中输入类名,

class:carscreen;displayable type:javax.microeditoion.icdui.canvas,其它用默认即可,然后点 next,在最后一对话框中直接点finish就可以了。

手机java小程序diy(图二)
图2

  这时我们发现,borland jbuilder 7 personal已把程序的框架帮我们写好了!剩下的工作就是加入我们自己要写的代码了。

 三、编写程序代码

  java是基于类的,每个公共类都必须有一个文件相对应。在borland jbuilder 7 personal视图左边的project窗口中,我们可看到已经建好了两个文件:car.java和carscreen.java,前者为程序的起始类文件,后者为显示类文件,双击相应的图标可在borland jbuilder 7 personal视图右边的project窗口中看到程序代码。(如图3)

手机java小程序diy(图三)

  接下来我们向两个文件中添加代码如下:(注:蓝字部分为添加的代码,其余为borland jbuilder 7 personal自动生成的代码)

  文件car.java的内容

package car;
import com.siemens.mp.game.*;
import java.lang.*;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
public class car extends midlet
{
private static car instance; 图3
private carscreen screen = new carscreen();
public static char d;
public melody cuca;
public car() {
instance = this;
int tempo=120;
int cucarachalength = 34;
int cucaracha[][] = {
{melodycomposer.tone_c3, melodycomposer.tonelength_1_8 },
{melodycomposer.tone_d3, melodycomposer.tonelength_1_8 },
{ melodycomposer.tone_e3, melodycomposer.tonelength_1_4 },
{ melodycomposer.tone_e3, melodycomposer.tonelength_1_4 },
{melodycomposer.tone_e3, melodycomposer.tonelength_1_4 },
{melodycomposer.tone_e3, melodycomposer.tonelength_1_8 },
{melodycomposer.tone_f3, melodycomposer.tonelength_1_8},
{melodycomposer.tone_d3, melodycomposer.tonelength_1_4 },
{melodycomposer.tone_d3, melodycomposer.tonelength_1_4},
{melodycomposer.tone_d3, melodycomposer.tonelength_dotted_1_8 },
{melodycomposer.tone_d3, melodycomposer.tonelength_1_16},
{melodycomposer.tone_d3, melodycomposer.tonelength_1_8 },
{melodycomposer.tone_e3, melodycomposer.tonelength_1_8},
{melodycomposer.tone_c3, melodycomposer.tonelength_1_4},
{melodycomposer.tone_c3, melodycomposer.tonelength_1_4},
{melodycomposer.tone_c3, melodycomposer.tonelength_1_4 }
};
if (melodycomposer.maxlength() < cucarachalength)
melodycomposer comp = new melodycomposer();
comp.setbpm(tempo);
try{
for (int i=0; i<cucarachalength; i++ )
comp.appendnote(cucaracha[i][0], cucaracha[i][1]);
}
catch (exception e) { }
if (melodycomposer.maxlength() != cucarachalength)
cuca = comp.getmelody();
//以上代码设置音乐音调的长度
}

public void startapp() {
display.getdisplay(this).setcurrent(screen);
while (1<2)
{
cuca.stop();
cuca.play();//播放音乐
light.setlighton();//背景灯亮
light.setlightoff();
vibrator.startvibrator();//振动开
try{thread.sleep(100); }
catch (exception e) { }
vibrator.stopvibrator();//振动停
for(int i = 0; i < 12; i++)
{ screen.repaint();//在屏幕上画图
try
{ thread.currentthread();
thread.sleep(100l);
}
catch(exception exception) { }
}
d = '/ue1ef';
screen.c=d;
}
}
public void pauseapp() {
}
public void destroyapp(boolean unconditional) {
}
public static void quitapp() {
instance.destroyapp(true);
instance.notifydestroyed();
instance = null;
}
}

   文件carscreen.java的内容

package car;
import javax.microedition.lcdui.*;
public class carscreen extends canvas implements commandlistener {
public carscreen() {
c = '/ue1ef'; //设置显示图片的地址
try {
jbinit();
}
catch(exception e) {
e.printstacktrace();
}
}
private void jbinit() throws exception {
setcommandlistener(this);
addcommand(new command("退出", command.exit, 1)); //加退出按钮
}
public void commandaction(command command, displayable displayable) {
if (command.getcommandtype() == command.exit) {
car.quitapp();
}
}
public static char c;
protected void paint(graphics g) {
g.drawchar(c++, 0, 0, 20);
g.drawstring(" made by ldm ",0,68, 20);
}
}
四、示例说明

  car.java是起始类,由midlet继承而来,其中的public void startapp()就像c语言里的main函数一样,是程序第一个执行的函数。 startapp里是开始运行程序所作的一些事,display.getdisplay()是获取屏幕显示的对象,public car()起始类的构造函数,为其他的就没什么可说的了,依样画葫芦就可以了。

  carscreen是由canvas类继承而来,同时也需要监测按钮动作。canvas是一个画板,可以在上面画图、画字符串等等。g.drawchar(c++, 0, 0, 20)是以坐标(0,0)作为左上角画一幅位图,g.drawstring("made by ldm ",0,68, 20)是在屏幕底部中间写一行字。 commandaction是按钮按下的响应函数,判断出哪个按钮被按下了,从而可以采取相应的措施。

  常用类简介

  midlet类

  老实说我对这个类的理解也不深刻,也就是照着其他的程序依样画葫芦,我认为这是一个起始类,程序执行总是从这个类开始。必须要有的事件函数是startapp、pauseapp、destroyapp,顾名思义,就是起始、暂停、终止的时候起作用。

  form类

  form是一个窗体,有标题,可以显示文字也可以列出选项、设置按钮。

  canvas类

  canvas是一个画板,可以在上面画图、画字符串等等。必须要有的事件函数是paint,在显示的时候调用。

  graphics类

  graphics是一个画图的类,有画框、画线、画块、画圆、画字符串等功能函数。

  这时由于篇幅所限只能简要的介绍一下,不能详尽,感兴趣的朋友可以参考borland mobileset 3.01和 siemens mobility toolkit(smtk)6688i v1.0 beta 7中的帮助,里面有非常详细的介绍,不过你的英文可要好喔! 图4

  五、编译运行

  点菜单run -> run project, jbuilder会自动调用6688i的仿真程序对程序进行仿真。激动人心的时刻到了!你会在6688i的仿真程序中看到一辆赛车飞驰而过,伴着big big world的乐曲,而且还带振动呢!真是cool毕了!(如图4)

手机java小程序diy(图四)

  打包执行

  在视图左边的project窗口中,用鼠标右键点击car.java文件,在弹出菜单中选择"micro run using car",运行后jbuilder会在工程目录中自动生成car.jar和car.jad两个文件。

  下载到mmc卡上的时候,现在java/jam/game下建立一个car目录,然后将car.jar复制到该目录下,另外还要将工程目录下jad目录中的car.jad也复制

扫描关注微信公众号