teclado - personalizar vibracion android
Deshabilitar la vibración para una notificación (5)
Después de una larga sesión de prueba y error, creo que finalmente entendí lo que está mal.
El problema radica en esta instrucción notificationBuilder.setDefaults(Notification.DEFAULT_ALL)
.
No importa qué parámetro pase a notificationBuilder.setVibrate()
después de configurar DEFAULT_ALL
o DEFAULT_VIBRATE
se descartará silenciosamente. Alguien en Google debe haber decidido dar mayor prioridad a setDefaults
que a setVibrate
.
Así es como terminé deshabilitando la vibración para notificaciones en mi aplicación:
notificationBuilder.setDefaults(Notification.DEFAULT_LIGHT | Notification.DEFAULT_SOUND)
.setVibrate(new long[]{0L}); // Passing null here silently fails
Esto funciona pero no se siente bien para inicializar un long[]
solo para deshabilitar la vibración.
Estoy escribiendo una aplicación usando la notificación. Las directrices para desarrolladores de Google animan a los desarrolladores a proporcionar configuraciones para personalizar las notificaciones (deshabilitar la vibración, configurar el sonido de la notificación ...), por lo que estoy tratando de deshabilitar la vibración de las notificaciones si el usuario la configura de esa manera.
Estoy usando NotificationCompat.Builder
para crear la notificación, como esto:
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(Application.getContext())
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(Notification.PRIORITY_MAX)
.setSmallIcon(R.drawable.ic_launcher)
.setLargeIcon(largeIconBitmap)
.setAutoCancel(true)
.setContentIntent(resultPendingIntent)
.setContentTitle(title)
.setContentText(content);
He intentado diferentes formas de desactivar las notificaciones:
notificationBuilder.setVibrate(null);
notificationBuilder.setVibrate(new long[]{0l, 0l});
notificationBuilder.setDefaults(Notification.DEFAULT_ALL | ~Notification.DEFAULT_VIBRATE);
notificationBuilder.setDefaults(Notification.DEFAULT_LIGHTS | Notification.DEFAULT_SOUND);`
También intenté crear la notificación y cambiar los valores en el objeto resultante:
Notification notification = notificationBuilder.build();
notification.vibrate = null;
Pero el teléfono todavía vibra cuando aparece la notificación.
¿Cómo puedo desactivar la vibración para las notificaciones?
No se detienen porque está utilizando "setDefaults(Notification.DEFAULT_ALL)"
por lo que si necesita detener la vibración y el sonido, elimine esta línea, o si necesita usar el sonido predeterminado y detener la vibración, creo que debe usar setDefaults(Notification.DEFAULT_SOUND)
etc ...
.setVibrate(null)
funciona para mí, y es una solución mejor que crear un tiempo innecesario [].
Resultado: el dispositivo no vibra y tampoco se queja en LogCat. :)
private void removeSoundAndVibration(Notification notification) {
notification.sound = null;
notification.vibrate = null;
notification.defaults &= ~DEFAULT_SOUND;
notification.defaults &= ~DEFAULT_VIBRATE;
Este código es de Notification Compat Api Class. Esto debería funcionar, agregue todo esto a su constructor.
notification.vibrate = new long[] { -1 };
Este código funciona para mí.