Вопрос по android, android-4.0-ice-cream-sandwich, bluetooth-lowenergy, bluetooth – Bluetooth Smart (4.0) / поддержка GATT в Android 4.0?

28

Я пытаюсь найти способ работы с устройствами Bluetooth 4.0 (AKA Bluetooth Smart) с использованием современных смартфонов Android, а именно - HTC One V.

Как я понял, из-за ограничений API есть некоторые проблемы с использованием профиля GATT даже в Android 4.0 с аппаратным обеспечением Bluetooth 4.0.

Я видел, что Motorola выпустила собственный API для BT LE, но не уверен, что он будет работать для других поставщиков. Моя цель - получить универсальную поддержку для всех смартфонов с соответствующим оборудованием.

Любые предложения для решения высоко ценятся.

Алексей

PS: Да, я видел Android API для HDP, но, похоже, он используется только с «классическим» Устройства Bluetooth (не энергосберегающие, как BT LE).

Вот официальное заявление о BLE от сотрудников Google на последней IOdevelopers.google.com/events/io/sessions/326240948 Все устройства с аппаратным обеспечением 4.3 и BLE будут иметь официальный API Android BLE, который демонстрируется на этом видео-сеансе. OneWorld
Samsung опубликовалBluetooth BLE SDK (beta), Смотрите этот вопросstackoverflow.com/questions/11104708/… OneWorld

Ваш Ответ

6   ответов
0

Как выяснилось, 4.3 имеет поддержку BLE, но она так не работает, особенно на устройствах Nexus. По моему мнению, он не готов к производству.

1

HTC имеет поддержку BLE с прошлого года с HTC One X +, Droid DNA и, конечно, HTC One. Первоначально API HTC BLE предоставлялся по запросу, но теперь его можно бесплатно загрузить по адресуhttp://htcdev.com.

Да, новый стандартный Android BLE API от Google в Android API Level 18 появится очень скоро (см. Предварительный просмотр видео IO) - но вы можете совместить сторонние API (HTC, Samsung и т. Д.) Совместимым способом для поддержки нового стандартного API поскольку все API довольно похожи в своей поддержке профиля GATT (аналогично IOS).

13

После некоторых исследований я могу только сказать следующее:

  • Motorola has sided with Broadcom to develop a proprietary API. It would seem it is extremely limited since it states there's support for existing profiles only. Check it out here.

  • Samsung fails to provide any information regarding its BLE API, which I can verify exists and is called samsung.bluetoothle. I actually decompiled some apps from Google Play that use the SGSIII's BLE capabilities and found a couple of methods that do not exist in Android's native BT API, and they're names clearly state they're BLE related. I've tried using them through java reflection and am currently working out the possibility of developing a library. But tests I've run so far have had shakey results at best. There is also a thread on Samsung's developer forum, I would suggest making some pressure here if you're interested.

  • Google has made almost no remarks in this aspect. There's a thread regarding this issues in the Galaxy Nexus, which you should star, with a lot of people complaining. The closest thing to an answer from Google can be found here.

[UPDATE]

Samsung также изменил несколько классов Android, в частности:

  • BluetoothAdapter
  • BluetoothDevice

[UPDATE]

Поскольку я отложил эту проблему на некоторое время из-за отсутствия поддержки со стороны Google и Samsung, я опубликую то, что узнал до сих пор:

BluetoothAdapter новые методы:

public boolean android.bluetooth.BluetoothAdapter.leTestEnd()
public boolean android.bluetooth.BluetoothAdapter.setAvStreaming(boolean)
public boolean android.bluetooth.BluetoothAdapter.setScanLE(boolean)
public void android.bluetooth.BluetoothAdapter.setScoPathChange(int)
public boolean android.bluetooth.BluetoothAdapter.startLeDiscovery()

Для их использования сделайте следующее:

BluetoothAdapter ba = new BluetoothAdapter();
Method starteLeDiscoveryMethod = null;
starteLeDiscoveryMethod = ba.class.getMethod("startLeDiscovery");
starteLeDiscoveryMethod.invoke(ba);

ПРИМЕЧАНИЕ. Этот метод, в частности, работает как обычныйstartDiscovery() метод, но, по крайней мере для меня, он обнаруживает устройство BLE 2 из 5 раз. А такжеrememberэто только дляSGSIII, Я не удосужился извлечь новые методы вBluetoothDevice но когда я это сделаю, я опубликую их здесь.

Да, так и было сказано в записке (сколько раз он работал, не заметил проблему сбоя).
Я могу подтвердить, что этот код работает на Android 4.1.1 Samsung SGIII. Какие-нибудь дальнейшие открытия родкаром?
Вы заметите, что в трех случаях из пяти это не работает, если вы попытаетесь отключить Bluetooth, телефон сломается.
Мне, скорее всего, придется разработать как можно более кроссплатформенную платформу. решение для BLE на Android в течение следующей недели. Есть ли шанс, что у вас есть пример кода, который может помочь мне в моих поисках? В сети не так много, как мне бы хотелось.
Я прошу прощения, чтобы сообщить вам, что невозможно разработать кроссплатформенное решение. Имейте в виду, что единственными возможностями являются API-интерфейс Mototola и то, что я собирал до сих пор.
26

К сожалению, нет собственных API GATT для Android просто потому, что Android в настоящее время вообще не поддерживает Bluetooth Low Energy. Это может измениться в следующих выпусках Android, но сегодня производители вместо этого интегрируют стеки Bluetooth сторонних производителей с поддержкой Low Energy от таких поставщиков, как Qualcomm, Broadcom или CSR. Они поставляются со своим собственным набором API, очевидно ограничивающим совместимость с набором телефонов, использующих стек данного конкретного поставщика. Хорошей новостью является то, что на других платформах, таких как iOS или Windows 8, есть собственные API-интерфейсы GATT BLE, и они хорошо поддерживаются. Для Android нам придется подождать, пока Google не решит интегрировать работу Linux / BlueZ, которая была проделана на BLE с Android.

Как я понял, никаких движений по этому вопросу не было сделано в Android 4.1 :( AlexeyVMP
Более того, похоже, что Motorola прервала поддержку BLE в RAZR с обновлением ICS. AlexeyVMP
Я фактически декомпилировал некоторые приложения из Google Play, которые используют возможности BLE SGSIII, и обнаружил пару методов, которых нет в родном BT API Android, и в их именах четко указано, что они связаны с BLE. Я пытался использовать их с помощью Java-рефлексии и в настоящее время прорабатываю возможность разработки библиотеки. Но испытания, которые я проводил до сих пор, имели шаткие результаты.
Спасибо. Не могли бы вы предоставить поставщиков, которые предлагают пользовательские BT LE Android SDK для своих платформ? (кроме Motorola) AlexeyVMP
Вы проверили этот API для чипа Broadcom?code.google.com/p/broadcom-ble
2

SDK 18 поддерживает это сейчас. Документы здесь:

http://developer.android.com/guide/topics/connectivity/bluetooth-le.html

Тестирование на моем Nexus 4 приводит к сбою стека Bluetooth.

0

Похожие вопросы