tutorial things studio scan low example ble android bluetooth android-4.0 bluetooth-lowenergy

things - bluetooth low energy android studio tutorial



¿Compatibilidad con Bluetooth Smart(4.0)/GATT en Android 4.0? (6)

Estoy tratando de encontrar la manera de trabajar con dispositivos Bluetooth 4.0 (AKA Bluetooth Smart) usando teléfonos inteligentes Android modernos, a saber, HTC One V.

Como entendí, hay algunos problemas con el uso del perfil GATT incluso en Android 4.0 con hardware Bluetooth 4.0 debido a las limitaciones de la API.

Vi que Motorola lanzó su propia API para BT LE, pero no estoy seguro de que funcione para otros proveedores. Mi objetivo es obtener soporte universal para todos los teléfonos inteligentes con el hardware adecuado.

Cualquier sugerencia de solución es muy apreciada.

Alexey

PD: Sí, vi la API de Android para HDP, pero parece que solo se utiliza con dispositivos Bluetooth "clásicos" (no con dispositivos de baja energía, como hace BT LE).



Como se descubrió, 4.3 tiene soporte para BLE, pero está muy dañado, especialmente en dispositivos Nexus. En mi opinión, no está listo para la producción.


Desafortunadamente, no existen API de GATT nativas de Android simplemente porque Android actualmente no es compatible con Bluetooth Low Energy. Esto puede cambiar en las próximas versiones de Android, pero hoy en día los fabricantes en su lugar integran pilas de Bluetooth de terceros con soporte de bajo consumo de energía de proveedores como Qualcomm, Broadcom o CSR. Esos vienen con su propio conjunto de API, lo que obviamente limita la compatibilidad con el conjunto de teléfonos que utilizan la pila de ese proveedor en particular. La buena noticia es que, en otras plataformas como iOS o Windows 8, existen API nativas de GATT BLE, y éstas están bien soportadas. Para Android, tendremos que esperar hasta que Google decida integrar el trabajo Linux / BlueZ que se ha realizado en BLE con Android.


Después de algunas investigaciones solo puedo decir esto:

  • Motorola se ha aliado con Broadcom para desarrollar una API propietaria. Parecería que es extremadamente limitado ya que afirma que solo hay soporte para los perfiles existentes. Compruébalo here .

  • Samsung no proporciona ninguna información con respecto a su API BLE, que puedo verificar que existe y se llama samsung.bluetoothle . De hecho, descompilé algunas aplicaciones de Google Play que usan las capacidades BLE del SGSIII y encontré un par de métodos que no existen en la API de BT nativa de Android, y sus nombres indican claramente que están relacionados con BLE. He intentado usarlos a través de la reflexión de Java y actualmente estoy trabajando en la posibilidad de desarrollar una biblioteca. Pero las pruebas que he realizado hasta ahora han tenido resultados inestables en el mejor de los casos. También hay un hilo en el foro de desarrolladores de Samsung, sugiero hacer algo de presión here si está interesado.

  • Google ha hecho casi ningún comentario en este aspecto. Hay un thread respecto a estos problemas en el Galaxy Nexus, que deberías destacar, con muchas personas quejándose. Lo más cercano a una respuesta de Google se puede encontrar here .

[ACTUALIZAR]

Samsung también ha modificado un par de clases de Android, más específicamente:

  • BluetoothAdapter
  • BluetoothDevice

[ACTUALIZAR]

Ya que he dejado de lado este problema por un tiempo debido a la falta de soporte tanto de Google como de Samsung, publicaré lo que he aprendido hasta ahora:

Nuevos métodos de 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()

Para usarlos haz lo siguiente:

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

NOTA: este método en particular funciona de manera similar al startDiscovery() regular startDiscovery() pero, al menos para mí, descubre el dispositivo BLE 2 de cada 5 veces. Y recuerda , esto es solo para el SGSIII . No he logrado extraer los nuevos métodos en el BluetoothDevice pero cuando lo haga, los publicaré aquí.


HTC ha tenido soporte BLE desde el año pasado con HTC One X +, Droid DNA y por supuesto el HTC One. Inicialmente, la API de HTC BLE se solicitaba, pero ahora se puede descargar gratuitamente en http://htcdev.com .

Sí, la nueva API BLE estándar de Android de Google en el nivel 18 de la API de Android llegará muy pronto (vea la vista previa del video IO), pero puede ajustar las API de terceros (HTC, Samsung, etc.) de una manera compatible para admitir la nueva API estándar ya que todas las API son bastante similares en su compatibilidad con el perfil GATT (similar a IOS).