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