2011-07-26 4 views
1

Donc, dans ma quête pour obtenir une valeur RSSI constamment mise à jour, j'ai été forcé de recourir à cette méthode inefficace. J'ai essayé d'utiliser bluecove 2.1.1, mais cela m'a donné des erreurs de bibliothèque et des erreurs d'exécution que je ne veux plus perdre de temps à gérer. Le guide du développeur définit la découverte comme le processus de recherche des périphériques détectables proches.Bluetooth Discovery vs Connection

Appel de la méthode Intent.getShortExtra (BluetoothDevice.EXTRA_RSSI, Short.MIN_VALUE); pendant ce temps possible?

Ou faut-il que les deux appareils établissent d'abord une connexion pour que la méthode ci-dessus ait une signification? En d'autres termes, pour ma méthode poll(), je pourrais d'abord enregistrer l'adresse MAC du périphérique en question dans une variable mac_addr, enregistrer la valeur RSSI dans une variable my_rssi, puis à chaque appel de poll(), un new scan est lancé, et le périphérique dont l'adresse mac correspond à celle de mac_addr est ciblé et met à jour le champ my_rssi?

Répondre

4

Exactement ou mieux, vous pouvez seulement obtenir la valeur RSSI lors d'une analyse de détection de périphérique. Ma thèse de recherche MSc était sur ce sujet. En effet, une valeur RSSI pendant une connexion active n'est pas fiable (en raison de la nature de la valeur RSSI elle-même) et par conséquent, les ingénieurs de Google Android ne l'ont pas exposée via l'API.

avantage de ceci:

  • Vous n'avez pas besoin d'une connexion active et donc pas de liaison est nécessaire
  • Comme il n'y a pas de « pico » en cause, le nombre de périphériques de numérisation est peut-être infini

Inconvénients

  • autres périphériques bluetooth doivent être découvrable (ce est un problème, surtout si vous voulez trouver d'autres appareils Android qui ont un intervalle maximum la possibilité de découvrir)
  • scans de découverte de l'appareil en continu sont un processus lourd ->costs a lot of battery

Le problème cependant d'exécuter en permanence une découverte de dispositif est qu'il consomme beaucoup de batterie sur l'appareil mobile ...

+0

Merci beaucoup Juri! J'ai passé des semaines à essayer de trouver et mettre en œuvre un moyen efficace d'atteindre cet objectif, mais finalement j'ai abandonné. Pour mon bébé à Android Deving à cette université locale au moins, l'inefficacité sera meilleure que d'avoir au moins la non-fonctionnalité. Merci encore. –

+0

Quel genre d'objectif voulez-vous atteindre? – Juri

+0

Fondamentalement, il donnera la distance relative d'un appareil Bluetooth à proximité, jouer une alarme à une certaine distance seuil. J'ai donc tout mis en place, l'interface utilisateur, les boutons, les widgets, etc., en jouant la fonctionnalité d'alarme, la fonctionnalité de numérisation, la connexion, etc. Juste cette dernière valeur RSSI d'interrogation reste à avoir. Je pense que globalement le projet qui m'a été confié avec les contraintes (DOIT UTILISER BLUETOOTH sur ANDROID) était imparfait dans cette dernière étape. Néanmoins, j'ai l'intention d'avoir au moins quelques fonctionnalités, même inexactes et inefficaces en énergie, travaillant pour l'achèvement. –