gpt4 book ai didi

android - BluetoothLeScanner 空对象引用

转载 作者:行者123 更新时间:2023-12-02 01:21:57 25 4
gpt4 key购买 nike

我的蓝牙应用程序有问题。当我在启动应用程序之前启用蓝牙时,一切正常。但是当我不这样做时,我的应用程序会通过 turnOn 方法请求启用蓝牙的权限。但是当我按下我的 onScan 按钮时,我收到一条错误消息:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.bluetooth.le.BluetoothLeScanner.startScan(android.bluetooth.le.ScanCallback)' on a null object reference

这是我的 onCreate 方法:
 protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//Set layout
setContentView(R.layout.activity_main);
//Bluetooth
// BluetoothManager
final BluetoothManager BTManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
BTAdapter = BTManager.getAdapter();
// BluetoothLescanner
BTScanner = BTAdapter.getBluetoothLeScanner();
//Turn on BT
turnOn();
//Ask permission for location.
requestPermission();
}

我的问题是,在调用 turnOn 方法之前生成 BTScanner,使 BTScanner 成为空对象。

关于这个问题的任何帮助都会很大。

亲切的问候,

宾森托

最佳答案

试试这个(取自我的一个项目):

类变量:

private BluetoothAdapter mBtAdapter = null;

内部 onCreate :
final BluetoothManager btManager = (BluetoothManager) getSystemService(Context.BLUETOOTH_SERVICE);
mBtAdapter = btManager.getAdapter();

checkBt(); // called at the end of onCreate
checkBt()方法:
private void checkBt() {
if (mBtAdapter == null || !mBtAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}
}

然后从那里单击“扫描”按钮:
public void onScanButton(){
if (mBtAdapter.isEnabled()){
scanLeDevice(true);
}
}

然后 scanLeDevice来电 mBtAdapter.startLeScan(mLeScanCallback);
注意:其中一些现在已弃用,但可以更新以符合新的 API。我没有花时间去做那件事。

关于android - BluetoothLeScanner 空对象引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39603070/

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