gpt4 book ai didi

Android BluetoothDevice createBond权限错误

转载 作者:行者123 更新时间:2023-11-29 19:20:08 26 4
gpt4 key购买 nike

我有一个项目,两者都有

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

在其中我使用(简化)调用扫描 BT 设备:

final BluetoothLeScanner scanner = BluetoothAdapter.getDefaultAdapter()
.getBluetoothLeScanner()
ArrayList<ScanFilter> scanFilters = ArrayList<>();
scanFilters.add(new ScanFilter.Builder()
.setServiceUuid(new ParcelUuid(MY_SERVICE_UUID))
.build());
ScanSettings scanSettings = new ScanSettings.Builder()
.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY)
.build();
ScanCallback scanCallback = new ScanCallback() {
@Override
void onScanFailed(int errorCode) {}
@Override
void onScanResult(int callbackType, ScanResult result) {
result.getDevice().createBond();
scanner.stopScan(this);
}
@Override
public void onBatchScanResults(List<ScanResult> results) {}
};
scanner.startScan(scanFilters, scanSettings, scanCallback);

要点是我使用我的服务扫描设备,现在只需绑定(bind)到我看到的第一个设备。我所有的特征和描述符都使用 read/write_encrypted 权限(我不知道这是否重要)。我最终看到的是两台设备上的配对屏幕,但后来当我使用 connectGatt 方法时,我失败并出现以下错误:

E/bt_btif: bta_gattc_cache_load: can't open GATT cache file /data/misc/bluetooth/gatt_cache_76fe0b7bf8dd for reading, error: No such file or directory
E/bt_att: gatt_disc_cmpl_cback() - Unable to register for service changed indication

另一方面,如果我打开 BT 设置并从那里绑定(bind)设备,一切正常! connectGatt 有效,我可以随意读取/写入数据。

createBond() 我做错了什么?

最佳答案

似乎调用 BluetoothDevice.createBond() 使用 BluetoothDevice.TRANSPORT_AUTO 来创建绑定(bind)。这不适用于所有 Android 平台并且很脆弱。相反,使用用于扫描设备的特定传输进行调用就可以了。

device.createBond(BluetoothDevice.TRANSPORT_LE)

关于Android BluetoothDevice createBond权限错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42705185/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com