android不同版本sdk下蓝牙4.0 scancallback兼容性怎么解决?

daojo 2017-09-21 01:19:19
安卓蓝牙4.0在5.0以后用ScanCallback,在之前用LeScanCallback。我现在是在app初始化的时候就注册了一个service,在OnServiceConnected的时候开始搜索蓝牙。

本来我是直接在这个service里面,直接声明了一个成员变量private ScanCallback mScanCallback = new ScanCallback(){。。。},在变量里override onScanResult这个函数,进行设备名称判断。现在兼容性问题来了,编译没问题,一旦真机运行,在5.0以下的手机中运行的时候,就会碰到NoClassDefFoundError。为了解决这个问题,我增加了版本判断,把这个mScanCallback 变量放到了一个函数里面,public void scanLeDevice(final boolean enable) {
ScanCallback mScanCallback = new ScanCallback() {
。。。
}
}
但因为我不断在各种情况下开启scan或者停止scan,不停调用scanLeDevice等于不停new这个变量,结果导致很多空指针问题,而之前并没有。

碰到这种局面,各位有没有好的解决方案?
...全文
160 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

58,454

社区成员

发帖
与我相关
我的任务
社区描述
Java Eclipse
社区管理员
  • Eclipse
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧