BluetoothAdapter.getDefaultAdapter()不返回null

时间:2014-06-06 17:23:39

标签: android bluetooth

这是我的第一篇文章,所以如果我做一些哑巴,请告诉我。这个问题可能看起来与其他帖子类似,但或多或​​少与我所看到的一切相反。

关于该项目的事情:

  • 我正在开发一个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 个答案:

答案 0 :(得分:3)

这似乎是特定于设备的问题。或者,您可以使用PackageManager来确定是否支持蓝牙。

PackageManager pm = context.getPackageManager();
boolean hasBluetooth = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH);

在访问相应的API之前,最好先检查一下系统功能的支持位置。