标签: bluetooth-device-discovery

用于蓝牙设备发现的 BroadcastReceiver 适用于一台设备,但不适用于另一台设备

代码:

我使用从此处获取的以下代码,目标 API 级别为 23(最低 API 级别为 18)。

private final BroadcastReceiver mReceiver = new BroadcastReceiver()
{
    public void onReceive(Context context, Intent intent)
    {
        String action = intent.getAction();

        if (BluetoothDevice.ACTION_FOUND.equals(action))
        {
            bluetoothDevice = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
            deviceNameTextView.setText(bluetoothDevice.getName());
        }
    }
};
Run Code Online (Sandbox Code Playgroud)

在按下按钮的事件中我调用:

IntentFilter filter = new IntentFilter(BluetoothDevice.ACTION_FOUND);
registerReceiver(mReceiver, filter);
mBluetoothAdapter.startDiscovery(); // was initialized successsfully
Run Code Online (Sandbox Code Playgroud)

我的 AndroidManifest.xml 包含:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN" />
Run Code Online (Sandbox Code Playgroud)

设备:

  1. 三星 Galaxy S III(API 级别 18)
  2. 索尼 Xperia Z3(API 级别 23)

事实:

  • 两个设备都运行完全相同的代码
  • 设备 1 可以发现设备 2(以及任何其他蓝牙设备)
  • 设备 2 …

android bluetooth bluetooth-device-discovery

2
推荐指数
1
解决办法
3123
查看次数