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

如何确定Android设备是否支持蓝牙低能耗,android,bluetooth,android-bluetooth,Android,Bluetooth,Android Bluetooth,Nexus7第一代似乎不支持蓝牙低能耗,至少当我完全按照教程中的步骤操作时是这样 我有以下代码的应用程序完成: if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) { Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show(); finish(); } 当然我查过了,蓝牙已经启

Nexus7第一代似乎不支持蓝牙低能耗,至少当我完全按照教程中的步骤操作时是这样

我有以下代码的应用程序完成:

 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
    finish();
}
当然我查过了,蓝牙已经启用了

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


更新:我使用的是android 4.3,你应该检查“功能”:

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

我不确定制造商对此有多认真-我自己检查过的唯一功能是feature_TELEPHONY,不同的制造商以不同的(令人困惑的)方式处理它,因此您的里程可能会有所不同,但是我相信这就是你想要的方式。

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

您的代码非常好, 但是您是否准确地添加了以下代码

<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的代码。该检查查看是否有功能
android.hardware.bluetooth\le
,该功能通常存储在名为
android.hardware.bluetooth\le.xml
的文件中,位于
/system/etc/permissions
的位置,您可以使用安卓设备中的文件管理器手动导航到该位置。

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

你说得对,他们在4.2中采用了新的蓝牙协议栈(用于nexus设备),但API中对BLE的支持是在4.3中添加的,一些nexus设备同时获得了对BLE的驱动程序支持。Tom right,我确实在android 4.3中使用了nexus 7,但它不起作用,我想它在硬件级别上不受支持。正确-原始N7没有BLE的硬件支持。哦,对不起,我一定是瞎了-我没有看到。听起来N7向您报告它没有BLE,这对于2012年的N7来说是正确的。Tom,似乎是的,但我在官方N7规范中找不到证明我使用Galaxy Tab-GT-P1010。发生了什么?我发现哪些设备与BLE功能兼容对您有好处。[太阳,第一代Nexus 7不支持BLE,第二代(2013版)。这些代码应该足以检查它,正如这里所说的,Nexus 7第一代不支持BLE