小编eha*_*noc的帖子

Android 4.0和4.1蓝牙问题.检测破碎的通信并丢弃配对

嘿所有,

据我所知,Android的蓝牙堆栈(bluez)已在4.2上被取代.即使他们可能已经修复了许多以前的问题,但由于需要支持旧版本,我仍然需要与它们进行斗争.

如果有人事先处理过这个问题并且可以解释一些问题,我将非常感激.

问题#1 - 无法检测到损坏的通信(4.0和4.1 Android,Bluez蓝牙堆栈)

蓝牙应用程序连接到我们自己的自定义SPP设备(我们使用标准UUID).它使用蓝牙服务,运行在它自己的进程上.这个应用程序要求运行蓝牙工作几个小时.

省电/屏幕锁定期间,应用程序在数据通过蓝牙无线电进入时保持活动状态,并且我还定期检查设置的警报,我请求CPU时间重新连接并继续工作(如果需要)

现在; 该系统工作正常的大部分时间,但是,在某些罕见的情况下,当屏幕锁定,并在省电模式下,对于原因,我不明白,在写入输出流(蓝牙接口),一切似乎都在没有检测到断开连接的情况下通过.spp设备仍然声明连接和配对有效但没有收到任何信息.

在Android方面,日志显示对BluetoothSocket.cpp :: writeNative的本机调用(假设它与bluez蓝牙堆栈直接相关),似乎只是将字节正确地写入蓝牙无线电而不报告任何类型的错误.

写入输出流的代码段:

public void write(byte[] bytes) {
            try {
                Log.d(LOGGER.TAG_BLUETOOTH," bluetooth bytes to write : "+bytes);
                mmOutStream.write(bytes);
                mmOutStream.flush();
                Log.d(LOGGER.TAG_BLUETOOTH," bluetooth bytes written : "+bytes);
            } catch (IOException e) { 
                e.printStackTrace();
            }
        }
Run Code Online (Sandbox Code Playgroud)

logcat:

D/com.our.app.bluetooth(8711):发送字节:[B @ 41e0bcf8

D/com.our.app.bluetooth(8711):要写的蓝牙字节:[B @ …

android bluetooth spp bluez android-bluetooth

10
推荐指数
1
解决办法
1351
查看次数

XML over Sockets是好还是坏的实践?

我一直在研究一个通过套接字传输xml一段时间的系统.我从来没有真正理解选择xml而不是自定义协议的真正优势.

但我确实看到很多开发人员(特别是原来的Web开发人员)设置了这种实现(xml over socket).

我明白这更"人性化"(这就是我一直听到的).

但,

  • Xml携带了大量的字符,导致巨大的消息,实际上内容非常简单.

  • 邮件大小各不相同,因此您需要保证以特定字符或字符串模式终止邮件.

  • 解析xml时会有更多的开销

由于所有这些原因,当我可以使用固定大小的消息使用自定义协议设置我的系统时,我仍然怀疑考虑使用针对新系统的套接字XML.避免传输大量消息并且性能在客户端大小上解析xml.

这样想我错了吗?系统架构方面的"最佳"是什么?

问候

xml sockets architecture tcp

5
推荐指数
2
解决办法
2857
查看次数

标签 统计

android ×1

android-bluetooth ×1

architecture ×1

bluetooth ×1

bluez ×1

sockets ×1

spp ×1

tcp ×1

xml ×1