25

似乎 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();
}

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

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

更新:我使用的是安卓 4.3

4

5 回答 5

13

您的代码确实不错,但是您是否准确添加了以下代码?

<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"

该代码对我有用。

编辑: 我发现了一些关于哪些设备与 BLE 功能兼容的好处

于 2013-10-02T10:30:31.097 回答
3

您应该检查“功能”:

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

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

于 2013-09-18T16:12:09.877 回答
0

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

于 2015-04-07T14:27:36.753 回答
0

Android 蓝牙架构从 Android 4.1 完全改变到 4.2。任何装有 Android Jelly Bean 4.2 或更高版本的设备都不能支持低功耗蓝牙,因为它在新的 Bluedroid 堆栈中不可用。看:

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

于 2013-09-18T18:45:28.550 回答
0

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

于 2014-03-28T14:29:24.737 回答