vibracion teclado sonido quitar personalizar notificaciones moto las desactivar como cambiar android notifications vibrate vibration android-vibration

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í.