¿Solicitud de sincronización de Bluetooth en la barra de notificación?
¡Hola a todos!
Comenzó a programar con Bluetooth en Android hace un tiempo. Pero ahora he encontrado algunos problemas. Me pregunto por qué la solicitud de emparejamiento a veces aparece en la barra de notificación ya veces esto se omite y el diálogo se muestra directamente.
- Android: ¿cómo puedo navegar por el sistema de archivos de dispositivo remoto a través de bluetooth?
- Cómo capturar eventos clave desde auriculares bluetooth con android
- Android BLE onCharacteristicRead y onCharacteristicChanged nunca llamado
- Aplicación de depuración que utiliza ADB sobre Bluetooth para un netbook Android-x86
- Manera correcta de encontrar si un dispositivo Bluetooth Android pareado está en el rango?
Por ejemplo: Inicie mi solicitud de emparejamiento desde un dispositivo incrustado y luego hay una notificación como esta:
Y a veces no tengo que molestarme con la notificación, mi diálogo sólo se muestra como yo pretendía que sea.
¿Hay manera de coger esa notificación y de exhibir el diálogo o es esto un error en mi código cuando comienzo el emparejamiento del bluetooth?
EDITAR:
ACTUALIZACIÓN 1:
Revisado la respuesta que Reno me dio y en realidad depende de una variedad de cosas. Hay otros medios de mostrar el diálogo directamente. El método siguiente se llama cuando llega la solicitud de emparejamiento. Se realiza una comprobación para ver si el diálogo debe aparecer en primer plano (verdadero) o como notificación (false):
public boolean shouldShowDialogInForeground(String deviceAddress) { // If Bluetooth Settings is visible if (mForegroundActivity != null) return true; long currentTimeMillis = System.currentTimeMillis(); SharedPreferences sharedPreferences = getSharedPreferences(); // If the device was in discoverABLE mode recently long lastDiscoverableEndTime = sharedPreferences.getLong( BluetoothDiscoverableEnabler.SHARED_PREFERENCES_KEY_DISCOVERABLE_END_TIMESTAMP, 0); if ((lastDiscoverableEndTime + GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) { return true; } // If the device was discoverING recently if (mAdapter != null && mAdapter.isDiscovering()) { return true; } else if ((sharedPreferences.getLong(SHARED_PREFERENCES_KEY_DISCOVERING_TIMESTAMP, 0) + GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) { return true; } // If the device was picked in the device picker recently if (deviceAddress != null) { String lastSelectedDevice = sharedPreferences.getString( SHARED_PREFERENCES_KEY_LAST_SELECTED_DEVICE, null); if (deviceAddress.equals(lastSelectedDevice)) { long lastDeviceSelectedTime = sharedPreferences.getLong( SHARED_PREFERENCES_KEY_LAST_SELECTED_DEVICE_TIME, 0); if ((lastDeviceSelectedTime + GRACE_PERIOD_TO_SHOW_DIALOGS_IN_FOREGROUND) > currentTimeMillis) { return true; } } } return false; }
Este es un fragmento del código fuente y como se puede ver que hay maneras de hacer que se muestre el diálogo:
- Si el dispositivo estaba en modo detectable recientemente
- Si el dispositivo estaba descubriendo recientemente
- Si el dispositivo fue recogido recientemente en el selector de dispositivos
- Si la configuración de Bluetooth está visible
- ¿Cómo saber cuándo un dispositivo BLE se suscribe a una característica de Android?
- Transferencia de datos Bluetooth entre dos dispositivos Android
- En Android, ¿cómo obtener el perfil de un dispositivo Bluetooth conectado?
- Cómo comunicarse con el dispositivo OBD-II
- AntiVirus mata mi aplicación
- Android Prevent Bluetooth Dialing Dialog
- Enviar mensaje de texto largo en android a través de Bluetooth
- cómo solicitar parámetros OBD y recibirlos
Según un comentario que vi en el código fuente de Android
BluetoothPairingRequest es un receptor para cualquier solicitud de emparejamiento de Bluetooth. Comprueba si los ajustes de Bluetooth están actualmente visibles y muestra el PIN, la clave de acceso o un diálogo de entrada de confirmación. De lo contrario, coloca una notificación en la barra de estado, que se puede hacer clic para abrir el diálogo de entrada de emparejamiento.
Así que sí, dependiendo de la visibilidad de BT, se mostrará el diálogo / notificación.
ninja edit:
Esto puede variar dependiendo del hardware utilizado.
- Si el dispositivo estaba en el modo discoverABLE recientemente
- Si el dispositivo estaba descubriendo recientemente
- Si el dispositivo fue recogido recientemente en el selector de dispositivos
- Android: fija la orientación de la pantalla sólo para una página (diferencia telefónica)
- Copia y Pega de Android en cualquier campo de texto de cualquier aplicación