2010-07-21 12 views
17

He creado una aplicación que crea notificaciones, usando el siguiente código:¿Cómo puedo activar la vibración y las luces con la aplicación de notificaciones de Android?

// notification 
Notification notification = new Notification(R.drawable.notification_icon, title, System.currentTimeMillis()); 
notification.flags |= Notification.FLAG_AUTO_CANCEL; 

// parameters 
String ringtone = prefs.getString(context.getString(R.string.key_notifications_ringtone), ""); 
if (ringtone.length() > 0) { 
    notification.sound = Uri.parse(ringtone); 
    notification.audioStreamType = AudioManager.STREAM_NOTIFICATION; 
} 

boolean useVibrator = prefs.getBoolean(context.getString(R.string.key_notifications_use_vibrator), false); 
if (useVibrator) { 
    notification.defaults |= Notification.DEFAULT_VIBRATE; 
} 

boolean useLed = prefs.getBoolean(context.getString(R.string.key_notifications_use_led), false); 
if (useLed) { 
    notification.defaults |= Notification.DEFAULT_LIGHTS; 
    notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
} 

// alert 
RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.notification); 
contentView.setImageViewResource(R.id.notification_icon, R.drawable.icon); 
contentView.setTextViewText(R.id.notification_title, title); 
contentView.setTextViewText(R.id.notification_text, text); 
notification.contentView = contentView; 

Intent notificationIntent = new Intent(context, MyActivity.class); 

PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 
notification.contentIntent = contentIntent; 

notificationManager.notify(1, notification); 

funciona la notificación, y se utiliza el tono correcto.

Sin embargo, a pesar de que las preferencias están activadas correctamente y las banderas de notificación están configuradas correctamente (comprobé por depuración), la notificación nunca vibra y nunca hace que las luces se activen.

Hubiera culpado a la configuración de mi teléfono, pero todas las demás aplicaciones que usan notificaciones, como mensajería, gmail y otras utilizan correctamente todas estas características.

¿Alguien puede saber lo que hice mal? (Mi teléfono es un héroe de HTC con Android 2.1)

+0

¿Tiene el permiso de Vibrar? – Sephy

+0

Probé tu código en mi Nexus One, con el permiso y obtengo la vibración pero no el led ... aún cavando – Sephy

+0

lo mismo, había perdido el permiso de vibración, y ahora esa parte está funcionando. – SirDarius

Respuesta

28

Añadir permiso para el archivo de manifiesto

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

EDITAR

para las luces trate de añadir de forma explícita, la luz predeterminada puede ser configurado para ser nolight

notification.flags |= Notification.FLAG_SHOW_LIGHTS; 
notification.ledARGB = 0xff00ff00; 
notification.ledOnMS = 300; 
notification.ledOffMS = 1000; 
+0

Sugerí eso también, pero después de pensarlo un poco, no puede ser. Cuando no tienes un permiso, la aplicación falla, ¿no? entonces él no habría visto el resto trabajando – Sephy

+0

eso es lo que pensé, también, un permiso faltante debería haber arrojado una excepción. – SirDarius

+0

para completar mi comentario anterior, agregando el permiso que falta hizo el truco, sin embargo todavía no hay luces, y no encontré un permiso específico para ese propósito – SirDarius

14

Además de la respuesta de Pentium10:

Apague su dispositivo y las luces se encenderán. ;)

+0

Hello OneWorld prueba el código anterior y coloca este código también note.defaults | = Notification.DEFAULT_SOUND; note.defaults | = Notification.DEFAULT_VIBRATE; con esto, la vibración y el sonido funcionan, pero la luz no funciona, incluso pongo mi dispositivo en reposo y la luz se apaga. –

+1

Para cualquiera que se encuentre con esto en el futuro, asegúrese de que el teléfono esté apagado como dijo OneWorld. También asegúrese de que la bandeja de notificaciones no se haya retirado ya (es decir, el usuario no ha buscado esa notificación). El LED solo parpadeará en este caso. – ashishduh

Cuestiones relacionadas