Как узнать, поддерживает ли устройство Android Bluetooth Low Energy
Кажется, что первое поколение Nexus 7 не поддерживает Bluetooth Low Energy, по крайней мере, когда я точно следую инструкциям из учебника
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();
}
Конечно, я проверил, что Bluetooth включен.
Итак, вопрос в том, как узнать, если устройство поддерживает стандарт Bluetooth Low Energy?
ОБНОВЛЕНИЕ: я использую android 4.3
Ответы
Ответ 1
Ваш код действительно хорош,
Но вы точно добавляете следующий код?
<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, вы должны включить этот элемент в свой манифест приложения, но установите обязательный = "false"
Этот код работает для меня.
EDIT:
Я нашел для вас что-то хорошее в , какие устройства совместимы с функцией BLE
Ответ 2
Вы должны проверить "функцию":
PackageManager pm = ctx.getPackageManager();
boolean hasBLE = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);
Я не уверен, насколько серьезно производители это считают - единственная функция, которую я проверил, - это FEATURE_TELEPHONY, и разные производители обрабатывают ее разными способами (и загадочными), поэтому ваш пробег может отличаться, но я верю что именно так вы намерены это сделать.
Ответ 3
Архитектура Android Bluetooth полностью изменилась с Android 4.1 до 4.2. Любое устройство с Android Jelly Bean 4.2 или новее не может поддерживать Bluetooth Low Energy, потому что оно недоступно в новом стеке Bluedroid. См:
http://events.linuxfoundation.org/images/stories/slides/abs2013_rymanowski.pdf
Ответ 4
Вы правильно предоставили код, чтобы проверить, имеет ли устройство поддержки BLE. Эта проверка видит, есть ли функция android.hardware.bluetooth_le
, которая обычно хранится в файле с именем android.hardware.bluetooth_le.xml
в местоположении /system/etc/permissions
, с которым вы можете вручную перейти с файловым менеджером на устройстве Android.
Ответ 5
На самом деле N7 2012 имеет аппаратную поддержку для BLE, но ролик Google не поддерживает его. У меня есть N72012 с установленной чистотой Rom и могу подтвердить, что он может подключаться к устройствам BLE.