gpt4 book ai didi

java - 在 BT 适配器关闭时强制停止 LE 扫描会出现 java.lang.IllegalStateException(在 NEXUS 5 和 Android 6 中)

转载 作者:行者123 更新时间:2023-12-02 12:54:04 26 4
gpt4 key购买 nike

我在禁用蓝牙时遇到此错误。谷歌搜索但没有找到解决方案。这是我的广播接收器,当蓝牙状态更改时会调用它。

private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
Log.e(LOG_TAG, "Broadcast receiver - onReceive");
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
h.removeCallbacks(runnable);
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE, BluetoothAdapter.ERROR);
switch (state) {
case BluetoothAdapter.STATE_OFF:
Log.i(LOG_TAG, "***** BLE-Bluetooth is disabled");
Toast.makeText(getApplicationContext(), "Bluetooth is disabled", Toast.LENGTH_LONG).show();
Log.i(TAG, "***** mBeaconScanner "+ mBeaconScanner);
if(null != mBeaconScanner)
mBeaconScanner.scanLeDevice(false);
break;
case BluetoothAdapter.STATE_ON:
Log.i(LOG_TAG, "***** BLE-Bluetooth is enabled");
Toast.makeText(getApplicationContext(), "Bluetooth is enabled", Toast.LENGTH_LONG).show();
if(null != mBeaconScanner)
mBeaconScanner.scanLeDevice(true);
break;
}
}
}
};

在上面的代码中,我试图在禁用蓝牙的同时停止 ble 扫描。在上面的代码方法中“mBeaconScanner.scanLeDevice(false);”重定向到:

Log.i(TAG, "***** Stopping BLE Scan for Android version " + Build.VERSION.SDK_INT);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {

if (bluetoothLeScanner != null)
{

bluetoothLeScanner.stopScan(mScanCallback);

}
} else {
mBluetoothAdapter.stopLeScan(mLeScanCallback);
}

在上面的代码 fragment 中,我在调用 bluetoothLeScanner.stopScan(mScanCallback) 方法时遇到异常。

注意:除了 Nexus 之外,此问题并非在所有设备中都能重现,而且对我来说也不会经常重现。

请建议我是否有任何解决方案。提前致谢

最佳答案

我在这里建议的唯一解决方案是注释此代码:-

//mBeaconScanner.scanLeDevice(false);

BLE 扫描的工作方式在 radio 级别相当复杂。在达到正确的扫描窗口 sleep 时间等时,需要考虑大量因素(例如功率、效率等)。
在这种特殊情况下,当 BT 适配器本身关闭时,尝试停止扫描对于 radio 而言是无效操作。很高兴 Android FW 抛出了这个异常!只需摆脱此代码,并且可能会执行一些内部应用程序特定的状态转换(如果必须的话),或者只需记录并在情况下完成BluetoothAdapter.STATE_OFF:

关于java - 在 BT 适配器关闭时强制停止 LE 扫描会出现 java.lang.IllegalStateException(在 NEXUS 5 和 Android 6 中),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44507650/

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