我想我在这里撞墙了 . 我有两个设备:运行Android 6.0的Mediatek Desire Plus和运行Android 6.0的ASUS X008DC . 在一台设备上我运行一个ReaderActivity,另一台(ASUS)运行一个WriterActivity . ReaderActivity应该执行以下操作:
-
扫描具有特定服务UUID,UUID_1的外围设备
-
连接到设备,停止扫描,并依次开始读取服务说明中提供的特征 .
-
读取所有特征后,从外围设备启动并使用UUID,UUID_2通告服务 .
WriterActivity应该与ReaderActivity相反:
-
使用UUID,UUID_1通告给定服务
-
当连接到中央时,停止广告并一个接一个地开始提供服务(大多数是每个20字节的块)
-
提供所有特征后,停止(关闭)GATT服务器并以Central身份查找具有UUID,UUID_2的服务 .
问题是:一切都在两台设备上运行良好UNTIL第2点 . 切换角色后,两台设备都看不到对方,换句话说,WriterActivity的onScanResult从未被调用过 .
我已经尝试了几乎所有的东西:从重新启动蓝牙(使用异步BroadcastReceiver)到在给定的空闲时段中断两个设备上的扫描/广告,到停止WIFI连接,到......
我是在放弃BLE并重新使用标准蓝牙 . 它可能还不是一种稳定的技术 . 我在这里错过了什么?在此先感谢您的时间 .
编辑1:我在两个设备上都安装了Play商店的“BLE Central,Peripheral Checker”,它表示BOTH设备支持BT classic,Central和Peripheral .
1 回答
错误是一台设备,即MediaTek Desire,不需要Android 23权限请求,而另一台设备则更严格,并要求它允许扫描BLE设备 . 这是在onCreate方法中调用的函数,它修复了问题: