2011-08-16 33 views
6

Quiero saber cómo configurar la hora de notificación. Deseo configurar notificaciones cada cinco minutos, , así que ayúdenme a hacer eso.Mostrar notificaciones de Android cada cinco minutos

public class FirstActivity extends Activity 
{ 
    private static final int HELLO_ID = 1; 
    //public static final int FLAG_AUTO_CANCEL = 0;`enter code here` 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.firstactivity); 

     String ns = Context.NOTIFICATION_SERVICE; 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 

     int icon = R.drawable.icon; 
     CharSequence tickerText = "Hello"; 
     long when = System.currentTimeMillis(); 

     Notification notification = new Notification(icon, tickerText, when); 

     RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.statusbarnotification); 
     contentView.setImageViewResource(R.id.image, R.drawable.icon); 
     contentView.setTextViewText(R.id.text, "Hello, this message is in a custom expanded view"); 
     notification.contentView = contentView; 
     notification.flags = Notification.DEFAULT_LIGHTS | Notification.FLAG_AUTO_CANCEL; 
     Intent notificationIntent = new Intent(getApplicationContext(), SecondActivity.class); 
     //PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
     notification.contentIntent = contentIntent; 
     mNotificationManager.notify(HELLO_ID, notification); 
    } 

} 

Respuesta

3

Creo que la mejor manera será crear un servicio que establezca la notificación y luego activar el servicio utilizando AlarmManager.
Ese es el código de la AlarmManager:

private void startAlarm() { 
    AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE); 
    long when = System.currentTimeMillis();   // notification time 
    Intent intent = new Intent(this, ReminderService.class); 
    PendingIntent pendingIntent = PendingIntent.getService(this, 0, intent, 0); 
    alarmManager.setRepeating(AlarmManager.RTC, when, (AlarmManager.INTERVAL_FIFTEEN_MINUTES/3), pendingIntent); 
} 

para controlar el intervalo utilizar los valores constantes o simplemente insertar su propio valor (en milisegundos).

Aquí está el servicio:

public class ReminderService extends IntentService { 
    private static final int NOTIF_ID = 1; 

    public ReminderService(){ 
     super("ReminderService"); 
    } 

    @Override 
     protected void onHandleIntent(Intent intent) { 
     NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 
     long when = System.currentTimeMillis();   // notification time 
     Notification notification = new Notification(R.drawable.icon, "reminder", when); 
     notification.defaults |= Notification.DEFAULT_SOUND; 
     notification.flags |= notification.FLAG_AUTO_CANCEL; 
     Intent notificationIntent = new Intent(this, YourActivity.class); 
     PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent , 0); 
     notification.setLatestEventInfo(getApplicationContext(), "It's about time", "You should open the app now", contentIntent); 
     nm.notify(NOTIF_ID, notification); 
    } 

} 
+1

Gracias es un poco de lo que quería, pero tengo una pregunta para usted acerca de esto. ¿Cómo configuro 'AlarmManager' dentro de la clase de servicio para que cuando compruebe la base de datos y tenga algo nuevo para mostrar la notificación? (Si puede explicar en código sería mejor, no es necesario el código de la base de datos ... solo el AlarmManager dentro de la clase de servicio con la instrucción 'if') –

+1

Cuando' StartAlarm() 'llamó ?? No recibo ninguna notificación ... el código no está funcionando g :( – Neo

Cuestiones relacionadas