您的位置:首页 > 移动开发 > Android开发

BLE Android开发中的问题

2016-01-22 20:21 302 查看
在此直说两个问题,第一是Android6.0 SDK23版本情况下开发的Android BLE APP,千万要记得在代码中申请到地理位置读取权限,否则你的APP在运行的时候会出现各种问题,另外就是除了这种方法外,另一种更直接的方法就是直接修改你APP的SDK版本号,我是改到了21,结果效果很好。

问题:不同手机对于蓝牙连接配对的响应不同

解决方法:添加设备时进行自动配对,不弹出提示框,若配对成功则添加到数据库。配对失败使用Toast的方式提示用户配对失败

自动配对就是通过反射去调用 BluetoothDevice 的 createBond 方法

/**

* 与设备配对 参考源码:platform/packages/apps/Settings.git

*/Settings/src/com/android/settings/bluetooth/CachedBluetoothDevice.java

*/

static public boolean createBond(Class btClass,
BluetoothDevicebtDevice)

throws Exception

{

Method createBondMethod =btClass.getMethod("createBond");

Boolean returnValue= (Boolean) createBondMethod.invoke(btDevice);

return returnValue.booleanValue();

}

另外BLE开发中网上各种博客上的资源基本上都是官网上的代码,其中有很多逻辑问题还是需要你自己去钻研,比如说在控制完一个设备后过了几秒需要自己断开链接,释放BluetoothGatt资源,以便其他人可以进行连接控制。如果你在控制的时候出现了失灵,也就是经常不能够实时控制的情况,那么你就要注意可靠传输的那个函数了,因为它会将你要写给BLE设备的特征值放入一个消息队列,这样就会有延迟,你需要在该函数执行后立马使用Thread.sleep(0),然后执行提交可靠写那个函数。一般情况下,把不同设备单独开一个界面控制会减少逻辑上的复杂性,倘若都放在一个页面很容易出现代码冗余的情况。

在判断什么时候断开连接的时候,需要一个定时器,但是这个定时器需要在时间未到而用户又开始操作的时候重置时间间隔。这个问题对我来说有点找不到头绪,不知道在哪里添加这一部分代码。尽管这些问题不大但是确实难以找到解决方案。在此分享一下,也希望大家能够分享更多相关的知识,大家相互学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: