安卓蓝牙 ACTION_DISCOVERY_FINISHED 不工作

标签 android bluetooth

我已经编写了我的第一个 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 种可能的解决方案:

  1. 与其创建匿名接收器,不如使用相同的实现子类化 BroadcastReceiver,然后在您的项目 list 中声明它(请记住声明您的接收器接收您想要的这些操作)。

  2. 以这种方式从您的 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/

相关文章:

android - 无效 key 异常 : Keystore operation failed on RSA decrypt on Android device

android - android中View的爆炸动画

ios - 在 Swift 3/xCode 8 中从表视​​图 Controller 中选择数据时如何更改不同 View Controller 的标签?

c# - 如何使用 BLE 开发 Windows C# App

Android 拍照在 HTC Desire 上崩溃

android - AudioHardwareALSA::getInputBufferSize(...) 中的缓冲区计算

android - 解析 XML 的最佳实践

android - 我可以在启用配对设备的任何蓝牙时通知吗?

Android响应汽车中的蓝牙音频按钮 - ExoPlayer

ios - AVAudioRecorder/AVAudioSession 与 Apple Airpods