由getRemoteDevice()引发的问题

1 引言

安卓蓝牙开发中,在BluetoothAdapter中提供了getRemoteDevice()方法。通常情况,此方法可以通过设备的mac蓝牙地址来获取BluetoothDevice对象。

2 方法原型

getRemoteDevice(byte[] address)
  getRemoteDevice(String address)
  参数address需要填写设备的蓝牙mac地址,一般mac地址的形式为:44-45-53-54-00-00。该方法的返回值为BluetoothDevice对象。

3 引发问题

通常我们可以通过传递一个mac地址的方式将搜索设备与连接设备分开处理,在Activity中传递参数只需一个mac地址即可。但是在测过程中我们大致发现有以下问题:
(1) 方法耗时
  在某些特殊情况测试发现:当设备处于蓝牙广播状态,通过设备mac地址去获取设备的BluetoothDevice对象相对耗时。
(2)获取的BluetoothDevice对象存在缺陷
  当调用此方法成功获取到BluetoothDevice对象,在个别情形,调用对象的getName()方法时,返回的String为null,引发空指针问题。

4 解决方案

BluetoothDevice类实现了序列化,可以通过Intent方式传递。在通过搜索方式获取到目标BluetoothDevice对象后,最好将此对象保存,之后的连接通信等操作均使用此BluetoothDevice对象。

5.最后

最后针对Android程序员,除了上面的知识体系,我也分享一份私货,分享我从网络上收录整理的 Android学习PDF+架构视频+面试文档+源码笔记 ,还有Android开发面试专题资料,高级进阶架构资料供大家学习进阶
学习资料可以进群自取:434543138

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值