Android,蓝牙,getBoundedDevices返回空列表

时间:2016-01-07 22:49:58

标签: android bluetooth

我的应用程序中存在问题,基本上应该通过蓝牙连接Arduino并发送信息。首先,我想向用户显示带有蓝牙的设备列表,因此用户可以选择一个并尝试连接。但是这里开始出现问题:BluetoothAdapter上的getBoundedDevices()返回空列表。我在几台手机上检查了几个应用程序的设备:总有一些设备在蓝牙中可见,但我的应用程序没有显示。
下面我附上了我的片段代码,负责使用蓝牙(我不喜欢堆栈代码突出显示,所以我把它粘贴到Pastebin):
Code

我没有在互联网上找到任何关于此类问题的信息,而且我写的非常类似于在Android上使用蓝牙的任何教程。

更新

感谢kcoppock,我已经解决了问题。最终版本的代码,对于将来可能遇到同样问题的人,可以在这里找到:
Final version

1 个答案:

答案 0 :(得分:1)

我相信你的问题在这里:

LocalBroadcastManager.getInstance(getContext()).registerReceiver(
        broadcastReceiver, new IntentFilter(BluetoothDevice.ACTION_FOUND));

您正在使用LocalBroadcastManager进行注册(这是为了限制您发送给您的应用程序的广播范围)。注册此广播管理员不会接收系统广播。

您应该使用Activity's registerReceiver方法进行注册:

getActivity().registerReceiver(broadcastReceiver, ...);

这假设您的片段始终附加到主机活动(可能更安全,无法检查getActivity,并且从onResume()而不是onCreateView()执行此操作。

不要忘记取消注册接收器!在等效的拆卸方法中(例如,如果您使用onResume(),请在onPause()中拆除),请添加:

getActivity().unregisterReceiver(broadcastReceiver);