Depuis la guimauve mise à jour de Bluetooth de découverte à l'aide de BluetoothAdapter.getDefaultAdapter().startDiscovery(); est cassé
J'ai une application à l'aide de bluetooth et la connexion à des appareils, peut'f trouver tous les périphériques à l'aide de BluetoothAdapter.getDefaultAdapter().startDiscovery(); Il a bien fonctionné, juste avant la découverte. On a aussi essayé d'autres applications, il ne fonctionne pas dans d'autres applications. Mais l'appareil j'essaie de paire (Arduino bt-module) peut être trouvé dans les paramètres Android. Toute idée de ce que je pourrais essayer? J'ai mis en place tout comme décrit sur http://developer.android.com/guide/topics/connectivity/bluetooth.html et ça fonctionnait avant la mise à jour.
OriginalL'auteur mikugo | 2015-10-10
Vous devez vous connecter pour publier un commentaire.
Adaptateur Bluetooth a eu un changement dans Android 6.0
Vous devez définir les autorisations ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION de l'autorisation et de la nécessité d'utiliser
BluetoothLeScanner.startScan() méthode pour démarrer le scan.
Ci-dessous la description de journaux du changement:
Pour fournir aux utilisateurs une plus grande protection des données, Android 6.0, Android supprime l'accès par programme à l'appareil local de l'identifiant matériel pour des applications en utilisant le Wi-Fi et Bluetooth Api. Le WifiInfo.getMacAddress() et le BluetoothAdapter.getAddress() les méthodes retournent une valeur constante de 02:00:00:00:00:00.
D'accès au matériel d'identificateurs de proximité d'appareils externes via le Bluetooth et le Wi-Fi analyses, votre application doit maintenant avoir la ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION autorisations:
Remarque: Lorsqu'un appareil fonctionnant sous Android 6.0 (API level 23) initie un contexte Wi-Fi ou Bluetooth scan, l'opération est visible à des périphériques externes comme provenant d'une étude randomisée de l'adresse MAC.
Vous pouvez obtenir plus de détails à partir de ce lien :
http://developer.android.com/about/versions/marshmallow/android-6.0-changes.html
Êtes-vous toujours à l'aide de
BluetoothAdapter.getDefaultAdapter().startDiscovery();
pour l'initiation de la découverte? Les changements mentionne l'utilisation de la LEScanner au lieu de Guimauve et vous demandez-vous si vous avez fait le changement à la même analyse pour le classique des appareils bluetooth.Oui, je suis en utilisant
BluetoothAdapter.getDefaultAdapter().startDiscovery();
il n'était qu'un petit projet de l'université. Mais peut-être que le LEScanner pouvez également découvrir classique appareils, car ils utilisent la même fréquence. Et il utilise moins d'énergie.J'ai ces autorisations définies sur l'app, et je peux découvrir des périphériques, cependant, je ne peux pas me connecter avec l'un d'eux. Je pense quelque chose sur les autorisations, à cause qu'il fonctionne sur des versions plus anciennes (4.X et 5.X)
OriginalL'auteur Megha
Juste activer la Localisation dans les Paramètres et il fonctionne bien !!
OriginalL'auteur Mark Ng
À partir de l'API de niveau 23, à l'emplacement d'autorisation d'accès (ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION ) est également nécessaire pour la détection bluetooth.
Et simplement l'ajout d'autorisation dans le fichier de manifeste n'est pas suffisant que l'autorisation appartient à "dangereux" niveau de protection.
Le consentement de l'utilisateur est nécessaire de demander l'autorisation au moment de l'exécution.
Ajouté autorisation en AndroidManifest.xml:
Demande de ACCESS_FINE_LOCATION ou ACCESS_COARSE_LOCATION au moment de l'exécution:
Plus de détails sur les autorisations:
https://inthecheesefactory.com/blog/things-you-need-to-know-about-android-m-permission-developer-edition/en
OriginalL'auteur Fantasy Pollock