其次,由于沿用了微软Windows操作系统的界面,界面和操作都和电脑上的Windows十分接近,对于使用者来说十分熟悉又上手。
第三,针对中国用户而言,中文操作系统已经比较成熟。目前,多普达、摩托罗拉、三星等都已经生产了针对该系统的智能手机,并且从市场的发展趋势来看,基于Windows Mobile操作系统的智能手机将是主流。
因此,在本次系统的设计中,智能手机终端采用了Windows Mobile操作系统。
3.2 Java在Windows Mobile中的应用
Java语言分为三个版本:J2SE,J2EE,J2ME。其中J2ME版本是适用于智能无线设备和小型计算设备的J2SE的简化版,它能够适应这些设备微型、移动和无线的特点。
对于安装了Windows Mobile操作系统的智能手机来说,根据不同品牌、不同型号的智能手机来看,在运行Java程序上也有所不同。对于不直接支持Java的智能手机来说,就需要借助第三方的Java虚拟机来运行程序,常见的Java虚拟机有JMM和DMIDP2等。而对于支持Java扩展的智能手机来说,只要将编写好的J2ME程序打包后,就能在手机上运行。本设计选择的智能手机是多普达S1,它本身是支持Java的,因此不需要另外寻找Java虚拟机来运行J2ME程序,只需要下载一个RESCO资源管理器,然后将要运行的程序对应的工程(包括jad文件)进行打包,下载至智能手机中。最后打开RESCO资源管理器,找到所要运行的Java程序,点击其中的jar文件就可以运行了。
4 系统的具体实现
4.1 服务器端程序的实现
由于服务器端需要接受和处理的数据量较大,并且是运行在计算机上的,所以,服务器端的程序是用J2EE编写的。
智能手机是通过设置专线APN来连接服务器的,服务器通过继承Thread类创建线程ServerImpl实现其功能,并通过生成固定端口的服务器Socket来接收终端的请求,实时侦听,对来自于终端的数据进行相应处理,完成任务后,用close()关闭套接字,最后关闭服务器退出。
服务器的初始化程序为:
private void initServer(){
try{
receiveMessages=new Vector();
//创建存放接收消息数组对象
sendMessages=new Vector();
//创建存放发送消息数组对象
sender=new SendImpl(); //生成SendImpl类的对象
receiver=new ReceiveImpl();
//生成ReceiveImpl类的对象
listener=new ListenImpl();
clients=new Vector();
serverSocket=new ServerSocket(8000);
//生成服务器端口
listener.setListenSocket(clients);
//实现对客户端的侦听
listener.setServerSocket(serverSocket);
//设置服务器套接字
sender.setSockets(clients);
receiver.setSockets(clients);
sender.setMessages(sendMessages);
receiver.setMessages(receiveMessages);
//设置消息对象
}catch(BindException b){
System.out.println("Server 已经启动");
System.exit(0);//结束程序
}
}
4.2 客户端的程序实现
在创建J2ME程序之前,首先要对J2ME进行配置。针对智能手机的特点,应当选择的是CLDC(连接有限设备)和MIDP1.0的配置。
4.2.1 连接程序的实现
程序的主题部分中,与服务器的连接过程是关键。程序代码如下:
private boolean connect() {
try {
System.out.println("连接到服务器");
connect=(SocketConnection)Connector.open("socket://localhost:8000");
//与服务器建立连接
System.out.println("此终端的地址为:"+adrthis);
in = connect.openInputStream();
//输入数据
out = connect.openOutputStream();
//输出数据
return true;
} catch (Exception e) {
//抛出异常