getbondeddevices()不返回配对的蓝牙设备

时间:2015-01-15 23:56:48

标签: android bluetooth

我试图用我的设备枚举所有配对的蓝牙设备。在设置中,我可以查看配对设备,但以下代码不会返回任何项目:

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
Set<BluetoothDevice> pairedDeviceSet = bluetoothAdapter.getBondedDevices();

我看过this以及其他使用此方法的帖子,但我似乎无法让它发挥作用。

我在Manifest.xml中拥有以下权限:

<uses-permission android:name="android.permission.BLUETOOTH" />
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

此外,如果我将其中一个配对设备置于发现模式并进行扫描,则设备将恢复配对状态。如果我检查:

device.getBondState() == BluetoothDevice.BOND_BONDED
从扫描中

,它返回true。

我做错了什么或不理解?

2 个答案:

答案 0 :(得分:4)

您的代码完全正确。我在我的应用程序中有完全相同的东西,我从来没有任何用户抱怨此功能不起作用。请检查您应用的其他部分。下面是我的应用程序的片段,它做同样的事情,我拥有你所描述的相同权限。

BluetoothAdapter mBtAdapter = BluetoothAdapter.getDefaultAdapter();

Set<BluetoothDevice> pairedDevices = mBtAdapter.getBondedDevices();

if (pairedDevices.size() > 0) {
    findViewById(R.id.title_paired_devices).setVisibility(View.VISIBLE);
    for (BluetoothDevice device : pairedDevices) {
        mPairedDevicesArrayAdapter.add(device.getName() + "\n" + device.getAddress());
    }
} else {
    mPairedDevicesArrayAdapter.add("No Paired Device.");
}

答案 1 :(得分:0)

确保在启动 for row in df: if df['D'].str.contains(' and ', case=True, na=False, regex=True):

之前启用蓝牙状态
Activity