2010-05-30 12 views
12

he encontrado en la documentación de Android cómo activar el modo de descubrimiento Bluetooth:modo de detección Desactivar Bluetooth en Android

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

Esto hará que el dispositivo se pueda detectar durante 300 segundos (documentation).

Mi pregunta es: ¿cómo desactivar la detectabilidad antes de que se agote este tiempo? Me gustaría replicar la configuración correspondiente en Configuración | Inalámbrica y redes | applet de configuración de Bluetooth, que permite que la detectabilidad se active y desactive con un clic.

¿Algún ayuda?

+0

solucionado con la reflexión en este tema: https://stackoverflow.com/a/47452626/5239473 –

Respuesta

9

acaba de enviar una nueva solicitud detectable con una duración de 1 (o 0 incluso podría trabajar):

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

Lol, hacker , pero funciona (solo con 1) Gracias;) – Venator85

+0

De acuerdo, pero es la mejor/única solución que pude encontrar. Entonces, ¿qué hace tu aplicación? –

+0

Es solo un widget simple para habilitar/deshabilitar la detectabilidad, nada de fantasía :) – Venator85

1

cancelDiscovery() no es para esto. Este método se puede utilizar para detener el escaneo de su dispositivo para otros dispositivos bluetooth. Es diferente de esto hacer que el dispositivo no sea visible.

0

Cuidado al usar este método, podría cambiarse fácilmente ya que está oculto.

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); 
} 

También se puede usar con SCAN_MODE_NONE y SCAN_MODE_CONNECTABLE_DISCOVERABLE (utiliza duración predeterminada)

Source

Cuestiones relacionadas