Android Bluetooth: Obtenir des Uuid des périphériques détectés
Que je suis en train de travailler sur un peu de bluetooth de la bibliothèque pour Android, je vais essayer d'obtenir tous les uuid des appareils que j'ai découvert dans mon entourage.
Quand mon récepteur de radiodiffusion obtient le BluetoothDevice.ACTION_FOUND
intention, je suis de l'extraction de l'appareil et appelez le:
device.fetchUuidsWithSdp();
Cela se traduira BluetoothDevice.ACTION_UUID
intentions pour chaque appareil et je suis de la manipulation avec le même récepteur:
BluetoothDevice d = intent.getParcelableExtra(BluetoothDevice.EXTRA_DEVICE);
Parcelable[] uuidExtra = intent.getParcelableArrayExtra(BluetoothDevice.EXTRA_UUID);
if(uuidExtra == null) {
Log.e(TAG, "UUID = null");
}
if(d != null && uuidExtra != null)
Log.d(TAG, d.getName() + ": " + uuidExtra.toString());
Le truc, c'est que uuidExtra
est toujours null
.
Comment puis-je obtenir tous les Uuid des environs appareils?
EDIT:
Je travaille sur une Nexus 7. J'ai essayé le code que j'ai trouvé sur internet et cela me donne aussi une NullPointerException: http://digitalhacksblog.blogspot.de/2012/05/android-example-bluetooth-discover-and.html
Merci.
- Im face à la situation exacte! avez-vous trouvez une solution ? pouvez-vous s'il vous plaît aider moi.
Vous devez vous connecter pour publier un commentaire.
La la documentation sur cette états...
Cependant, tout comme vous, j'ai trouvé que ce n'est pas vrai.
Si vous appelez
fetchUuidsWithSdp()
alors que la découverte de périphériques est encoreBluetoothDevice.EXTRA_UUID
peut être null.Vous devriez attendre jusqu'à ce que vous recevez
BluetoothAdapter.ACTION_DISCOVERY_FINISHED
avant de faire des appels àfetchUuidsWithSdp()
.fetchUuidsWithSdp()
.fetchUuidsWithSdp()
fonctionne ou pas, peu importe à quel point je l'appelle.filter.addAction(BluetoothAdapter.ACTION_DISCOVERY_FINISHED);
Le problème avec l'extraction des Uuid est que vous n'avez qu'un adaptateur bluetooth, et on ne peut pas avoir en parallèle des appels d'api qui utilise la carte pour son but.
Que Eddie a souligné, attendez
BluetoothAdapter.ACTION_DISCOVERY_FINISHED
et ensuite appelerfetchUuidsWithSdp()
.Encore ce ne peut garantir l'uuid de l'extraction de tous les appareils. En plus il faut attendre pour chaque appel ultérieur à
fetchuuidsWithSdp()
pour compléter, et de donner ensuite un appel à cette méthode pour un autre appareil.Voir le code ci-dessous --
Je suppose que vous avez besoin d'être relié à l'appareil afin de recevoir les uuid.
Au moins, c'est ce qui m'est arrivé.
Ici est un bon exemple de comment obtenir des Uuid des caractéristiques de service à partir d'un service que je n'ai pour l'obtention de la fréquence cardiaque appareils:
appareil.getUuids() l'utiliser pour obtenir tous les uuid de l'appareil lié à la forme de ParcelUuid; Exemple de code ci-dessous:-
Ci-dessous a fonctionné pour moi d'extraire les enregistrements à partir de la télécommande de l'appareil
-1-
de l'appareil.fetchUuidsWithSdp();
-2-à partir de l'intérieur de la broadcase récepteur
Vous pouvez aussi récupérer la mise en cache hors connexion UUID enregistrements avec
getUuids()
avec trois différents BLE et tout ce qui s'est retourné null tableau.