Android BLE de Connexion intervalle de temps
Je suis en train d'élaborer un BLE application sur le Nexus 4 Android BLE de l'API. J'ai quelques questions/doutes:
1) Est-il un moyen de régler/remplacer la connexion ou de la notification de l'intervalle de BLE centrale de l'appareil. J'ai trouvé que pour Android, la connexion par défaut de l'intervalle est fixé à 7,5 ms. Est-il un moyen de changer cette connexion/délai de notification de paramètres d'intervalle.
2) Sur la connexion à un périphérique distant, je suis confronté à un problème de l'obtention de déconnexion aléatoire de la période d'intervalle de temps. Il y a beaucoup de personnes confrontées à la baisse de connexion problème en déclarant que android est instable lorsqu'ils utilisent Android 4.3 API pour BLE de connexion. Est-il une solution pour cela?
MODIFIER
ce que j'observe ici, c'est quand il est en prenant le temps de se reconnecter ensuite, c'est de venir avec certains L2CAP journal ...la suite au journal
Trying to create a new connection laststate_ BOND_NONE
D/BluetoothGatt( 9620): connect() - device: 1C:BA:81:11:CA:36, auto: true
D/BluetoothGatt( 9620): registerApp()
D/BluetoothGatt( 9620): registerApp() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510
D/BtGatt.GattService( 3208): registerClient() - UUID=1adsds0911-4sdsc-41dc-8ac0-0sdsdf550510
D/BtGatt.btif( 3208): btif_gattc_register_app
D/BtGatt.btif( 3208): btgattc_handle_event: Event 1000
D/BtGatt.btif( 3208): btif_gattc_upstreams_evt: Event 0
D/BtGatt.GattService( 3208): onClientRegistered() - UUID=1a9a0911-4d5c-41dc-8ac0-0284ef550510, clientIf=5
D/BluetoothGatt( 9620): onClientRegistered() - status=0 clientIf=5
D/BtGatt.GattService( 3208): clientConnect() - address=1C:BA:8C:1E:CA:36, isDirect=true
D/BtGatt.btif( 3208): btif_gattc_open
D/BtGatt.btif( 3208): btgattc_handle_event: Event 1004
D/BtGatt.btif( 3208): btif_get_device_type: Device [1c:ba:8c:1e:ca:36] type 2, addr. type 0
W/bt-l2cap( 3208): L2CAP - LE - cannot start new connection at conn st: 3
Aucune idée de comment puis-claire cahce mantain par L2CAP?
- Comme pour le 1er), Le smartphone fait pour vous. Vous ne pouvez pas régler que dans votre application. Votre BLE appareil pourrait suggérer un intervalle. Mais le smartphone se décider à la fin. La décision dépend aussi de la météo wifi est allumé ou éteint. J'ai lu quelque part que sur code.google.com/p/android/issues Comme pour la 2ème) que Vous trouverez des réponses sur stackoverflow.com/questions/17870189/... La solution serait que android ingénieurs de corriger leurs bugs. Il y a seulement des solutions. Vous avez à mettre en œuvre votre code correctement. E. g. l'appel de BluetoothGatt#close();
- donc u disant qu'il sera toujours instable dans le premier cas...c'est vraiment mauvaise pour travailler sur cette question...1) sice demande de ne jamais arriver à savoir la connexion sera établie ou pas et après plusieurs essai 2), soit désactiver le wifi et faire des choses/ redémarrage de l'appareil de nouveau hactic processus...toute suggestion au moins stable intervalle de connexion.
- est-il possible de savoir ou de match client(android-périphérique de connexion) intervalle de temps avec l'esclave (périphérique) de définir le temps de connexion d'intervalle...
- C'est la question que j'ai appelé dans mon premier commentaire. Il fournit des connaissances détaillées sur la connexion et de l'intervalle de renifler outils. Autant que je sache, que l'intervalle de connexion obtient assorti au cours de certains types de tremblements de la main du processus. La stabilité est mauvaise, mais vous pouvez travailler avec elle en suivant le travail que je fournis dans le précédemment lié SOI-question. Votre app est de savoir quand une connexion est établie par l'événement. La connexion est stable, une fois connecté.
- J'ai vu que...n pour la plupart ce cas, lorsque l'esclave de l'appareil n'est pas utilisé pendant 3min..suis-je le droit?....dans mon cas, lors de l'application d'essayer de se reconnecter alors Il n'est pas confirmé si l'appareil est connecté ou pas...comme L2CAP permettent pas de créer de connexion(log mention dans l'edit Q)...et ce heppened à moins de 3 min intervalle de temps aussi...
- aussi u peut donner plus de détails sur le tremblement de la main processus qui se passe ici?
- Désolé, je ne peux pas 😉 Peut-être que ce que vous décrivez est un bug qui vous pouvez effectuer une recherche ou un rapport sur code.google.com/p/android/issues/... notez Également, que votre périphérique de BLE de mise en œuvre peuvent varier d'un lot à partir d'autres appareils qui peuvent inclure des punaises aussi bien.
- Heyy @OneWorld ..trouvé code.google.com/p/android/issues/detail?id=58381 peu intéressant...comme je l'ai également obtenir de journal mentionnant "Enregistrer avec le GATT de pile a échoué"
- aussi n'a aucun savoir la signification de particulier pour les valeurs 0, 2, 3 qui est à venir avec L2CAP journal "LE - ne peut pas démarrer une nouvelle connexion à conn st: 3"
- avez-vous obtenu toutes les informations connexes ici?
- Pour garder la connexion de l'intervalle de 7,5 de travail beaucoup mieux maintenant. Mais même L2CAP problème se produit-il après quelques minutes de test(~4-5 min) avec le cycle de la découverte->connexion->déconnexion>de la découverte. Certains mentionnent la connexion automatique à la baisse après 3 min de connexion code.google.com/p/android/issues/detail?id=60284 ..
Vous devez vous connecter pour publier un commentaire.
Lorsque j'ai étudié les Android BLE de l'API, je ne pouvais pas trouver une API pour modifier l'intervalle de connexion et de la supervision délai d'attente (peut-être esclave de latence ainsi, ne me souviens pas du haut de ma tête). Je vous avez besoin de le modifier, vous devez le faire à partir de l'appareil esclave.
La réponse de Ashwini vous pouvez simplement ignorer, ce qu'il dit est tout simplement pas correct. Un Bluetooth 4.0 compatible appareil maître doit prendre en charge la connexion des intervalles de 7,5 ms jusqu'à 4,0 s. L'appareil esclave peut demander un changement dans les paramètres de connexion et envoie un paramètre de connexion de demande de mise à jour, et le maître va mettre à jour le paramètre de connexion en conséquence.
D'autre part, le master (dans votre cas, l'appareil Android) pourrait avoir un intérêt dans le changement de l'intervalle de connexion sur son propre, afin d'économiser de l'énergie, et que vous souhaitez modifier l'intervalle de connexion à un assouplissement de l'intervalle.
À mon avis, l'API Android et même le matériel de mise en œuvre sur plusieurs appareils sont immatures et à l'aide de BLE, dans le sens que le BLE a été prévu, attire beaucoup de puissance sur un appareil Android. Dans l'avenir, je crois que vous verrez beaucoup mieux appuyer sur le niveau de l'API et d'une division de l'hôte et le contrôleur de sorte que le contrôleur de maintenir la connectivité, même lorsque le PROCESSEUR principal de l'appareil mobile est en veille. Qui permettra d'économiser beaucoup d'énergie et vous pouvez maintenir la connectivité avec votre BLE appareils 24/7 sans contraindre à vous de vie de la batterie.
@Ashwini : Comme mentionné dans le dernier commentaire avec intervalle de connexion 7.5 c'est mieux pour un certain laps de temps. Après un certain temps, le L2CAP problème apparaît et la connectivité ne fonctionne pas à moins que l'adaptateur bluetooth est réinitialisé. Aussi, un comportement bizarre est été remarqué lors de l'adaptateur bluetooth est désactivé et réactivé à nouveau programtically. On obtient l'GKI d'erreur ci-dessous:
Aussi, est-ce createBond API permet d'améliorer la connexion avec BLE de l'appareil (qui en réalité n'a pas besoin de liaison de connexion) ?
Comme pour le changement d'intervalle de connexion:
Depuis Android Lollipop API de niveau 21, vous pouvez utiliser:
requestConnectionPriority()
Avec 3 niveaux: CONNECTION_PRIORITY_BALANCED, CONNECTION_PRIORITY_HIGH ou CONNECTION_PRIORITY_LOW_POWER.
Il n'est pas aussi polyvalent que nous, développeurs, voulez, mais au moins quelque chose...
Pour votre première question, comme OneWorld dit, il est conseillé de laisser le smartphone gérer le délai de connexion paramètres d'intervalle. Ces paramètres sont étroitement dépendante de matériel bluetooth & pile utilisé pour smartphone particulier.
Sur la question du débranchement, j'ai également fait face à des problèmes similaires. Je pense que c'est dû à un question enregistré dans le lien donné. Lors de l'OS gère la connexion & appariement, vous ne pouvez pas dissocier l'appareil et de tous les re-tentative de connexion échoue après ce. Cela ne se produit pas si l'appareil jumelé(& non appariés) par programme en utilisant des Api privées sur 4,3, en supposant que vous avez traité du GATT de connexions correctement. Dans android 4.4.2, il est createBond API ajoutée pour l'appariement. Donc, avec 4.4.2, la communication fonctionne assez bien.
Quant à la stabilité de Bluetooth de basse énergie sur android, je peux confirmer qu'il est assez instable. J'ai testé une application installée sur le Nexus 4 & Nexus 5 avec un peu d'énergie capteur. En dépit d'avoir la même version de l'OS 4.4.2, les deux appareils ont donné des résultats différents pour la connexion. J'ai observé que le dispositif de connexion après un certain temps sur le Nexus 4 alors que pour les Nexus 5 choses ont bien fonctionné.
Espère que cela vous aide à aller de l'avant pour votre problème.
J'ai rencontré auto déconnexion problème même en tant que votre deuxième question. Deux façons de le résoudre:
1) Manuellement paire appareil Android avec l'appareil distant par le biais des paramètres Bluetooth avant l'exécution de votre application.
2) Ou par programmation de la paire dans votre code. Voici le code de couplage j'ai trouvé en ligne, ce qui fonctionne pour moi