利用蓝牙通讯同步手机游戏的方法

文档序号:7773887阅读:284来源:国知局
利用蓝牙通讯同步手机游戏的方法
【专利摘要】一种利用蓝牙通讯同步手机游戏的方法,包括:1)蓝牙通讯初始化,初始化UUID类、获得LocalDevice类等操作;如果是服务端,还要设置LocalDevice,让设备处于可发现阶段;2)建立连接,要建立连接,服务端与客户端需要进行的操作完全不同;3)同步通讯,双人模式中通过先建立连接,在连接成功后再启动游戏线主程的方式可以实现游戏的同步开始。本发明能使同一游戏程序在不同手机运行时的同步,包括游戏的同步开始以及在出现非预期情况时(如由于硬件设备的原因导致蓝牙通讯过程中数据的丢失)仍能保持运行效果的同步。
【专利说明】利用蓝牙通讯同步手机游戏的方法
【技术领域】
[0001]本发明涉及一种同步手机游戏的方法,具体涉及一种利用蓝牙通讯同步手机游戏的方法。
【背景技术】
[0002]手机游戏是通讯公司开发的一项重要应用,中国3G(3rdGeneration的缩写,指第三代移动通讯技术)无线通讯网络的部署,将为无线通讯提供更可靠的连接与更高的数据传输带宽,这更为手机游戏的发展提供了坚实基础。本发明适合目前市面上大部分手机的飞行模拟对战类游戏,进一步扩充使其通过蓝牙通讯协议实现双人同时操作.实现由单人模式向双人同时操作模式的扩充.在明确双人同时操作模式的需求后,将在原有游戏系统基础上进行改造.以蓝牙作为通讯载体,使用合适的网络通讯协议进行数据通讯,从而实现不同机器上的信息同步。
[0003]本发明需要解决的最核心的问题就是如何使同一游戏程序在不同手机运行时的同步,包括游戏的同步开始以及在出现非预期情况时(如由于硬件设备的原因导致蓝牙通讯过程中数据的丢失)仍能保持运行效果的同步。文中主要应用JAVA多线程编程技术,通过模拟实现TCP网络通讯协议来解决同步通讯的问题,使通讯结果在手机屏幕中显示出来。

【发明内容】

[0004]本发明的目的在于提供一种利用蓝牙通讯同步手机游戏的方法,其能使同一游戏程序在不同手机运行时的同步,包括游戏的同步开始以及在出现非预期情况时(如由于硬件设备的原因导致蓝牙通讯过程中数据的丢失)仍能保持运行效果的同步。
[0005]本发明的技术解决方案是:
一种利用蓝牙通讯同步手机游戏的方法,其特殊之处在于,包括:
1)蓝牙通讯初始化,
初始化UUID类、获得LocalDevice类等操作;如果是服务端,还要设置LocalDevice,让设备处于可发现阶段;
当蓝牙服务线程被启动后,线程便立即运行initBTO方法进行初始化;客户线程的初始化与服务线程的初始化过程相类似,只不过需要在记录蓝牙名称之后使用aAgent=LocalDevice.getDiscoveryAgent ;,,取得蓝牙代理;
2)建立连接
要建立连接,服务端与客户端需要进行的操作完全不同;服务端执行的操作是创建服务并等待客户访问,而在客户端,需要做的是搜索发现周围的设备和服务、run O方法的代码是服务线程的运行主体,其主要功能就是创建服务、等待客户访问并启动发送、接收数据的线程;
3)同步通讯 双人模式中通过先建立连接,在连接成功后再启动游戏线主程的方式可以实现游戏的同步开始;在前面建立连接的代码中,在获得连接的一句代码之后添加“fCanvaS.startO ; ”这样一句代码即可启动所属一端的游戏主线程。
[0006]上述利用蓝牙通讯同步手机游戏的方法,其特征在于:步骤2)建立连接中如果这一切操作都顺利完成的话,服务线程的资源将被释放,其他的工作都交给了读、写数据的线程.如果以服务端的模式启动游戏,在游戏运行到以上程序代码的时候,程序通过平台所提供的API调用了主机的蓝牙设备,此时,设备会给出一些提示信息,询问用户是否允以服务端的形式建立连接;客户端的情况相对要比服务端复杂一些,在蓝牙无线网络中,客户端通常不能得到服务端的蓝牙地址,必须使用服务发现API帮助客户端搜索周围提供的设备和服务。
[0007]上述利用蓝牙通讯同步手机游戏的方法,其特征在于:步骤3)同步通讯中出现数据丢失等意外情况时,就需要特别的补救措施来确保同步.具体的补救措施在前面“同步通讯设计”部分中已经提到,这些措施通过读数据线程class ReadworkThreadextendsThread来实现;在代码中,针对数据接收线程接收到的不同数
据进行不同的操作。
[0008]本发明的优点在于:能使同一游戏程序在不同手机运行时的同步,包括游戏的同步开始以及在出现非预期情况时(如由于硬件设备的原因导致蓝牙通讯过程中数据的丢失)仍能保持运行效果的同步;合理地解决了两个难点:(I)如何正确地使用Java蓝牙无线技术API ; (2)如何合理地使用多线程技术。最终实现手机蓝牙的通讯以及控制双方的同步通讯,通过蓝牙的连接,使两个不同用户能够实现同步游戏。
【具体实施方式】
[0009]蓝牙通讯的实现
蓝牙通讯的建立,主要是通过使用Java蓝牙API中包各个类。在蓝牙连接建立前,无论是蓝牙客户端还是服务端,都需要进行设备的初始化.然后,在服务端,需要经过创建服务、等待客户访问、建立连接并通讯等步骤;在客户端,需要经过发现周围设备和服务、消费服务等步骤。包括:
1)蓝牙通讯初始化,
初始化UUID类、获得LocalDevice类等操作;如果是服务端,还要设置LocalDevice,让设备处于可发现阶段;
当蓝牙服务线程被启动后,线程便立即运行initBTO方法进行初始化;客户线程的初始化与服务线程的初始化过程相类似,只不过需要在记录蓝牙名称之后使用aAgent=LocalDevice.getDiscoveryAgent ;,,取得蓝牙代理;
2)建立连接
要建立连接,服务端与客户端需要进行的操作完全不同.服务端执行的操作是创建服务并等待客户访问,而在客户端,需要做的是搜索发现周围的设备和服务.run()方法的代码是服务线程的运行主体,其主要功能就是创建服务、等待客户访问并启动发送、接收数据的线程.如果这一切操作都顺利完成的话,服务线程的资源将被释放,其他的工作都交给了读、写数据的线程.如果以服务端的模式启动游戏,在游戏运行到以上程序代码的时候,程序通过平台所提供的API调用了主机的蓝牙设备,此时,设备会给出一些提示信息,询问用户是否允以服务端的形式建立连接.客户端的情况相对要比服务端复杂一些.在蓝牙无线网络中,客户端通常不能得到服务端的蓝牙地址,必须使用服务发现API帮助客户端搜索周围提供的设备和服务。
[0010]3)同步通讯
双人模式中通过先建立连接,在连接成功后再启动游戏线主程的方式可以实现游戏的同步开始.在前面建立连接的代码中,在获得连接的一句代码之后添加“fCanvaS.startO ; ”这样一句代码即可启动所属一端的游戏主线程.在通讯过程中,在正常情况下,通讯双方的游戏是能够同步进行的,但在出现数据丢失等意外情况时,就需要特别的补救措施来确保同步.具体的补救措施在前面“同步通讯设计”部分中已经提到,这些措施通过读数据线程class ReadworkThread extendsThread来实现.在代码中,针对数据接收线程接收到的不同数据进行不同的操作,如接收到暂停标记(100),则作出暂停的反应:将游戏开始的标记isStarted设置为假使游戏停止,并绘制出暂停画面.以服务端来说,在发生服务端无法收到客户端返回的确认接收标记时,服务端将发送数据丢失标记(1001).客户端一旦收到数据丢失标记,便将主角对象的相关信息打包后发送,服务端在收到打包数据后将数据解析后应用到它的远程对象(即客户端控制的对象)中.SendAllMesO方法是将主角对象的相关信息打包.如添加主角X轴坐标、添加分隔标记“,”、添加主角I轴坐标、添加主角的生命值、添加主角剩余的生命数、添加主角剩余的炸弹数、将有必要发送主角对象的相关信息的标记设为真等
seByAlIMes O (String str)方法是将被打包的信息(即所传如的参数)解析成正确的信息后并应用到远程对象中.如在打包数据中解析出远程对象的X轴坐标、y轴坐标、生命值、剩余的生命数、剩余的炸弹数,并能重新设置相关参数.在实际运行中,根据蓝牙通讯的基本原理,应先启动游戏服务端,再启动客户端.当服务端设备初始化成功后并开始要建立连接,由于游戏客户端仍未启动,连接将无法建立,于是服务端的游戏主线程就处于阻塞状态.客户端启动后,搜索服务,在发现感兴趣的服务后连接.一旦连接成功,便开始发送数据.在服务端,一旦连接成功,其游戏主线程就被激活,接着阻塞之前的程序继续运行.这样就实现了两台主机的同步运行。
【权利要求】
1.一种利用蓝牙通讯同步手机游戏的方法,其特征在于,包括: 1)蓝牙通讯初始化, 初始化UUID类、获得LocalDevice类等操作;如果是服务端,还要设置LocalDevice,让设备处于可发现阶段; 当蓝牙服务线程被启动后,线程便立即运行initBTO方法进行初始化;客户线程的初始化与服务线程的初始化过程相类似,只不过需要在记录蓝牙名称之后使用aAgent=LocalDevice.getDiscoveryAgent ;,,取得蓝牙代理; 2)建立连接 要建立连接,服务端与客户端需要进行的操作完全不同;服务端执行的操作是创建服务并等待客户访问,而在客户端,需要做的是搜索发现周围的设备和服务、run O方法的代码是服务线程的运行主体,其主要功能就是创建服务、等待客户访问并启动发送、接收数据的线程; 3)同步通讯 双人模式中通过先建立连接,在连接成功后再启动游戏线主程的方式可以实现游戏的同步开始;在前面建立连接的代码中,在获得连接的一句代码之后添加“fCanvaS.startO ; ”这样一句代码即可启动所属一端的游戏主线程。
2.根据权利要求1所述利用蓝牙通讯同步手机游戏的方法,其特征在于:步骤2)建立连接中如果这一切操作都顺利完成的话,服务线程的资源将被释放,其他的工作都交给了读、写数据的线程.如果以服务端的模式启动游戏,在游戏运行到以上程序代码的时候,程序通过平台所提供的API调用了主机的蓝牙设备,此时,设备会给出一些提示信息,询问用户是否允以服务端的形式建立连接;客户端的情况相对要比服务端复杂一些,在蓝牙无线网络中,客户端通常不能得到服务端的蓝牙地址,必须使用服务发现API帮助客户端搜索周围提供的设备和服务。
3.根据权利要求1所述利用蓝牙通讯同步手机游戏的方法,其特征在于:步骤3)同步通讯中出现数据丢失等意外情况时,就需要特别的补救措施来确保同步.具体的补救措施在前面“同步通讯设计”部分中已经提到,这些措施通过读数据线程class ReadworkThreadextendsThread来实现;在代码中,针对数据接收线程接收到的不同数 据进行不同的操作。
【文档编号】H04L29/08GK103533062SQ201310490141
【公开日】2014年1月22日 申请日期:2013年10月18日 优先权日:2013年10月18日
【发明者】王耀斌 申请人:陕西高新实业有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1