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),然后执行提交可靠写那个函数。一般情况下,把不同设备单独开一个界面控制会减少逻辑上的复杂性,倘若都放在一个页面很容易出现代码冗余的情况。
在判断什么时候断开连接的时候,需要一个定时器,但是这个定时器需要在时间未到而用户又开始操作的时候重置时间间隔。这个问题对我来说有点找不到头绪,不知道在哪里添加这一部分代码。尽管这些问题不大但是确实难以找到解决方案。在此分享一下,也希望大家能够分享更多相关的知识,大家相互学习。
问题:不同手机对于蓝牙连接配对的响应不同
解决方法:添加设备时进行自动配对,不弹出提示框,若配对成功则添加到数据库。配对失败使用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),然后执行提交可靠写那个函数。一般情况下,把不同设备单独开一个界面控制会减少逻辑上的复杂性,倘若都放在一个页面很容易出现代码冗余的情况。
在判断什么时候断开连接的时候,需要一个定时器,但是这个定时器需要在时间未到而用户又开始操作的时候重置时间间隔。这个问题对我来说有点找不到头绪,不知道在哪里添加这一部分代码。尽管这些问题不大但是确实难以找到解决方案。在此分享一下,也希望大家能够分享更多相关的知识,大家相互学习。
相关文章推荐
- Android中Context用法详解
- Android性能优化之常见的内存泄漏
- Android Button2.监听事件
- Android Context 上下文或者叫做场景
- Android kernel
- Android图片压缩(质量压缩和尺寸压缩 File, Stream和Bitmap)
- Android利用AccessibilityService实现自动装总结(二)
- 面向对象的六大原则(二)-- 开闭原则(切合Android,ImageLoader)
- Android增强的LinearLayout,带分隔线
- Android_YouthArea之ApeendTextView
- 从Android访问PC端的port (reverse port forwarding)
- Android学习历程11-SharedPreferences介绍
- Android应用Design Support Library完全使用实例
- 分享
- android notifyForDescendents 为false 的含义
- android Xutils 数据库操作源码分析
- Android Activity 之 重新创建
- Android Support 包一探究竟
- Android捕获程序异常退出时的错误log信息
- Android 防内存泄露的AsyncTask--WeakAsyncTask