Подтвердить что ты не робот

Как узнать, поддерживает ли устройство 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

4b9b3361

Ответ 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.