Notificações temporizadas Android com AndroidStudio?

Tenho procurado como fazer notificações temporizadas, ou seja numa hora pré determinada, mas tudo o que encontro é bastante confuso.

Será que alguém me pode dar uma dica?

Obrigado! :slight_smile:

Oi, vc pode usar mensagem Toast, dá um olhada, é otimo.

https://developer.android.com/guide/topics/ui/notifiers/toasts.html

Obrigada, mas eu pretendo mesmo fazer notificações e não lançar mensagens que é o que o toast faz se não estou em erro. Quero fazer uma aplicação em que mesmo a aplicação estando fechada o telemóvel receba esses alertas.

Ah sim, vc quer que o aplicativo exiba notificações mesmo fechado, se for isso, use a classe Notification.Builder

https://developer.android.com/guide/topics/ui/notifiers/notifications.html#Design

Obrigada vou tentar! :slight_smile:

1 curtida

Tenta sim ! No site do Android tem bastante exemplo de como usar e a explicação é excelente!
Deixe-me saber se deu udo certo.
Abraço.

Para notificar o usuário em um horário em específico utiliza as classe AlarmManager e Calendar. Aqui o link de um exemplo e explicações em PT-BR.

Segui alguns conselhos dados e estou a utilizar o alarm manager para lançar as notificações. Consigo lançar apenas uma notificação.
Apresento aqui a minha ideia base, com dois horários diferentes. Queria entender porque é que apenas um é lançado, neste caso é o último que é lançado.

->MainActivity

        Intent intent = new Intent("ALARME_DISPARADO"); 

        PendingIntent p = PendingIntent.getBroadcast(this, 0, intent, 0);

        Calendar c = Calendar.getInstance();

        c.setTimeInMillis(System.currentTimeMillis());
        c.set(Calendar.HOUR_OF_DAY, 12);
        c.set(Calendar.MINUTE, 00);
        c.set(Calendar.SECOND, 00);

        AlarmManager alarme = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarme.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), p);


        Calendar c1 = Calendar.getInstance();

        c1.setTimeInMillis(System.currentTimeMillis());
        c1.set(Calendar.HOUR_OF_DAY, 16);
        c1.set(Calendar.MINUTE, 30);
        c1.set(Calendar.SECOND, 00);
        AlarmManager alarme1 = (AlarmManager) getSystemService(ALARM_SERVICE);
        alarme1.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), p);

-> class BroadcastReceiverAux extends BroadcastReceiver

public void onReceive(Context context, Intent intent) {

    Log.i("Script", "-> Alarme");

    gerarNotificacao(context, new Intent(context, NotificationActivity.class), "Nova mensagem", "Título", "Descrição nova mensagem");
}

public void gerarNotificacao(Context context, Intent intent, CharSequence ticker, CharSequence titulo, CharSequence descricao) {
    NotificationManager nm = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
    PendingIntent p = PendingIntent.getActivity(context, 0, intent, 0);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
    builder.setTicker(ticker);
    builder.setContentTitle(titulo);
    builder.setContentText(descricao);
    builder.setSmallIcon(R.drawable.ic_launcher);
    builder.setLargeIcon(BitmapFactory.decodeResource(context.getResources(), R.drawable.ic_launcher));
    builder.setContentIntent(p);

    Notification n = builder.build();
    n.vibrate = new long[]{150, 300, 150, 600};
    n.flags = Notification.FLAG_AUTO_CANCEL;
    nm.notify(R.drawable.ic_launcher, n);

    try {
        Uri som = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
        Ringtone toque = RingtoneManager.getRingtone(context, som);
        toque.play();
    } catch (Exception e) {
    }
}

Será que me podem ajudar?

Context context = getApplicationContext();
CharSequence text = “Hello toast!”;
int duration = Toast.LENGTH_SHORT;

Toast toast = Toast.makeText(context, text, duration);
toast.show();

Desculpe mas não compreendi como isso poderá enquadrar-se na minha dúvida…