4nt*_*ine 5 android bluetooth-lowenergy
我的应用程序可与BLE设备配合使用,并以以下方式(API 21+)搜索它们:
adapter.getBluetoothLeScanner().startScan(filters, scanSettings, this);
Run Code Online (Sandbox Code Playgroud)
它仅适用于大多数设备(例如三星),但null在某些LGE和HTC设备(使用Android 6.0)上会返回并崩溃:
由java.lang.NullPointerException引起:尝试在空对象引用
该应用程序的目标是棉花糖前的android,因此应该(应该)授予这些权限。
小智 5
我认为您可能会在adapter.enable() 之后立即调用startScan。因为 BluetoothAdapter.enable() 是一个异步调用,所以您可能会收到 NullPointer 异常,您可以尝试注册广播接收器以接收 BluetoothAdapter 状态,如下所示。
private BroadcastReceiver receiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(BluetoothAdapter.ACTION_STATE_CHANGED)) {
final int state = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
BluetoothAdapter.ERROR);
switch (state) {
case BluetoothAdapter.STATE_OFF:
break;
case BluetoothAdapter.STATE_TURNING_OFF:
break;
case BluetoothAdapter.STATE_ON:
//to check if BluetoothAdapter is enable by your code
if(enableFlag){
adapter.getBluetoothLeScanner().startScan(filters, scanSettings, callBack);
}
break;
case BluetoothAdapter.STATE_TURNING_ON:
break;
}
}
}
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3642 次 |
| 最近记录: |