我的应用程序中存在问题,基本上应该通过蓝牙连接Arduino并发送信息。首先,我想向用户显示带有蓝牙的设备列表,因此用户可以选择一个并尝试连接。但是这里开始出现问题:BluetoothAdapter上的getBoundedDevices()返回空列表。我在几台手机上检查了几个应用程序的设备:总有一些设备在蓝牙中可见,但我的应用程序没有显示。
下面我附上了我的片段代码,负责使用蓝牙(我不喜欢堆栈代码突出显示,所以我把它粘贴到Pastebin):
Code
我没有在互联网上找到任何关于此类问题的信息,而且我写的非常类似于在Android上使用蓝牙的任何教程。
感谢kcoppock,我已经解决了问题。最终版本的代码,对于将来可能遇到同样问题的人,可以在这里找到:
Final version
答案 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);