Contexto:
He estado usando de Google LocationUpdatesForegroundService proyecto de ejemplo para aprender un poco más acerca de los servicios.
He descargado el proyecto a través de escritorio Github y corrió en mi teléfono, todo es grande y el proyecto hace lo que se pretende hacer.
Mi teléfono es Android 8.0.0, API 26
Problema:
La notificación de servicio de primer plano aparece en la barra de estado una vez que se termina la aplicación, tan pronto como esto sucede me escuchan un sonido de notificación (sonido por defecto). Sin embargo, me gustaría que la notificación está en silencio, al igual que en algunas aplicaciones basadas en la ubicación (por ejemplo: Life360 )
Lo que he probado hasta ahora:
- en LocationUpdatesService.java al agregado
159
tratadomChannel.setSound(null,null);
- en LocationUpdatesService.java en la línea
296
cambiado.setPriority(Notification.PRIORITY_HIGH)
a.setPriority(Notification.PRIORITY_LOW)
- en LocationUpdatesService.java en la línea
158
cambiadoNotificationManager.IMPORTANCE_DEFAULT
aNotificationManager.IMPORTANCE_LOW)
- en LocationUpdatesService.java en la línea
300
añadidosetSound(null)
Ninguna de las anteriores han trabajado para mí, realmente agradecería si alguien podría arrojar alguna luz sobre esta situación.
La solución es utilizar NotificationManager.IMPORTANCE_LOW y crear un nuevo canal para ello. Una vez que se crea un canal, no se puede cambiar la importancia (bueno, se puede, pero la nueva importancia es ignorado). La información del canal parece que se está almacenado de forma permanente por el sistema y cualquier canal creado Sólo se elimina cuando se desinstala la aplicación. puede eliminar el canal como
nm.deleteNotificationChannel(nChannel.getId());
y volver a crearla con
nm.createNotificationChannel(nChannel);
a través de la respuesta de desbordamiento de pila aquí sonido Desactivar en NotificationChannel