web-dev-qa-db-fra.com

Comment savoir si un appareil Android prend en charge Bluetooth Low Energy

Il semble que la première génération de Nexus 7 ne prend pas en charge Bluetooth Low Energy, du moins lorsque je suis exactement les étapes du tutoriel. 

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

J'ai fini l'application sur le code suivant:

 if (!getPackageManager().hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE)) {
    Toast.makeText(this, R.string.ble_not_supported, Toast.LENGTH_SHORT).show();
    finish();
}

Bien sûr, j'ai vérifié que Bluetooth était activé.

La question est donc de savoir comment savoir si le périphérique prend en charge la norme Bluetooth Low Energy.

UPDATE: J'utilise Android 4.3

21
abovesun

Votre code est vraiment bon, .__ Mais ajoutez-vous exactement le code suivant?

<uses-permission Android:name="Android.permission.BLUETOOTH"/>
<uses-permission Android:name="Android.permission.BLUETOOTH_ADMIN"/>

Le code important est:

<uses-feature Android:name="Android.hardware.bluetooth_le" Android:required="false"/>

Parce que nous devons nous assurer que l'application peut fonctionner avec succès,

Toutefois, si vous souhaitez rendre votre application disponible pour les appareils ne prenant pas en charge BLE, vous devez néanmoins inclure cet élément dans le manifeste de votre application, mais définissez required = "false".

Ce code fonctionne pour moi.

EDIT: J'ai trouvé quelque chose de positif pour vous sur quels appareils sont compatibles avec la fonction BLE

11
Huy Tower

Vous êtes censé vérifier la "fonctionnalité":

PackageManager pm = ctx.getPackageManager();
boolean hasBLE = pm.hasSystemFeature(PackageManager.FEATURE_BLUETOOTH_LE);

Je ne sais pas trop à quel point les fabricants prennent cela au sérieux - la seule fonctionnalité que j'ai vérifiée moi-même est FEATURE_TELEPHONY et différents fabricants la gèrent de différentes manières (et de manière déconcertante), de sorte que votre kilométrage peut varier la façon dont vous avez l'intention de le faire.

2
Tom

Vous avez correctement fourni le code pour vérifier si un périphérique de support prend en charge BLE. Cette vérification permet de voir s'il existe la fonctionnalité Android.hardware.bluetooth_le qui est généralement stockée dans un fichier nommé Android.hardware.bluetooth_le.xml à l'emplacement /system/etc/permissions auquel vous pouvez accéder manuellement avec un gestionnaire de fichiers du périphérique Android.

0
EarthLord

En réalité, le N7 2012 prend en charge le matériel pour BLE mais la rom de Google ne le prend pas en charge. J'ai un N72012 avec la pureté Rom installé et je peux confirmer qu'il peut se connecter aux périphériques BLE.

0
David C

L'architecture Bluetooth Android a complètement changé d'Android 4.1 à 4.2. Tout appareil doté d'Android Jelly Bean 4.2 ou version ultérieure ne peut pas prendre en charge Bluetooth Low Energy car il n'est pas disponible dans la nouvelle pile Bluedroid. Voir:

http://events.linuxfoundation.org/images/stories/slides/abs2013_rymanowski.pdf

0
ClayMontgomery