如何确定Android设备是否支持蓝牙低功耗

时间:2013-09-18 13:44:16

标签: android bluetooth android-bluetooth

似乎Nexus 7第一代不支持蓝牙低功耗,至少当我完全按照教程中的步骤进行时

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

我确实在以下代码上完成了应用:

 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
    finish();
}

当然,我检查过蓝牙已启用。

所以问题是,如何确定设备是否支持蓝牙低功耗标准?

更新:我正在使用android 4.3

5 个答案:

答案 0 :(得分:11)

你的代码非常好, 但是你准确地添加了以下代码吗?

<uses-permission android:name="android.permission.BLUETOOTH"/>
<uses-permission android:name="android.permission.BLUETOOTH_ADMIN"/>

重要的代码是:

<uses-feature android:name="android.hardware.bluetooth_le" android:required="false"/>

因为我们需要确保应用程序可以成功运行,

  

但是,如果您希望将应用程序提供给不支持BLE的设备,您仍应在应用程序的清单中包含此元素,但必须设置required =“false”

该代码适用于我。

修改 关于which devices be compatible with BLE feature

,我找到了一些对你有用的东西

答案 1 :(得分:2)

你应该检查'功能':

PackageManager pm = ctx.getPackageManager();
boolean hasBLE = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);

我不太确定制造商对此有多认真 - 我自己检查的唯一功能是FEATURE_TELEPHONY,不同的制造商以不同(和令人费解的方式)处理它,所以你的里程可能会有所不同,但我相信这就是你打算这样做的方式。

答案 2 :(得分:0)

Android蓝牙架构从Android 4.1完全改为4.2。任何使用Android Jelly Bean 4.2或更高版本的设备都无法支持Bluetooth Low Energy,因为它在新的Bluedroid堆栈中不可用。参见:

http://events.linuxfoundation.org/images/stories/slides/abs2013_rymanowski.pdf

答案 3 :(得分:0)

您已正确提供代码以检查支持设备是否具有BLE。该检查会查看是否存在功能android.hardware.bluetooth_le,该功能通常存储在android.hardware.bluetooth_le.xml位于/system/etc/permissions的文件中,您可以使用Android设备中的文件管理器手动导航到该文件。 / p>

答案 4 :(得分:0)

实际上N7 2012确实有BLE的硬件支持,但谷歌的rom不支持它。我有一个安装了纯度Rom的N72012,可以确认它可以连接到BLE设备。