2010-05-30 5 views
12

J'ai trouvé dans la documentation Android comment activer le mode Bluetooth sur la possibilité de découvrir:Désactiver Bluetooth découvrable sur Android

Intent discoverableIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 300); 
startActivity(discoverableIntent); 

Cela rendra l'appareil découvrable pendant 300 secondes (documentation).

Ma question est la suivante: comment désactiver la possibilité de découverte avant la fin de ce délai? Je souhaite répliquer le paramètre correspondant dans l'applet de paramètres Paramètres | Sans fil et réseaux | Paramètres Bluetooth, qui permet d'activer et de désactiver la visibilité en un clic.

Une aide?

+0

Résolu avec la réflexion sur ce sujet: https://stackoverflow.com/a/47452626/5239473 –

Répondre

9

Il suffit d'envoyer une nouvelle demande découvrable avec la durée 1 (ou 0 pourrait même travailler):

Intent discoverableIntent = new 
Intent(BluetoothAdapter.ACTION_REQUEST_DISCOVERABLE); 
discoverableIntent.putExtra(BluetoothAdapter.EXTRA_DISCOVERABLE_DURATION, 1); 
startActivity(discoverableIntent); 
+1

Lol, hackish , mais cela fonctionne (avec 1 seul). Merci;) – Venator85

+0

D'accord, mais c'est la meilleure/seule solution que j'ai pu trouver. Alors, que fait votre application? –

+0

C'est juste un simple widget pour activer/désactiver la découvrabilité, rien d'extraordinaire :) – Venator85

1

cancelDiscovery() n'est pas pour cela. Cette méthode peut être utilisée pour arrêter la numérisation de votre appareil pour d'autres appareils Bluetooth. C'est différent de cela pour rendre l'appareil non visible.

0

Faites attention lorsque vous utilisez cette méthode, elle peut être facilement modifiée car elle est cachée.

BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); 
try { 
    Method method = BluetoothAdapter.class.getMethod("setScanMode", int.class); 
    method.invoke(bluetoothAdapter, BluetoothAdapter.SCAN_MODE_CONNECTABLE); 
} catch (NoSuchMethodException | IllegalArgumentException | IllegalAccessException | InvocationTargetException e) { 
    Log.e(TAG, "Failed to turn off bluetooth device discoverability.", e); 
} 

également utilisable avec SCAN_MODE_NONESCAN_MODE_CONNECTABLE_DISCOVERABLE et (utilise durée par défaut)

Source

Questions connexes