BluetoothAdapter.getDefaultAdapter()不返回null

4
这是我的第一篇文章,如果我做了一些愚蠢的事情,请让我知道。这个问题看起来可能与其他帖子相似,但与我看到的其他帖子或多或少相反。
关于项目的事情:
  • 我正在开发一个运行在Android 4.0-4.4上的应用程序。
  • 我正在使用蓝牙。
  • 我正在测试一个运行Android 4.2的物理设备(Eken Necnon)。
  • 该设备没有蓝牙硬件。
我的问题是,当我尝试使用BluetoothAdapter.getDefaultAdapter()获取蓝牙适配器时,它应该返回null,但实际上却没有返回。
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();

if (mBluetoothAdapter == null) { // This does not ever return true.
    Log.w("Bluetooth", "Initializing bluetooth device failed: Bluetooth not supported.");
    return;
}

if (!mBluetoothAdapter.isEnabled()) {
    mBluetoothAdapter.enable();
}

while (mBluetoothAdapter.getState() != BluetoothAdapter.STATE_ON) {
    try {
        Log.d(TAG, "Waiting for bluetooth adapter to turn on, taking nap.");
        Thread.sleep(1000);
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
}
1个回答

4
这似乎是一个设备特定的问题。或者,您可以使用 PackageManager 查看蓝牙是否受支持。
PackageManager pm = context.getPackageManager();
boolean hasBluetooth = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);

在访问相应的API之前,检查系统功能是否支持是一种好的实践。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接