getBluetoothLeAdvertiser()返回null

时间:2016-06-21 07:58:12

标签: android android-bluetooth bluetooth-lowenergy

BluetoothLeAdvertiser advertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();

返回null。我已尝试使用API​​ 21和API 23设备,但结果相同。我不知道我错过了什么?

应用程序构建并运行得很好,直到使用广告客户并且应用程序崩溃。

感谢您提供的任何帮助! :)

2 个答案:

答案 0 :(得分:7)

如果您查看开发者文档,请链接here。 您将在以下情况中看到返回null对象:

  

返回Bluetooth LE广告操作的BluetoothLeAdvertiser对象。如果蓝牙关闭或此设备不支持蓝牙LE广告,则返回null。

如果您不确定设备是否支持蓝牙,则应检查系统返回的BluetoothAdapter是否为null

BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
if (mBluetoothAdapter == null) {
    // Device does not support Bluetooth
}

然后,他们建议您致电isMultipleAdvertisementSupported(),看看是否首先支持。

if(!mBluetoothAdapter.isMultipleAdvertisementSupported()){
    //Device does not support Bluetooth LE
}

如果它支持BLE,您必须检查是否启用了蓝牙,如果没有,请让用户知道并解决它。

if (!mBluetoothAdapter.isEnabled()) {
Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
    startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT);
}

这应该涵盖适配器null

的大部分时间

答案 1 :(得分:0)

开始扫描前检查|