




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
基于J2ME+蓝牙技术的休闲娱乐平台设计与实现摘 要随着手机的日益普及、Java功能在移动设备上的实现,Java应用程序产生的手机增值服务逐渐体现出其影响力,对丰富人们的生活内容、提供快捷的资讯起着不可忽视的作用。特别是手机性能的逐渐增强,手机作为一个娱乐平台越来越成熟了。本课题着眼于J2ME技术的应用,利用JSR082蓝牙Java API的软件包,使这些移动设备交换任意的基于文本的消息,以及简单的游戏对战,开发出一款可用的手机蓝牙娱乐平台。全文介绍了J2ME的 技术及本程序的 体功能的实现。关键词:J2ME 手机 蓝牙 娱乐平台J2ME + Bluetooth based Platform Entertainment Design and ImplementationAbstractWhen mobile phone is getting ever more popular nowadays, with the implementation of Java technology on mobile equipment, increment of capital on communication service exhibits its force on peoples everyday life, providing them ever fast information just in hand. Mobile phone whose capability is greater is more and more mature for game. This dissertation focuses on implementation of J2ME technology,used JSR082 Bluetooth Java API to drive these investments exchange test messages,simpily multiply games by using client useful Java API,to developed a Bluetooth Entertainment Platform run on mobile phones.This dissertation introduces J2ME and its relative technology as well as this programs structure and analysis of implementation in details. Keywords: J2ME; mobile phone;Bluetooth; Platform Entertainment目 录1 .1 1.1 技术 .1 1.2 开发意 .1 1.3 开发 .1 2 J2ME 及 技术 .2 2.1 .2 2.2 J2ME 蓝牙应用开发及其实现 .2 2.2.1 J2ME 软件 .2 2.2.2 蓝牙技术 .3 2.2.3 Java 蓝牙应用 .3 2.2.4 Java 蓝牙 API .3 2.2.5 蓝牙应用的实现 .3 3 实现 .6 3.1 功能设 .6 3.2 .6 3.3 实现 .8 3.3.1 MIDLET .8 3.3.2 蓝牙 服务 .9 3.3.3 实现 .16 3.3.4 蓝牙实现 .17 3.4 .18 4 currency1 .22 “ .23 文 .24 I 1引言1.1技术背景随着fifl技术的 发以及移动息技术的一 成熟,出现了 fifl应用开发的技术。”简单的视 , 普及的手机。人们越来越于fifl技术来的 。手机上, 不是 了, 的 是用 fl 机的 fl 手机 本 其的 设备 。这 的不 fl , fl 不 , 。本课题实现了一 fifl 蓝牙 ,蓝牙技术 fi 用、 范围更大、安全性更好等特点, 成为各携 设备行fifl的标准。1.2开发意义目前来看,移动话是蓝牙技术的”大应用领域,也是实际应用的领域。过在移动话中植入蓝牙技术,可以实现fifl耳机、车载话等功能, 能实现 携机 其他手持设备的fi缆 ,组成一个 灵活的PAN,使人们能够随 随地实现个人区域内currency1音 的交换 。随着技术的发 完善,蓝牙必 对人们的生活 工作产生重大影响。本课题是对蓝牙技术的一些实践,设 实现一个基于蓝牙的手机娱乐应用程序。程序 应用J2ME技术及其蓝牙规范。由于遵循移动息设备配置(MIDP),所以该程序可以被下载拥Java虚拟机的手机上运行, 直 在 上运行,实现手机间的蓝牙游戏功能。蓝牙充当一个 的fifl ,该 应用程序在其形成的蓝牙fifl个人局域(PAN)内, 息的 一般 软件 比 度更快,成本 功耗更低并且fi 用的优点。1.3开发环境软件 :Windows7 Build 7100RC 32位版Sun JDK 1.6Eclipse 3.5 pulsar for Mobile JavaSun Wireless Tool Kit 2.5.2硬件 :基于AMD处 64位PC1基于J2ME+蓝牙技术的休闲娱乐平台2 J2ME理论及相关技术2.1概述J2ME即JAVA 2 Micro Edition,是Java 2的组成部 , J2SE、J2EE并称。J2ME是一高度优化的Java运行 ,应用于大量的消 设备,如Cellular Phones(蜂窝话)、Screen Phones(可视话)、Digital Set-top Boxes( 字机顶盒)、Car Navigation Systems(汽车导向 )等,同 也广泛被移动设备所采用,如移动话、双向寻呼机、智能卡、个人 事本(Personal Organizer) 掌上 (Palmtop)等。J2ME技术 Javacurrency1 的 平台fi 的特性移植小 设备上,允许移动fifl设备之间共享应用程序。J2ME 使用配置 简表定制 Java 运行 (JRE)。作为一个完整的 JRE,J2ME 由配置 简表组成,配置决定了使用的 JVM,而简表过添加特定于域的 来定 应用程序。以前 Sun 公司推出的J2EE (Java 2 Enterprise Edition,Java 2企业版)、J2SE (Java 2 Standard Edition,Java 2标准版)规范 比,J2ME 不是一个单独的技术规范,而是一 列技术规范 称。这些规范定 了 Java 技术在资 制的设备中的表现形 。J2ME 用于小 入 设备,这些设备 PC 是服务 设备 比 一的硬件标准、 作 ,其功用也是 别。是J2ME 在 用于这些设备的同 也 了 Java 的 特性,即任 间 任 地点的 可移植性、部 灵活性、安全的性,以及 定性。 是 为如 ,开发人 可以 J2ME 力量 的程序能够运行在其他 的设备上。2.2 J2ME蓝牙应用开发及其实现2 2 1 J2ME软件 J2ME平台由配置(Configuration) 简表(Profile) 可 包(Optional Package)f组成。表2-1为J2ME平台的体 。 作 位于J2ME运行 的” , 作 可以是Linux,Symbian PalmOS 这充 体现了Javacurrency1 的平台性。配置由Java虚拟机 一 列的API组成,为一范围内的 入 设备提供基本的功能,这些设备在硬件 软件上 的特性。目前,J2ME平台 包 个配置: 设备配置(ConnectedDeviceConfiguration CDC) currency1 设备配置(conneetedLimitedDevice Configuration。CLDC)。简表位于配置之上,为运行 提供高的API,如,应用程序 “形用等。1CLDC上采用”广泛的简表是移动息设备简表(Mobile lnformationDeviceProfile,MIDP)。基于CLDC MIDP的J2ME平台对的目标设备是移动话。J2ME平台可以过添加可 包(OptionalPackage)行fi。可 包是fl对特 技术的实现。 定位的是特定范围的设备,而不 作为一功能定 在MIDP中。随着移动设备内 处 能力的提高,越来越的可 包被添加 体的J2me平台上。Optional PackageProfileConfigurationJava Virtual MachineHost Operating System2J2ME 及 技术表21 J2ME平台的体 2 2 2 蓝牙技术所蓝牙(Bluetooth)技术,实际上是一 fifl技术,利用蓝牙 技术,能够地简化掌上 、 本 移动话手机等移动设备之间的,也能够成功地简化以上这些设备 特Internet之间的,而使这些现 设备 特之间的 ”更加高,为fifl 。蓝牙采用 以及快 包技术,持点对点及点对点,工作在全用的2.4GHz ISM即工业、 。其 为1Mbps。采用 双工 实现全双工。2 2 Java蓝牙应用 200245日。Java开发 区(JCP)发 了基于J2ME平台的蓝牙API规范 JSR82,这是 一个fl对蓝牙开发 的标准。蓝牙标准是一开 的标准,由蓝牙技术 (SIG,SpecialInterest Group) 。蓝牙技术的”版本是2.0, 上的蓝牙设备大 在1.1版本。开发基于蓝牙的应用程序采用 一服务 的应用程序 。服务(Service)是的 所在,一个蓝牙服务 是一个作为服务 运行的应用程序。这个服务向 提供功能性的服务。如, 可以 机,使用提供的 服务。开发 一 了一个服务之 这个服务服务 (Service Discovery DataBase.SDDB)中, 等 。 必过服务发现 (SDP) 服务所在的设备, 在设备上 服务。一 了服务,也 了 服务 的URL。 用 的 即可 的Connection , 可以 地使用服务 提供的服务了。2 2 Java蓝牙API java蓝牙fifl技术API定 在javax.Bluetooth javax.obex内。Javax.bluetooth:包了的API。包发现服务,设备 ,L2CAP等 。Javax.obex:一个不于蓝牙 API的 交换包, 于高 API。这个包并不是必 的。由于 移动设备持OBEX,本文 讨 iavax.bluetooth包的实现。在javax.bluetooth中我们发现,Java蓝牙API可以被 解为三个部 :设备 ,服务发现 。2 2 5 蓝牙应用的实现fi 服务 是 。蓝牙程序的 一 是行初始化。该阶 是 LocalDevice 交。 过getLocalDevice() 取LocalDevice实对象,如果是服务, 调用setDiscoverable () 设置好 . private LocalDevice localDevice /本地设备实String localBTAddress /本地蓝牙地址String localBTName /蓝牙名称DiscoveryAgent agent /发现 trylocalDevice=LocalDevice.getlocalDevice() /取本地设备实If(!localDevice.setDiscoverable(DiscoveryAgent.GIAC)基于J2ME+蓝牙技术的休闲娱乐平台/设置服务 可发现return false localBTAddress=localDevice.getBluetoothAddess();/ 录蓝牙地址localBTName=localDevice.getFriendlyName() / 录蓝牙名称agent=localDevice.getDicoveryAgent() /取蓝牙 catch(Exception e)System.err.println(“初始化蓝牙设备失败: +e) 一个远设备 RemoteDevice的实 表了一个远蓝牙设备。在一个蓝牙 应用程序可以行服务 消 之前 必发送一个设备请求来发现远设备。典 的蓝牙应用程序 远设备之间的 是一对。String remoteBTAddress /远蓝牙地址String remoteBTName /远蓝牙名称RemoteDevice remoteDevice /远设备StreamConnection con / trycon=(StreamConnection)Connector.open(url) /开 remoteDevice=RemoteDevice getRemoteDevice(con) / 取远设备remoteBTAddrem=remoteDevice getBluetoothAddress() /取远设备蓝牙地址remoteBTName=rvmoteMce getFriendlyName(false) /取远设备名称catch(Exception e)/处 异在蓝牙fifl 中。 不能直 服务的蓝牙地址,而 使用服务发现API帮 周围提供的设备 服务。为了消 一服务 过三个 骤: 设备 服务 。服务 (DiscoveryAgent)同 持设备 服务的发现。当设备 服务被发现 ,想知的 应用程序必实现并DiscoveryListener 这个 定 了设备发现知 服务发现知的回调。服务的 :在 的URL中 机名称告诉 工 是否应该 一个 异 服务 。如果使用单词localhost作为 机名 定 一个服务 。 想一个指定的的服务可以过调用ServiceRecord.getConnectionURL()来 该服务 的URL。蓝牙可以持 的 :(1)使用服务 : 过L2CAPconnectionNotifier StreamConnectionNotifier立一个 ,同 一个蓝牙服务。L2CAPConnectionNotifier notifier=(L2CAPConnectionNotifier)Connector open(url) 调用acceptAndOpen() J2ME 及 技术,该 会自动 服务蓝牙发现 中(SDDB) 之 该服务 可以被 了。该 同 返回一个用于的 。L2CAPConnection con=notifier.acceptAndOpen() (2)使用 :虽 也是过Connector.open(url) 立 url不是直 给出的,而是过serviceRecord.getConnectionURL() 如:String url=secviceRecord getConnectionURL(int requiredSecurity,boolean mustBeMaster) L2CAPConnection con=(L2CAPConneetion)Connector.open(url) 5基于J2ME+蓝牙技术的休闲娱乐平台3 系统分析与实现3.1系统功能设计根 软件的开发目的, 实现以下功能:用登录,双人 ,人 ,双人对战,平台帮 。组织 如“3-1:“3-1用登录 块:实现平台的蓝牙用登录,区别不同的用以及服务。块:实现平台的双人 人 功能。游戏 块:实现平台的双人蓝牙对战功能。帮 块:平台的版本息及游戏规则 明。3.2系统构架平台设 所用技术 :(1)JSR82蓝牙 程API (2)fl程 程 (3) /服务 程 。平台工程全部 “3-2:6 实现“3-27基于J2ME+蓝牙技术的休闲娱乐平台3.3系统实现 1 MIDLET flat包中的FlatMainMDlet.java文件中的FlatMainMIDlet 是整个程序的 ,功能是制整个程序的 程 个人程序的显示。 如下:package flat;import javax.microedition.lcdui.Display;import javax.microedition.midlet.MIDlet;import javax.microedition.midlet.MIDletStateChangeException;/* */* FlatMainMIDlet 游戏娱乐平台的 * 整个平台的运作*/public class FlatMainMIDlet extends MIDlet/*/*登录窗 */protected LoginWindow loginWindow = null;/*/*游戏娱乐平台的菜单*/protected MainMenu flatMenu = null ;private boolean isFirst = true; public Display display = null;/* */* 休闲娱乐平台的初使化 FlatMainMIDlet的 造函 * 行游戏的初始化*/public FlatMainMIDlet() display = Display.getDisplay(this);/* */*程序 */protected void destroyApp(boolean uncondition) throws MIDletStateChangeExceptionnotifyDestroyed();/* */*程序暂 */protected void pauseApp() ./* */*程序开始*/8 实现protected void startApp() throws MIDletStateChangeException if(isFirst)loginWindow = new LoginWindow(this);display.setCurrent(loginWindow);isFirst = false;/* */*显示 菜单*/public void showFlatMenu()if(flatMenu!=null)display.setCurrent(flatMenu); /* */*退出休闲平台*/public void exitFlat().try .destroyApp(true); catch (MIDletStateChangeException e) ./*/*FlatMainMIDlet.java文件 */ 2 蓝牙 服务common包中 个 对于整个 来 是非重 的,同 们涉及JSR82API的应用,所以这个包中的 个 的功能实现是一个技术点。介绍ServiceSearcher ,ServiceSearcher 实现 个 , 一个 是Runnable,这样做的目的是使其成为一个fl程 ,其 调用的 候 是会在 台产生一个任务fl程。 二个 是DiscoveryListener,目的是 利用JSR82中的API, 蓝牙 设备 服务的 是不难 解的, 体的实现如 所示, 里边利用了fl程同 的机制,如 取用服务 录 性的值 。 如下:package common;import java.util.Vector;import javax.bluetooth.BluetoothStateException;import javax.bluetooth.DeviceClass;import javax.bluetooth.DiscoveryAgent;import javax.bluetooth.DiscoveryListener;import javax.bluetooth.LocalDevice;9基于J2ME+蓝牙技术的休闲娱乐平台import javax.bluetooth.RemoteDevice;import javax.bluetooth.ServiceRecord;import javax.bluetooth.UUID;* ServiceSearcher * 用于 服务* UUID-11111111111111111111111111111111* 个 * UUID-22222222222222222222222222222222* 个 public class ServiceSearcher implements Runnable, DiscoveryListener ./*/*服务 名*/private String serviceName = null;/*/* 列表 */private RoomList chatRoomList = null;/*/*本地设备*/private LocalDevice localDevice = null;/*/*服务 */private DiscoveryAgent agent = null;/*/*发现的设备*/private Vector deviceFound = null;/*/*发现的服务*/private Vector serviceFound = null;public ServiceSearcher(String serviceName,RoomList roomList).this.serviceName = serviceName;this.chatRoomList = roomList;/*/*开始 fl程*/new Thread(this).start();/* */* 开始 */public void run() .doSearchDevices();/* */* 服务 录 的 */public void doSearchDevices().10 实现try .localDevice = LocalDevice.getLocalDevice(); catch (BluetoothStateException e) .e.printStackTrace();agent = localDevice.getDiscoveryAgent();deviceFound = new Vector();serviceFound = new Vector();try .if(!agent.startInquiry(DiscoveryAgent.GIAC, this).return; catch (BluetoothStateException e) ./* */* 服务 的 * param remoteDevice* return void */public void doServiceSearch(RemoteDevice remoteDevice)./*/*服务 录 性值的ID,用自定 的 性值*/int attributes = .0x1234,0x1235;/*/*服务 录的UUID*/UUID uuids = new UUID2;uuids0 = new UUID(serviceName, false);uuids1 = new UUID(0x1101);try .agent.searchServices(attributes, uuids, remoteDevice, this);catch (BluetoothStateException e) ./*/*服务 失败的处 */return; /* */* 服务 设备发现的处 * param remoteDevice, deviceClasss* return void */11基于J2ME+蓝牙技术的休闲娱乐平台public void deviceDiscovered(RemoteDevice remoteDevice, DeviceClass deviceClass) ./*/*加入 的服务 设备*/deviceFound.addElement(remoteDevice);/* */* 服务 设备 服务设备的处 * param disType* return void*/public void inquiryCompleted(int disType) .switch(disType). /*/*成功完成 的处 */case DiscoveryListener.INQUIRY_COMPLETED:for(int i= 0; ideviceFound.size(); i+).doServiceSearch(RemoteDevice)deviceFound.elementAt(i);/*/*实现一次 一个服务 设备的服务 录的同 */synchronized(this).try .this.wait(); catch (InterruptedException e) .e.printStackTrace();addRoomMessage(); break;case DiscoveryListener.INQUIRY_TERMINATED:break;case DiscoveryListener.INQUIRY_ERROR:break;/*/*不利用服务 完成 */public void serviceSearchCompleted(int transID, int respCode) ./* */* 服务的处 * param tarnsID, serviceRecord12 实现* return void */public void servicesDiscovered(int transID, ServiceRecord serviceRecord) ./*/*加入 的服务 录*/serviceFound.addElement(serviceRecord0);/*/*实现一次 一个服务 设备的服务 录的同 */synchronized(this).this.notifyAll();/* */* 增加 的 列表* param fi* return fi*/private void addRoomMessage().ServiceRecord tempRecord= null;chatRoomList.roomURLList = new StringserviceFound.size();chatRoomList.roomNameList = new StringserviceFound.size();/*/*删除原的String*/chatRoomList.deleteAll();for(int i=0; iserviceFound.size(); i+)./*/* 服务 的服务 录*/tempRecord = (ServiceRecord)serviceFound.elementAt(i);/*/* 服务 的服务 录的链 字符串并加入 的链 列表*/chatRoomList.roomURLListi= tempRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);/*/* 服务 录的用自定 的服务 性并加入 名的列表*/String str =(String)(tempRecord.getAttributeValue(0x1234).getValue(); chatRoomList.append(str, null);chatRoomList.roomNameListi = str; /ServiceSercher.java package common;import javax.microedition.lcdui.Command;1基于J2ME+蓝牙技术的休闲娱乐平台import javax.microedition.lcdui.CommandListener;import javax.microedition.lcdui.Displayable;import javax.microedition.lcdui.List;import chat.MultiChatRoomClient;import chat.PairChatRoomClient;import flat.FlatMainMIDlet;import game.GameClient;/* */* RoomList * 显示蓝牙 中开 的如娱乐房间的列表。* 提供给用 择入感趣兴的娱乐房间。*/public class RoomList extends List implements CommandListener ./*/* */private int roomStyle ;/*/*用名*/private String userName = null;/*/*娱乐平始的 */private FlatMainMIDlet flatMainMIDlet = null;/*/* 链 列表*/public String roomURLList = null;/*/* 名称列表, 的用妮称*/public String roomNameList = null;private static final Command cmdBack = new Command(返出,Command.BACK,1);private static final Command cmdOK = new Command(入, Command.OK,1);/* */* 造 * 完成 窗 的初使化* param title* param flatMainMIDlet* param userName*/public RoomList(String title, FlatMainMIDlet flatMainMIDlet,String userName ,String uuidString, int roomStyle).super(title, List.EXCLUSIVE);this.flatMainMIDlet = flatMainMIDlet;this.userName = userName;this.roomStyle = roomStyle;append( 房间中.,null);addCommand(cmdBack);addCommand(cmdOK);1 实现setCommandListener(this);new ServiceSearcher(uuidString,this);private void showRoomClinet(int index).switch(roomStyle).case 1:/*/*双人个 */flatMainMIDlet.display.setCurrent(new PairChatRoomClient(roomURLListindex,flatMainMIDlet,userName,roomNameListindex);break;case 2:/*/*人 */flatMainMIDlet.display.setCurrent(new MultiChatRoomClient(roomURLListindex,flatMainMIDlet,userName,roomNameListindex);break;case 3:/*/*游戏 */flatMainMIDlet.display.setCurrent(new GameClient(roomURLListindex,flatMainMIDlet);break;public void commandAction(Command command, Displayable displayable) ./*/*入 */if(command=cmdOK).if(roomURLList!=null)./*/* 择的 的序 */int index = getSelectedIndex();showRoomClinet( index);/*/*返回 菜单*/else if(command=cmdBack)15基于J2ME+蓝牙技术的休闲娱乐平台.flatMainMIDlet.showFlatMenu();/RoomList.java文件 RoomList 是ServiceSearcher 的使用 。RoomList 是利用ServceSearcher来 服务,并 果显示出来。 实现chat包中 的命名中,可以看出每个 的功能。这个包中的 是采用fl程的技术,B/S 的 程思想, 平台的B/S 一样的,不过利用了JSR82的API,蓝牙的服务 、服务search 设备发现 这 的知识。每台bluetooth功能的手机蓝牙设备 可以是服务 , 同 身份同 在。每个蓝牙设备 一个SDDB-服务 录 ,里 着服务 录表,一张表是一些服务录 性的,而服务 录的的 性是一对值,由服务 录ID 服务 录值DataElement 组成。服务 录表的服务 录 性值可 为 ,一是默认的服务 录 性,一是用自定 的服务 录 性能。每张服务 录表对应着蓝牙设备所提供的服务,每张一个IDUUID。蓝牙设备提供一个服务的 候,服务 录中会服务 录表。如下这 :/*开启服务*/server=(StreamConnectionNotifier)Connector.open(btspp:/localhost:22222222222222222222222222222222);当蓝牙设备执行这 ,会同 在自己的服务 录 中增加一个服务 录表,表中的IDUUID=22.,表中的那些默认的服务 录 性 是自动填 了,如果想增加一些用自定 的服务 录 性,可以如下 :/*服务 服务 录*/ServiceRecord record = local.getRecord(server);/*自定 服务 录 性*/DataElement elm = null;elm = new DataElement(DataElement.STRING, userName);/请意这上的 userName 这里不能为中文的,所以上登录的 候不能中文的,这可能是中文 的问题/record.setAttributeValue(0x1234, elm);elm = null;elm = new DataElement(DataElement.STRING, SCHOLAR_II);record.setAttributeValue(0x1235, elm);/*更服务 录 性*/local.updateRecord(record);着是蓝牙设备的 , 而 即服务。JSR82API所提供的机制符向对象,也 于人的思维 。 服务,向周围的人咨 是否提供这服务,如果 对 交互, 着 服务。蓝牙设备想 服务, 所做的工作 是 附近的设备, 着 问所 的设备提供哪些服务 对 的服16 实现务 录 ,是否提供自己想 的服务过UUID来判断。蓝牙设备服务 设置用自 服务 性 , 那些 性的 ,如下 :/* 服务 的服务 录*/tempRecord = (ServiceRecord)serviceFound.elementAt(i);/* 服务 的服务 录的链 字符串并加入 的链 列表*/chatRoomList.roomURLListi= tempRecord.getConnectionURL(ServiceRecord.NOAUTHENTICATE_NOENCRYPT, false);/* 服务 录的用自定 的服务 性并加入 名的列表*/String str =(String)(tempRecord.getAttributeValue(0x1234).getValue(); chatRoomList.append(str, null);chatRoomList.roomNameListi = str; 服务 的 ,在fl 的TCP/UDP链 。如果想 服务,知IP PORT 可以服务 必为运行状态,对应于蓝牙fifl讯来 , 一个 字符串,蓝牙设备 的设备发现 服务 录的 的” 果 目的 是用这个 服务 的 字符串。 字符串之 , 服务 的 一句 可以完成。/* 服务 */client = (StreamConnection)Connector.open(connectURL);服务 , 同fl 的TCP/UDP讯 一样了, 入出 , 着 可以 了。之,蓝牙设备提供的服务是发生在服务 录 中的,为了 蓝牙设备 的咨 ,使蓝牙设备 能 字符串,之 可以 ,行讯了。 蓝牙实现蓝牙 “如“3-3:“3-3WaitCanvas :调用paint()画出等 设备提示息 GameCanvas :调用GameCanvas.keyPressed() 处 键盘入并实化 绘制GameCanvas 17基于J2ME+蓝牙技术的休闲娱乐平台ResultCanvas :显示游戏胜 判定 果 Chess :抽象了盘上是否为服务 下 BtEngine :抽象了游戏的盘 以及过调用Connectcontroller 来收发息 Connectcontroller : 在BtEngine Connectcontroller 之间递坐标值 服务 判断值 EngineObserver :根 服务 判断值 启动服务 并其坐标递给Connectcontroller Server : 是 蓝牙服务 并等候服务,并 服务 的息收发 Client : 设备 服务,并 的息收发。MainMenu,入画 GameCanvas ,再根 启动服务 的 择按钮再逐次启动GameCanvas 、BtEngine 、Connectioncontroller 其 择 的fl程,来完成蓝牙的初始化。再由 下,发送息出去, 立 。由于游戏的循 在BtEngine 中,根 每秒的帧 过调用GameCanvas 的draw() 一直不 地绘制在绘制 、盘、 择 。用过GameCanvas 的按键响应来发送坐标息给Connectcontroller ,EngineObserver 再过Connectioncontroller 递给用所 择的 ,过空中 给对 。对 收下来 ,处 程 是一个对应的逆过程。问题 是 持同 。如果是状态同 的话, 立一个 于update() 来向其他实告其当前状态,而且 虑发送失败的可能。在服务 之间 立一个容 机制。如果是入同 的话, 充 虑随机果如对象的 置 位等, 为们不会被入影响。3.4系统测试 :Windows7 Build7100 RCEclipse 3.5 pulsar for Java MESun Wireless Tool Kit 2.5.2 程:在 Eclipse 工 程 的 jad 文 件 中 MicroEdition Configuration 设 置 为CLDC1.0,Microedition Profile设置为MIDP2.0, create package包成BtFlat.jar文件 BtFlat.jad文件,虑 入 业应用,所以 。启动Sun的WTK手机 拟 ,入登录,对应键盘 作为F1,F2 别对应手机 软键, 向键 手机导 键对应,回车键对应手机菜单Fire键。运行程序,入 登录如“3-4,键盘入登录用名abc,按 软键登录,入娱乐大 如“3-5。手机1(用名abc) 择 ,手机2(用名def)择 ,手机3(用名ghi) 择加入双人 , 个 ,如“3-6。择入abc的 ,手机3 手机1 如“3-7。退出 手机 游戏,手机3加入,双人游戏对战如“3-8。18 实现“3-4 “3-519基于J2ME+蓝牙技术的休闲娱乐平台“3-6“3-720 实现“3-821基于J2ME+蓝牙技术的休闲娱乐平台4结束语基于J2ME的蓝牙休闲娱乐平台开发设 实现 的产 文 完成。程序实现蓝牙的 及游戏对战功能, 量2000行 ,共20个文件,目 共58KB,”包为 个文件共97KB, 开发 个 间。这个平台可以在任持javaMIDP2.0及蓝牙的手机上运行并且行。在开发这个平台 间, 过的问题。蓝牙目之前 过, 定这个题目 ,开始看 ,这个的过程 了 当 间, 是一个的领域,一个的 战, 熟 JSR82包中的API, 文API文 , Sun WTK中附的蓝牙demo, 解蓝牙基本 程,所以 是 的 一个比大的 难,不过 是 服了这个 难。中 在 设备 部 行调的 候,在周围 台开了蓝牙的手机 , 。是如果周围三台 三台以上手机 开了蓝牙, 服务的 候 不一定能 了 的设备了,即解决设备识别的部 fi, 的力量了的解: 识别 个地
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 博图SCL官方培训
- 软包电池外观培训
- 城市交通规划合同管理论文咨询重点基础知识点
- 产品组装技能培训课件
- 【培训课件】非处方药市场推广策略
- 配方出售保密协议书模板
- 《医疗设备监测的护理》课件
- 车辆无偿借用合同协议
- 公司培训计划书
- 连锁餐厅转让合同协议
- 演唱会安保方案及应急预案
- 《新闻评论》课件 第四章 新闻评论的基本类型
- 《水电工程岩爆风险评估技术规范》(NB-T 10143-2019)
- 《齿轮介绍》课件
- 民营医院分析报告
- 中医养生与养生茶饮
- 知心慧学提分宝-数学
- 人教部编版四年级语文下册课外阅读练习题30篇(经典版)带答案解析
- 吉祥航空飞行报告
- 银行网点安全评估报告
- 职业技能鉴定指导书《变电站值班员(第二版)》高级工题库(全)
评论
0/150
提交评论