&引用;“蓝牙共享已停止”;在Android上检测iBeacons时发出警报
我用Radius网络玩iBeacons。过了一段时间,我看到不断有警报突然冒出来:“不幸的是,蓝牙共享已停止。”带有[报告][确定]按钮 手机:搭载安卓4.4.2的Nexus5 这是一个令人沮丧的问题,因为Nexus5是目前最顶级的Android手机,而且使用iBeacons似乎在一段时间后就不起作用了。这意味着iBeacons不能在生产中使用,因为蓝牙LE不能在Android上正常工作(即使是最新版本) 只有工厂重置似乎可以解决问题,我无法要求我的应用程序用户这样做:/ 日志:&引用;“蓝牙共享已停止”;在Android上检测iBeacons时发出警报,android,bluetooth,bluetooth-lowenergy,ibeacon,ibeacon-android,Android,Bluetooth,Bluetooth Lowenergy,Ibeacon,Ibeacon Android,我用Radius网络玩iBeacons。过了一段时间,我看到不断有警报突然冒出来:“不幸的是,蓝牙共享已停止。”带有[报告][确定]按钮 手机:搭载安卓4.4.2的Nexus5 这是一个令人沮丧的问题,因为Nexus5是目前最顶级的Android手机,而且使用iBeacons似乎在一段时间后就不起作用了。这意味着iBeacons不能在生产中使用,因为蓝牙LE不能在Android上正常工作(即使是最新版本) 只有工厂重置似乎可以解决问题,我无法要求我的应用程序用户这样做:/ 日志: I/DEBUG
I/DEBUG ( 175): Build fingerprint: 'google/hammerhead/hammerhead:4.4.2/KOT49H/937116:user/release-keys'
I/DEBUG ( 175): Revision: '11'
I/DEBUG ( 175): pid: 5062, tid: 5085, name: BTIF >>> com.android.bluetooth <<<
I/DEBUG ( 175): signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 00000000
I/DEBUG ( 175): r0 ffffffff r1 00007d00 r2 00007c60 r3 74ddc308
I/DEBUG ( 175): r4 74ddc318 r5 00000000 r6 7568ea60 r7 7512d595
I/DEBUG ( 175): r8 00000002 r9 7568ea54 sl 751638cd fp 00000004
I/DEBUG ( 175): ip 00000000 sp 7568ea10 lr 750ad68d pc 750ad6b0 cpsr 600f0030
I/DEBUG ( 175): d0 000000000000000f d1 746f6d65725f6464
I/DEBUG ( 175): d2 000000cc00000069 d3 754bde5000000066
I/DEBUG ( 175): d4 0034003a00440045 d5 00390033003a0033
I/DEBUG ( 175): d6 003a00370038003a d7 0030003a00380034
I/DEBUG ( 175): d8 0000000000000000 d9 0000000000000000
I/DEBUG ( 175): d10 0000000000000000 d11 0000000000000000
I/DEBUG ( 175): d12 0000000000000000 d13 0000000000000000
I/DEBUG ( 175): d14 0000000000000000 d15 0000000000000000
I/DEBUG ( 175): d16 3fe8000000000000 d17 3fc999999999999a
I/DEBUG ( 175): d18 0000000000000000 d19 0000000000000000
I/DEBUG ( 175): d20 0000000000000000 d21 0000004400000044
I/DEBUG ( 175): d22 0000000000000000 d23 0000000000000000
I/DEBUG ( 175): d24 0000000000000000 d25 0002a7600002a760
I/DEBUG ( 175): d26 0707070703030303 d27 0300000004000000
I/DEBUG ( 175): d28 0800000009000000 d29 0001000000010000
I/DEBUG ( 175): d30 010b400001088000 d31 01108000010e0000
I/DEBUG ( 175): scr 60000010
I/DEBUG ( 175):
I/DEBUG ( 175): backtrace:
I/DEBUG ( 175): #00 pc 0004e6b0 /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): #01 pc 0004ea89 /system/lib/hw/bluetooth.default.so (btif_config_set+156)
I/DEBUG ( 175): #02 pc 0004eb91 /system/lib/hw/bluetooth.default.so (btif_config_set_int+20)
I/DEBUG ( 175): #03 pc 000345cd /system/lib/hw/bluetooth.default.so (btif_storage_set_remote_addr_type+36)
I/DEBUG ( 175): #04 pc 0004adbd /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): #05 pc 0002f091 /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): #06 pc 000553bd /system/lib/hw/bluetooth.default.so (gki_task_entry+92)
I/DEBUG ( 175): #07 pc 0000d170 /system/lib/libc.so (__thread_entry+72)
I/DEBUG ( 175): #08 pc 0000d308 /system/lib/libc.so (pthread_create+240)
I/DEBUG ( 175):
I/DEBUG ( 175): stack:
I/DEBUG ( 175): 7568e9d0 00000000
I/DEBUG ( 175): 7568e9d4 4156f52d /system/lib/libdvm.so
I/DEBUG ( 175): 7568e9d8 00004000
I/DEBUG ( 175): 7568e9dc 7568ea71 [stack:5085]
I/DEBUG ( 175): 7568e9e0 415d70d0
I/DEBUG ( 175): 7568e9e4 7fffffee
I/DEBUG ( 175): 7568e9e8 75587bd0 [anon:libc_malloc]
I/DEBUG ( 175): 7568e9ec 000007c6
I/DEBUG ( 175): 7568e9f0 74ddc318 [anon:libc_malloc]
I/DEBUG ( 175): 7568e9f4 00007c60
I/DEBUG ( 175): 7568e9f8 00007c60
I/DEBUG ( 175): 7568e9fc 74ddc308 [anon:libc_malloc]
I/DEBUG ( 175): 7568ea00 74ddc318 [anon:libc_malloc]
I/DEBUG ( 175): 7568ea04 000007c6
I/DEBUG ( 175): 7568ea08 7568ea60 [stack:5085]
I/DEBUG ( 175): 7568ea0c 750ad68d /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): #00 7568ea10 00000041
I/DEBUG ( 175): 7568ea14 7512f561 /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): 7568ea18 7568ea60 [stack:5085]
I/DEBUG ( 175): 7568ea1c 750ada8d /system/lib/hw/bluetooth.default.so (btif_config_set+160)
I/DEBUG ( 175): #01 7568ea20 7568ea54 [stack:5085]
I/DEBUG ( 175): 7568ea24 7568ea54 [stack:5085]
I/DEBUG ( 175): 7568ea28 00000001
I/DEBUG ( 175): 7568ea2c 00000001
I/DEBUG ( 175): 7568ea30 764b890a [anon:libc_malloc]
I/DEBUG ( 175): 7568ea34 40146384
I/DEBUG ( 175): 7568ea38 7516ea94
I/DEBUG ( 175): 7568ea3c 00000007
I/DEBUG ( 175): 7568ea40 7512dff5 /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): 7568ea44 750adb95 /system/lib/hw/bluetooth.default.so (btif_config_set_int+24)
I/DEBUG ( 175): #02 7568ea48 00000004
I/DEBUG ( 175): 7568ea4c 00000002
I/DEBUG ( 175): 7568ea50 7512f561 /system/lib/hw/bluetooth.default.so
I/DEBUG ( 175): 7568ea54 00000001
I/DEBUG ( 175): 7568ea58 40146384
I/DEBUG ( 175): 7568ea5c 750935d1 /system/lib/hw/bluetooth.default.so (btif_storage_set_remote_addr_type+40)
I/DEBUG(175):构建指纹:“google/hammerhead/hammerhead:4.4.2/KOT49H/937116:用户/发布密钥”
I/DEBUG(175):修订版:“11”
I/DEBUG(175):pid:5062,tid:5085,name:BTIF>>>>com.android.bluetooth编辑:现在有了部分解决方案
好消息是,这个低级的安卓bug在很大程度上影响了在蓝牙开发商店工作的开发人员或人员,他们在同一个地方接触过大量的蓝牙设备。参加BLE或iBeacon hackathon几乎肯定会触发它。幸运的是,我们应用程序的大多数最终用户都没有这样做
当保存最近扫描的蓝牙LE Mac地址的内部缓冲区填满时,会触发此错误。填充后,扫描新的蓝牙LE设备将导致Android的蓝牙服务崩溃并重新启动。您看到的对话框来自Android的Bluetooth Share服务,该服务无法干净地处理Bluetooth服务的重新启动,并自行崩溃。这是你的电话号码
该漏洞可能会影响任何进行蓝牙LE扫描或查找iBeacons的应用程序或库,而不仅仅是Android iBeacon库。但是,并不是所有的用户都能体验到它。我在Radius网络公司工作,那里有几十台蓝牙LE设备一直在传输数据,我花了四个月的时间才在Nexus 4上看到这个对话框——它两周前才出现。从那以后,我一直在努力描述这个问题并找到解决办法
我已经能够通过进入飞行模式几秒钟然后出来来清除这种情况。然而,这并不是永久性的修复,因为再次溢出Android的缓冲区将导致它返回。我们仍在研究更多的自动化解决方案。我的Nexus 5的可能复制品在没有暴露于四个以上信标的情况下遇到了此问题。此外,今天早上早些时候还不错,当我在附近用这四个信标进行测试时,简单错误开始出现。这个故事还有很多。如果信标旋转其mac地址(例如万向节信标),那么即使是单个信标也可能导致这种情况,因为每个mac地址在android上都是不同的设备。谢谢David!这些是estimote信标,因此没有旋转mac地址。可能是因为您的mac地址表在Bluedroid堆栈中已经满了,因为之前有大量设备(或旋转mac的设备数量较少)。如果桌子已经满了,即使是在几台设备附近,也会使桌子超过极限,导致崩溃。