【技术实现步骤摘要】
一种基于安卓平台的通讯实现方法及装置
[0001]本专利技术涉及信息安全领域,尤其涉及一种基于安卓平台的通讯实现方法及装置。
技术介绍
[0002]随着蓝牙技术的发展,因其具有灵活、便利等特点,应用在很多场合,且蓝牙连接方式逐渐代替了传统的串口或USB有线连接方式。两设备之间进行蓝牙通讯时,一台设备的蓝牙模式为主模式,另一台设备的蓝牙模式为从模式。蓝牙模式为主模式的设备搜索附近从模式的设备,发起配对请求,主模式的设备与从模式的设备连接成功后可进行数据传输。从模式的设备则等待其他主模式的设备发送配对请求。现有设备的蓝牙模式能够在主模式和从模式之间切换。
[0003]现有技术中,在安卓平台下,服务端设备的蓝牙模式采用从模式时,监听多个主模式的客户端设备的连接状态,同一时刻只能与一个主模式的客户端设备进行数据通讯,在数据传输过程中,当需要发送大数据时,系统会自动分包,读特征请求被多次调用从而引发发送数据异常(例如有脏数,如发送的数据是1
‑
100,接收方会收到好几个1
‑
100),从而导致通讯不稳定。
技术实现思路
[0004]本专利技术的目的是为了克服现有技术的不足,提供一种基于安卓平台的通讯实现方法及装置。
[0005]第一方面,本专利技术实施例提供了一种基于安卓平台的通讯实现方法,适用于蓝牙模式为从模式的服务端设备,该方法包括:步骤S1:当所述服务端设备通过触发服务事件回调的写特征请求方法接收到客户端设备发送的处理请求时,解析所述处理请求并判断单线程 ...
【技术保护点】
【技术特征摘要】
1.一种基于安卓平台的通讯实现方法,其特征在于,适用于蓝牙模式为从模式的服务端设备,所述方法包括:步骤S1:当所述服务端设备通过触发服务事件回调的写特征请求方法接收到客户端设备发送的处理请求时,解析所述处理请求并判断单线程池是否执行结束,是则执行步骤S2,否则保存解析结果,生成设备忙的错误响应数据并返回给所述客户端设备,继续执行当前操作;步骤S2:所述服务端设备根据所述处理请求的解析结果进行相应处理,并根据处理结果生成响应数据,将所述响应数据返回给所述客户端设备;所述将所述响应数据返回给所述客户端设备,包括:所述服务端设备将所述响应数据作为参数置于服务事件回调的读特征请求方法中,当所述服务事件回调的读特征请求方法被触发时将所述响应数据发送给客户端设备;或,所述服务端设备通过订阅特征改变方法将所述响应数据发送给客户端设备;所述服务事件回调的读特征请求方法被触发时执行步骤Y,步骤Y:所述服务端设备将所述响应数据中偏移位置开始长度为MTU的数据发送给所述客户端设备,根据MTU更新偏移,判断是否为最后一次发送所述响应数据中的数据,是则将所述响应数据中当前偏移之后的数据发送给所述客户端设备,否则返回步骤Y;所述偏移的初始值为0;所述服务端设备通过订阅特征改变方法将所述响应数据发送给客户端设备,包括步骤L,步骤L:所述服务端设备获取MTU;判断是否为最后一次发送数据包,是则获取所述响应数据中偏移位置开始之后的数据并赋值给本地发送字节数组,根据GATT特征里的默认写类型常量和本地发送字节数组数据对GATT特征对象进行设置,将设置好的所述GATT特征对象作为参数调用订阅特征改变方法,结束,否则从所述响应数据的偏移位置开始获取长度为MTU的数据并赋值给本地发送字节数组,根据GATT特征里的默认写类型常量和本地发送字节数组数据对GATT特征对象进行设置,将设置好的所述GATT特征对象作为参数调用订阅特征改变方法,根据MTU更新偏移,再次根据所述发送次数和最大发送次数判断是否为最后一次发送数据包;所述偏移的初始值为0;所述订阅特征改变方法被调用时引发服务事件回调的消息发送方法将所述GATT特征对象中的数据包发送给所述客户端设备。2.如权利要求1所述的方法,其特征在于,所述服务端设备内设置有应用程序,所述应用程序被触发开始工作时创建单线程池,所述步骤S1之前还包括:步骤A:所述应用程序初始化服务端设备配置,构建服务使所述服务端设备处于广播状态;步骤B:当所述应用程序通过触发服务事件回调的连接状态改变方法获取客户端设备发起的连接状态,如连接状态为连接成功则所述服务端设备构建设备列表,并将客户端设备的设备信息保存到设备列表中;步骤C:当所述应用程序通过服务事件回调的MTU改变方法接收到客户端设备发起的MTU请求时,触发所述服务事件回调的MTU改变方法生成MTU散列表。3.如权利要求2所述的方法,其特征在于,当所述服务事件回调的MTU改变方法被触发
时,从所述MTU改变方法中获取连接的客户端设备的设备信息和MTU,更新所述MTU,以所述客户端设备的设备信息为键且以更新后的MTU为长度值对应保存在MTU散列表中。4.如权利要求2所述的方法,其特征在于,所述构建服务,包括:步骤A1:所述应用程序判断构建服务条件是否符合要求,是则执行步骤A2,否则提示构建服务条件不符合;步骤A2:所述应用程序构建广播设置对象,给所述广播设置对象设置是否被连接、连接超时时间、广播模式、发射功率;步骤A3:所述应用程序构建广播数据设置对象,给所述广播数据设置对象设置是否在广播中携带设备名称、是否在广播中携带信号强度;步骤A4:所述应用程序构建扫描响应的广播设置对象,给所述扫描响应的广播设置对象设置广播包中是否包含蓝牙的发射功率,通过传入新构建的服务UUID常量和新构建的服务字节数组数据添加服务数据;步骤A5:所述应用程序通过蓝牙适配器设置蓝牙名称;步骤A6:所述应用程序构建广播的结果回调;步骤A7:所述应用程序通过蓝牙广播者和所述广播设置对象、所述广播数据设置对象、所述扫描响应的广播设置对象、所述广播的结果回调来开启广播,如开启成功则执行步骤A8,如开启失败则报错;步骤A8:所述应用程序构建服务事件回调,通过蓝牙管理器和所述服务事件回调获取GATT服务器;步骤A9:所述应用程序通过新构建的描述UUID常量和预设的GATT特征里的写权限常量构建GATT描述,通过新构建的订阅UUID常量、预设的GATT特征里的订阅属性常量和所述GATT描述构建GATT订阅特征,通过新构建的写UUID常量、预设的GATT特征里的写属性常量和预设的GATT特征里的写权限常量构建GATT写特征,通过新构建的读UUID常量、预设的GATT特征里的读属性常量和预设的GATT特征里的读权限常量构建GATT读特征,通过新构建的服务UUID常量和预设的GATT服务里的主服务类型常量构建GATT服务;步骤A10:所述应用程序将所述GATT订阅特征、所述GATT写特征、所述GATT读特征添加到GATT服务中,将所述GATT服务添加到所述GATT服务器中。5.如权利要求4所述的方法,其特征在于,所述步骤A1包括:步骤A1
‑
1:所述应用程序检查权限是否符合要求,是则执行步骤A1
‑
2,否则提示用户需要申请权限;步骤A1
‑
2:所述应用程序检查服务端设备是否支持蓝牙通讯,是则执行步骤A1
‑
3,否则提示所述服务端设备不支持蓝牙通讯;步骤A1
‑
3:所述应用程序根据应用上下文调用系统接口并传入预设参数获取蓝牙管理器;步骤A1
‑
4:所述应用程序根据所述蓝牙管理器获取蓝牙适配器,根据所述蓝牙适配器判断所述服务端设备的蓝牙是否打开,是则执行步骤A1
‑
5,否则提示所述服务端设备的蓝牙未打开;步骤A1
‑
5:所述应用程序根据所述蓝牙适配器获取蓝牙广播者,并判断获取到的所述蓝牙广播者是否为空,是则提示所述服务端设备不支持蓝牙从模式,否则执行步骤A2。
6.如权利要求2所述的方法,其特征在于,当所述服务事件回调的连接状态改变方法被触发时,执行步骤T1
‑
步骤T4;步骤T1:所述应用程序从服务事件回调的连接状态改变方法中获取状态的值,并判断所述状态的值是否为第一预设值,是则执行步骤T2,否则报错;步骤T2:所述应用程序从服务事件回调的连接状态改变方法中获取新状态的值,并判断所述新状态的值,如为第二预设值则执行步骤T3,如为第三预设值则执行步骤T4,如为其他则报错;步骤T3:所述应用程序构建设备列表,并将所述客户端设备的设备信息保存到所述设备列表中;步骤T4:所述应用程序遍历所述设备列表,根据所述客户端设备的设备信息删除设备列表中对应的设备信息;遍历收数散列表,根据客户端设备的设备信息删除对应的键值对;遍历MTU散列表,根据客户端设备的设备信息删除对应的长度值。7.如权利要求1所述的方法,其特征在于,当所述服务事件回调的写特征请求方法被触发时,所述服务端设备在服务事件回调的写特征请求方法中,将所述客户端设备的设备信息为键保存在收数散列表中;将从所述写特征请求方法中获取到的处理请求转换为十六进制字符串并缓存在缓存区中,并将所述缓存区中的十六进制字符串为键值对保存在收数散列表中。8.如权利要求1所述的方法,其特征在于,所述步骤Y包括:步骤Y1:所述服务端设备的应用程序根据响应数据的长度减去偏移得到当前响应数据的大小,根据当前响应数据的大小构建对应的当前响应字节数组数据,并将响应数据从偏移位置开始的数据赋值给当前响应字节数组数据;步骤Y2:所述服务端设备的应用程序从服务事件回调的读特征请求方法中获得GATT读特征,从所述GATT读特征中获取UUID,判断获取的UUID是否与预设的读特征UUID相同,是则执行步骤Y3,否则发送失败,返回空数据响应;步骤Y3:所述服务端设备的应用程序给系统返回发送成功信息和当前响应字节数组数据,系统将接收到的当前响应字节数组数据中超过MTU长度的数据丢弃,系统通过系统接口将当前响应字节数组数据中的剩余数据发送给当前通讯的客户端设备,...
【专利技术属性】
技术研发人员:陆舟,
申请(专利权)人:飞天诚信科技股份有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。