android - teclado - Notificación de sonido, vibración y LED no funcionan
quitar vibracion notificaciones facebook android (2)
Según sus comentarios, parece ser un problema con su teléfono. Le pregunté en (1) sobre la vibración porque está configurando { 1000, 100, 1000, 100, 1000 }
que es un retraso de 1000 ms, seguido de una vibración de 100 ms. Esto puede ser muy poco para detectar.
De todos modos, tenía el mismo problema de vibración en algunos dispositivos, así que usé el servicio de vibrador directamente en su lugar. Lo que hice fue así después de emitir la notificación. Según tu comentario a continuación, también agregué la sección de administrador de tono de llamada.
// built the notification without vibration and sound
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build());
// start vibrator manually
Vibrator vibrator = (Vibrator) context.getSystemService(Context.VIBRATOR_SERVICE);
vibrator.vibrate(new long[] {1000, 100, 1000, 100, 1000}, Constants.VIBRATION_ONCE);
// start sound manually
Uri uri = Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1);
Ringtone ringtone = RingtoneManager.getRingtone(this, uri);
ringtone.play();
Esto parece funcionar para la mayoría de los dispositivos. En cuanto a la luz de la notificación, ya se afirma en el documento oficial que
Establezca el color deseado para el indicador LED en el dispositivo, así como el ciclo de trabajo de parpadeo (especificado en milisegundos). No todos los dispositivos respetarán todos (ni siquiera ninguno) de estos valores.
Si está utilizando dispositivos Mi, intente "confiar" en la aplicación y habilite todos los permisos necesarios para las notificaciones, incluido el "inicio automático". Funcionará en la mayoría de los casos.
Intento establecer colores personalizados de sonido, vibración y LED para las notificaciones en mi aplicación, pero no funciona. Todo lo demás, como configurar el título, el icono, el color, etc. funciona bien. He intentado muchas soluciones sugeridas en Stackoverflow pero tampoco funcionaron, así que estoy haciendo una pregunta.
Aquí está mi código de notificación:
Intent resultIntent = new Intent(this, ActivityB.class);
Bundle b = new Bundle();
//Some bundle related Code
resultIntent.putExtra("bundle",b);
TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
stackBuilder.addNextIntent(new Intent(this, ActivityA.class));
stackBuilder.addNextIntent(resultIntent);
PendingIntent resultPendingIntent = stackBuilder.getPendingIntent(0,PendingIntent.FLAG_UPDATE_CURRENT);
android.support.v7.app.NotificationCompat.Builder builder = new android.support.v7.app.NotificationCompat.Builder(this);
builder.setSmallIcon(R.drawable.ic_small_logo);
builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.drawable.ic_logo_large));
builder.setContentTitle(notification.getTitle());
builder.setContentText(notification.getBody());
builder.setColor(Color.parseColor("#FFFFFF"));
builder.setStyle(new NotificationCompat.BigTextStyle());
builder.setVibrate(new long[] { 1000, 100, 1000, 100, 1000 });
builder.setLights(Color.YELLOW, 3000, 3000);
builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1));
builder.setAutoCancel(true);
builder.setContentIntent(resultPendingIntent);
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
notificationManager.notify(1, builder.build());
También he agregado permiso para Vibración. Probado esto en 2 teléfonos con Lollipop y Marshmallow.
Editar 1:
Compartiendo todos los permisos que usa mi aplicación:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.VIBRATE"/>
Edición 2: funciona en el teléfono con versión Marshmallow. No funciona en teléfonos con Lollipop.
Edición 3: funciona también en Nougat (One plus 3T Phone).
Uno de los motivos por los que el sonido no funciona es porque no puede encontrar el cambio de archivo desde builder.setSound(Uri.parse("android.resource://" + getPackageName() + "/" + R.raw.notif1));
a
Cadena uriSound = String.format ("android.resource: //% s / raw /% s", getPackageName (), R.raw.notif1);
builder.setSound(uriSound);
Para las luces usa combinaciones RGB. builder.setLights(Color.rgb(130, 130, 130));
cambia el patrón de vibración a algo más uniforme,
builder.setVibrate(new long[] { 50, 100, 150, 200, 250});