如果在Android棒棒糖中关闭蓝牙,Android ble应用程序将崩溃

如果在Android棒棒糖中关闭蓝牙,Android ble应用程序将崩溃,android,bluetooth,Android,Bluetooth,你好,我正在尝试扫描蓝牙设备上的Android棒棒糖。它工作正常,但如果关闭bluetooth,然后运行应用程序,它将崩溃,然后弹出窗口以启用蓝牙。理想情况下,如果关闭,它应该弹出窗口以启用蓝牙 这是应启用蓝牙的方法: private void enableBluetooth() { if(bluetoothAdapter == null) { //bluetoothState.setText("Bluetooth NOT supported"); } else

你好,我正在尝试扫描蓝牙设备上的Android棒棒糖。它工作正常,但如果关闭bluetooth,然后运行应用程序,它将崩溃,然后弹出窗口以启用蓝牙。理想情况下,如果关闭,它应该弹出窗口以启用蓝牙

这是应启用蓝牙的方法:

   private void enableBluetooth() { 
   if(bluetoothAdapter == null) {
     //bluetoothState.setText("Bluetooth NOT supported"); } 
   else if(!bluetoothAdapter.isEnabled()) {
     //bluetoothAdapter.enable(); 
     Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); 
     activity.startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); 
     } 
   }
开始扫描的代码

public void handleScanStart(View view) {
        foundDevices.clear();
        btArrayAdapter.clear();
        ble.startBleScan();
        scanButton.setEnabled(false);
       stopScanButton.setEnabled(true);
}
启用开始扫描

  public void startBleScan() {
        if(getScanning()) {
           return;
       }

          enableBluetooth();
         scanning = true;


         ScanFilter.Builder filterBuilder = new ScanFilter.Builder();                     //TODO currently default, scans all devices
        ScanSettings.Builder settingsBuilder = new               ScanSettings.Builder();
        settingsBuilder.setScanMode(ScanSettings.SCAN_MODE_LOW_LATENCY);
             List<ScanFilter> filters = new ArrayList<ScanFilter>();
                  filters.add(filterBuilder.build());
                   bluetoothLeScanner.startScan(filters, settingsBuilder.build(), scanCallback);

           Log.d(TAG, "Bluetooth is currently scanning...");
                      }

您可以通过对话框告诉用户蓝牙未启用,然后在用户点击OK(或点击Cancel)时为其启用蓝牙,代码如下:

final BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (!bluetoothAdapter.isEnabled()) {
 final AlertDialog.Builder builder = new AlertDialog.Builder(this);
 builder.setTitle("Bluetooth not enabled");
 builder.setMessage("Press OK to enable bluetooth");
 builder.setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {
  @Override
  public void onClick(DialogInterface dialog, int which) {
   Log.d(TAG, "Enabling bluetooth");
   bluetoothAdapter.enable();
  }
 });
 builder.setNegativeButton(android.R.string.cancel, null);
 builder.show();
}

正确的方法是,在开始扫描之前,我们必须检查BluetoothLeScanner对象是否为空,就像检查BluetoothAdapter一样

样品

if(bluetoothLeScanner != null){
             bluetoothLeScanner.startScan(filters,settingsBuilder.build(),scanCallback);

    }

你的BluetoothLeScanner似乎没有被初始化。请添加您的方法代码。private void enablebooth(){if(bluetoothAdapter==null){//bluetoothState.setText(“蓝牙不支持”);}else if(!bluetoothAdapter.isEnabled()){//bluetoothAdapter.enable();Intent enablebttent=new Intent(bluetoothAdapter.ACTION_请求_启用);activity.startActivityForResult(enableBtIntent,REQUEST_ENABLE_BT);}}这是一种使Bluetooth IT能够在android kitkat上正常工作的方法。在棒棒糖中,应用程序首先崩溃,然后显示弹出窗口以启用蓝牙。请用显示
MyActivity的代码摘录编辑上述问题。handleScanStart
if(bluetoothLeScanner != null){
             bluetoothLeScanner.startScan(filters,settingsBuilder.build(),scanCallback);

    }