代码之家  ›  专栏  ›  技术社区  ›  Anfaje

getBluetoothLeAdvertiser()返回null

  •  3
  • Anfaje  · 技术社区  · 8 年前
    BluetoothLeAdvertiser advertiser = BluetoothAdapter.getDefaultAdapter().getBluetoothLeAdvertiser();
    

    这将返回null。我在API 21和API 23设备上进行了尝试,但结果相同。我不知道我错过了什么?

    这个应用程序构建和运行都很好,当然,直到广告商被使用,应用程序崩溃。

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

    2 回复  |  直到 8 年前
        1
  •  8
  •   Mazze    8 年前

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

    返回Bluetooth LE Advertising操作的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);
    }
    

    这应该涵盖适配器的大部分时间 无效的

        2
  •  0
  •   Abhilash Das    7 年前

    检查 mBluetoothAdapter != null && mBluetoothAdapter.isEnabled() 开始扫描之前