28 votes

Prise en charge de Bluetooth Smart (4.0) / GATT dans Android 4.0?

J'essaie de trouver la façon de travailler avec le Bluetooth 4.0 (AKA Bluetooth Smart) appareils utilisant des smartphones Android, à savoir le HTC One V.

Comme je l'ai compris, il y a quelques problèmes à l'aide du GATT de profil même de l'Androïde 4,0 avec le Bluetooth 4.0 matériel en raison de limitations de l'API.

J'ai vu Motorola a publié sa propre API pour LE BT, mais pas sûr que cela fonctionne pour d'autres fournisseurs. Mon objectif est d'obtenir un soutien universel pour tous les smartphones avec le matériel approprié.

Toute suggestion de solution sont très appréciés.

Alexey

PS: Oui, j'ai vu l'API Android pour le HDP, mais il semble être utilisé uniquement avec des "classiques" périphériques Bluetooth (pas de basse énergie, comme LE BT n').

26voto

introiboad Points 557

Malheureusement, il n'y a pas natif Android GATT Api simplement parce qu'Android ne prend actuellement pas en charge Bluetooth à Faible Énergie. Cela pourrait changer dans les prochaines versions d'Android, mais aujourd'hui, les fabricants au lieu d'intégrer de la 3e partie piles Bluetooth à Faible Énergie de soutien auprès de fournisseurs comme Qualcomm, Broadcom ou de la RSE. Ceux qui viennent avec leur propre ensemble d'Api, évidemment limiter la compatibilité de l'ensemble des téléphones portables utilisant un fournisseur particulier de la pile. La bonne nouvelle, c'est que sur les autres plateformes comme iOS ou Windows 8 il y a native GATT de BLE Api, et ceux-ci sont bien pris en charge. Pour Android, il faudra attendre jusqu'à ce que Google décide d'intégrer la Linux/BlueZ travail qui a été fait sur la BLE avec Android.

13voto

rodkarom Points 665

Après quelques recherches, je peux seulement dire ceci:

  • Motorola a face avec Broadcom pour développer une API propriétaire. Il semblerait qu'il est extrêmement limitée, qu'il s'états il y a le support pour les profils existants seulement. Check it out ici.

  • Samsung ne fournit aucune information concernant sa BLE de l'API, qui je peux vérifier existe et est appelé samsung.bluetoothle. J'ai effectivement décompilé certaines applications de Google Play qui utilisent le SGSIII du BLE capacités et trouvé un couple de méthodes qui n'existent pas dans Android natif de BT API, et ils sont des noms d'indiquer clairement qu'ils sont BLE liés. J'ai essayé de les utiliser par le biais de réflexion java et je suis actuellement en train de travailler sur la possibilité de développement d'une bibliothèque. Mais les tests que j'ai rencontré jusqu'à présent ont eu shakey résultats, au mieux. Il y a aussi un fil sur Samsung developer forum, je suggère de faire un peu de pression ici si vous êtes intéressé.

  • Google n'a fait presque aucun des remarques sur cet aspect. Il y a un thread concernant cette question dans le Galaxy Nexus, qui vous devriez étoiles, avec beaucoup de gens se plaindre. La chose la plus proche à une réponse de Google peut être trouvé ici.

[Mise à JOUR]

Samsung a également modifié un couple de Android classes, plus especifically:

  • BluetoothAdapter
  • BluetoothDevice

[Mise à JOUR]

Depuis que j'ai mis cette question de côté pour un certain temps en raison du manque de soutien de Google et Samsung, je vais poster ce que j'ai appris jusqu'à maintenant:

BluetoothAdapter nouvelles méthodes:

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()

Pour les utiliser, procédez de la manière suivante:

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

REMARQUE: Cette méthode en particulier fonctionne un peu comme la régulière, startDiscovery() méthode, mais, au moins pour moi, elle découvre le BLE appareil 2 fois sur 5. Et rappelez-vous, ce n'est que pour le SGSIII. Je n'ai pas eu l'occasion de l'extraction de nouvelles méthodes dans BluetoothDevice mais quand je le fais, je vais les poster ici.

2voto

Nick Palmer Points 1102

Le SDK 18 est désormais compatible. Les documents sont ici:

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

Les tests sur mon Nexus 4 font planter la pile Bluetooth.

1voto

dljava Points 804

HTC a eu BLE de soutien depuis l'année dernière avec le HTC One X+, Droid DNA et bien sûr, le HTC One. Initialement, le HTC BLE de l'API a été sur demande, mais il est maintenant téléchargeable gratuitement sur http://htcdev.com.

Oui la nouvelle norme Android BLE de l'API de Google dans Android API de Niveau 18 est à venir très bientôt (voir l'aperçu de IO vidéo) - mais vous pouvez l'envelopper tiers Api (HTC, Samsung, etc) dans des conditions de compatibilité à l'appui de la nouvelle API standard que toutes les Api sont très similaires dans leur soutien du GATT de profil (similaire à IOS).

0voto

Palak Points 463

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X