我已经编写了我的第一个 Android 应用程序并且一切都运行良好真的,除了......在下面的例程中,ACTION_DISCOVERY_FINISHED 似乎从未被调用(或广播 或接收或其他)。无论那个“else if”中的代码块是什么都不起作用。
我只在我的Motorola Atrix 上测试过,所以我想知道这是否是问题所在。由于我正在测试蓝牙功能,我认为我无法使用 Android 模拟器进行有效测试。
想法?
private BluetoothAdapter mBtAdapter;
mBtAdapter.startDiscovery();
private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// When discovery finds a device
if (BluetoothDevice.ACTION_FOUND.equals(action)) {
//do something
}
else if (BluetoothAdapter.ACTION_DISCOVERY_FINISHED.equals(action)) {
//do something else
}
}
}
最佳答案
2 种可能的解决方案:
与其创建匿名接收器,不如使用相同的实现子类化 BroadcastReceiver,然后在您的项目 list 中声明它(请记住声明您的接收器接收您想要的这些操作)。
以这种方式从您的 Activity/服务动态注册它:
IntentFilter filter = new IntentFilter(); filter.addAction(BluetoothDevice.ACTION_FOUND); filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED); this.registerReceiver(mReceiver, filter);
我不确定您在从 Activity/服务注册时是否必须取消注册(我知道您在从应用程序的上下文中注册时必须取消注册)所以请检查一下。
关于安卓蓝牙 ACTION_DISCOVERY_FINISHED 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7863019/