Поддерживает ли Android KitKat устройства, поддерживающие Bluetooth LE, в качестве периферийного устройства?

До Android 4.3 устройство Android с поддержкой Bluetooth Low Energy может выступать только в качестве центрального устройства. Как указано в Android 4.3 Bluetooth LE:

Android 4.3 (API Level 18) представляет встроенную поддержку платформы для Bluetooth Low Energy в центральной роли и предоставляет API, которые приложения могут использовать для обнаружения устройств, запросов для служб и чтения/записи характеристики.

С введением Android 4.4 KitKat можно ли теперь вести себя как периферийное устройство? Я не мог найти документацию об этом. Если нет, то нужно ли ждать Android 4.5 для получения периферийного режима BTLE на Android-устройстве? Или есть ли альтернативный способ, с помощью которого устройство Android может выступать в качестве периферийного устройства?

Ответ 1

Спасибо всем за ответы. Просто обновить, с июня 2014 года, предлагается в предварительном просмотре Android L Developer. Надеюсь увидеть его в официальном выпуске Android L. Из своего блога Новое в Android: L Developer Preview и Google Play Services 5.0:

L Developer Preview позволяет вам изучить многие новые функции и возможности следующей версии Android и предлагает все необходимое для начала разработки и тестирования на новой платформе. Вот несколько основных моментов для разработчиков:

Периферийный режим BLE. Теперь устройства Android могут работать в режиме Bluetooth Low Energy (BLE) в периферийном режиме. Приложения могут использовать эту возможность для трансляции своего присутствия на соседние устройства - например, теперь вы можете создавать приложения, которые позволяют устройству функционировать в качестве шагомера или монитора работоспособности и передавать данные на другое устройство BLE.

Update:

Плохая новость заключается в том, что режим периферийного устройства BLE будет работать только на новых устройствах Android (по дате), а именно на Nexus 6 и Nexus 9. Он не будет работать на Nexus 4/Nexus 5/nexus 7/nexus 10 даже если вы обновите его до Android 5.0. Вы можете прочитать комментарий одним из менеджеров Android Project на режим рекламы BLE нерабочий билет. Он говорит:

Мы представили периферийный режим BLE в Android 5.0 Lollipop. Nexus 6 и Nexus 9 - это первые два устройства Nexus, поддерживающие периферийный режим BLE. Из-за зависимости аппаратного набора микросхем, более старые устройства Nexus (4/5/7) не будут иметь доступ к этой функции на Lollipop.

Ответ 2

Не в этой версии, но есть доказательства того, что это скоро. Если вы посмотрите в BluetoothGatt.java в источниках android-19, есть новые методы listen и setAdvData, которых не было в android-18.
Однако это не задокументировано, поскольку я не думаю, что поддержка по-прежнему завершена. Последняя проверка в AOSP для периферийного режима была названа "LE: добавление поддержки периферийных ролей (2/4)". Кроме того, setAdvData и listen имеют следующий код:

if (mContext == null || !mContext.getResources().getBoolean(com.android.internal.R.bool.config_bluetooth_le_peripheral_mode_supported))
{
    throw new UnsupportedOperationException("BluetoothGatt#listen is blocked");
}

Глядя в android/platform_frameworks_base/blob/master/core/res/res/values ​​/config.xml из источников Android, вы можете видеть, что в настоящее время это отключено:

<!-- Boolean indicating if current platform supports BLE peripheral mode -->
<bool name="config_bluetooth_le_peripheral_mode_supported">false</bool>

Ответ 3

http://developer.android.com/sdk/api_diff/19/changes.html

Посмотрев на полную разницу api, ответ вкратце: NO

==============

Чтобы добавить поддержку периферийных ролей, вы должны получить свои грязные руки, чтобы настроить стек Bluedroid на уровне ОС, или попробуйте удачу разработчикам XDA, чтобы убедиться, что кто-то сделал это раньше. Тем не менее, я не уверен, что текущая поддержка телефонов Android на периферийных устройствах на аппаратном уровне.