【问题标题】:getbondeddevices() not returning paired bluetooth devicesgetbondeddevices() 不返回配对的蓝牙设备
【发布时间】:2015-01-15 23:56:48
【问题描述】:

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

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。

我做错了什么或不理解?

【问题讨论】:

    标签: android bluetooth


    【解决方案1】:

    您的代码完全正确。我的应用程序中有完全相同的东西,我从来没有收到任何用户抱怨这个功能不起作用。请检查您的应用程序的其他部分。下面是我的应用程序的 sn-p,它执行相同的操作,并且我拥有与您描述的相同的权限。

    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.");
    }
    

    【讨论】:

    • 我很高兴听到这个消息。请问是什么问题?
    • 当然 - 我试图在需要转换为 ArrayList 的列表中显示 - 无法正确转换。
    • @Kasra 如何识别连接设备和配对设备?即使其中一个断开连接,我也必须连接多个设备。
    【解决方案2】:

    确保在启动Activity之前启用蓝牙状态

    BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
    if(!mBluetoothAdapter.isEnabled()) {
        mBluetoothAdapter.enable();
    }
    

    【讨论】:

      猜你喜欢
      • 2016-09-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 2015-02-14
      相关资源
      最近更新 更多