Vibrar en la notificación push

En primer lugar he comprobado todos esos enlaces:

  • Cómo llamar a Vibrador dentro de un servicio en android
  • Notificaciones de Android y vibra desde el servicio
  • Android GCM enciende las luces

Pero no puedo lograr que mi teléfono vibre cuando reciba una notificación push. Aquí va mi código:

PushReceiver

public class PushReceiver extends FirebaseMessagingService { public PushReceiver() { } @Override public void onMessageReceived(RemoteMessage remoteMessage) { if(remoteMessage.getData() != null){ Map<String, String> data = remoteMessage.getData(); sendNotification(data.get("message")); } else{ if(remoteMessage.getNotification() != null) { sendNotification(remoteMessage.getNotification().getBody()); } } } private void sendNotification(String messageBody) { Intent intent = new Intent(this, BaseActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, intent, PendingIntent.FLAG_ONE_SHOT); Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_done_all_24dp) .setContentTitle(getString(R.string.str_notification_order_ready)) .setContentText(messageBody) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000 }); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(ConstantUtils.NOTIFICATION_ID_ORDER_READY, notificationBuilder.build()); } } 

Permiso

 <uses-permission android:name="android.permission.VIBRATE"/> 

Pruebas

Dispositivo: Nexus 5

Versión de Android: 6.0.1

¿Hay algún tipo de hechicería desconocida que debo hacer para que funcione?

También puede utilizar setDefaults (int defaults) en su instancia NotificationCompat.Builder que le proporciona el sonido predeterminado del sistema, la vibración y las luces para su notificación.

El valor debe ser uno o más de los siguientes campos combinados con bitwise o (|): DEFAULT_SOUND , DEFAULT_VIBRATE , DEFAULT_LIGHTS .

Para todos los valores predeterminados, utilice DEFAULT_ALL .

Ex. Según su código usted está fijando el sonido del defecto así que, si usted quiere fijar el sonido y vibrar por defecto:

 notificationBuilder.setDefaults(DEFAULT_SOUND | DEFAULT_VIBRATE); 

Si desea que todos los valores predeterminados, puede lograrlo mediante la configuración notificationBuilder.setDefaults(-1) , se considera como valor DEFAULT_ALL.

Consulte android doc para setDefaults .

EDITAR:

La vibración tiene un retardo de 1000 ms. Si ajusta el primero en 0, se apagará instantáneamente. Es un patrón de {delay, vibration, sleep, vibrate, sleep}

  // Each element then alternates between delay, vibrate, sleep, vibrate, sleep notificationBuilder.setVibrate(new long[] { 1000, 1000, 1000, 1000, 1000}); 

Esto vibra el teléfono:

 Vibrator v = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE); // Vibrate for 500 milliseconds v.vibrate(500); 

Cuando llame a la notificación también llame a esto

  • ¿Es necesaria una cuenta de Google para GCM (Google Cloud Messaging)?
  • Cómo abrir la actividad actual que está abierta mientras hace clic en la notificación
  • ¿Cómo implementar funcionalidades como Facebook "New Story" característica?
  • No recibe la notificación de push de GCM de Amazon SNS
  • Mensajería en la nube de Google, incapaz de inicializar el receptor
  • Notificaciones push de Android en China
  • Notificaciones Push de XMPP (Openfire)
  • Notificación de Android Push (lento)
  • ¿Soporta Android la notificación push en tiempo real?
  • Notificaciones push en Android: Google GCM vs Amazon SNS?
  • Notificación push de Android GCM para aplicaciones de localización
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.