Android - Como abrir un Acticity al ejecutarse una alarma

 
Vista:
Imágen de perfil de Roberto
Val: 43
Ha aumentado su posición en 35 puestos en Android (en relación al último mes)
Gráfica de Android

Como abrir un Acticity al ejecutarse una alarma

Publicado por Roberto (16 intervenciones) el 16/04/2021 19:28:37
Hola a [email protected]

Tengo una aplicación de reservas, y me gustaría, que al reservar, se programara una alarma en el sistema y al ejecutarse, se abriera una activity, donde ya tengo programada una melodía, un aviso de texto y un GIF animado que le dirá al usuario que le quedan 15 minutos para finalizar su reserva

Actualmente tengo el siguiente código, que me toma la hora de la reserva y programa la alarma, pero, sería posible que se abriera el activity del recordatorio ?


En el botón de crear la reserva:
1
2
3
4
5
6
7
8
9
metodoGrabarReserva();
String[] parametros = metodoObtenerParametrosAlarma();
    String hora = parametros[0];
    String minutos = parametros[1];
    String dia = parametros[2];
int horaN = Integer.parseInt(hora);
int minutosN = Integer.parseInt(minutos);
int diaN = Integer.parseInt(dia);
metodoEstablecerAlarma(horaN, minutosN, diaN);


Los métodos de obtener parámetros y generar alarma:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
private String[] metodoObtenerParametrosAlarma()
{
    String[] datosAlarma = new String[5];
    String horaH = "";
    if ((hora != null) && (hora2 != null) && (hora3 != null))
    {
        horaH = hora3;
    }
    else if ((hora3 == null) && (hora != null) && (hora2 != null))
        {
            horaH = hora2;
        }
        else if ((hora3 == null) && (hora2 == null) && (hora != null))
            {
                horaH = hora;
            }
    String fechaH = fecha;
 
    String time = horaH;
 
    String[] splitTime = time.split(":");
    String hora = splitTime[0];
    String minutos = splitTime[1];
 
    String date = fechaH;
    String[] splitDate = date.split("/");
    String dia = splitDate[0];
    String mes = splitDate[1];
    String año = splitDate[2];
 
    datosAlarma[0] = hora;
    datosAlarma[1] = minutos;
    datosAlarma[2] = dia;
    datosAlarma[3] = mes;
    datosAlarma[4] = año;
 
    return datosAlarma;
}
public void metodoEstablecerAlarma(int hora, int minutos, int dia)
{
    Intent alarma = new Intent(AlarmClock.ACTION_SET_ALARM)
            .putExtra(AlarmClock.EXTRA_DAYS, dia)
            .putExtra(AlarmClock.EXTRA_HOUR, hora)
            .putExtra(AlarmClock.EXTRA_MINUTES, minutos);
    startActivity(alarma);
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Roberto
Val: 43
Ha aumentado su posición en 35 puestos en Android (en relación al último mes)
Gráfica de Android

Como abrir un Acticity al ejecutarse una alarma

Publicado por Roberto (16 intervenciones) el 17/04/2021 22:41:18
Hola de nuevo

Encontré éste código que inicia una tare en segundo plano, que creo me serviría para abrir mi activity, pero no entiendo muy bien el código, y no sabría donde poner mi actividad para poder ejecutarla, alguien me ayuda ?

mi actividad se llama "PantallaAlarma".
Creo que en esta llamada a la clase "com.example.dummy.AlarmReceiver" es la desencadenante.
Pero no lobro entender del todo como se iniciaría mi actividad ?

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
private void metodoCrearAlarmaLanzarActicity(int hora, int minutos, int dia)
{
    // Verificamos si la tarea ya ha sido programada. Si no, entonces crea la tarea en AlarmManager.
    boolean alarmUp = (PendingIntent.getBroadcast(this, 0,
            new Intent("com.example.dummy.AlarmReceiver"),
            PendingIntent.FLAG_NO_CREATE) != null);
 
    if (  !alarmUp) {
        Intent intent = new Intent("com.example.dummy.AlarmReceiver");
        intent.putExtra("activate", true);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0,
                intent, PendingIntent.FLAG_UPDATE_CURRENT);
 
        Calendar calendar = Calendar.getInstance();
        calendar.setTimeInMillis(System.currentTimeMillis());
        calendar.set(Calendar.HOUR_OF_DAY, hora);
        calendar.set(Calendar.MINUTE, minutos);
        calendar.set(Calendar.SECOND, 0);
 
        AlarmManager alarmManager = (AlarmManager) this.getSystemService(this.ALARM_SERVICE);
        alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
    }
}

Usa la siguiente clase para las tareas en segundo plano, pero como podría iniciar mi actividad en lugar de los servicios ?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class AlarmReceiver extends BroadcastReceiver {
 
    @Override
    public void onReceive(Context context, Intent intent) {
 
        if (!intent.hasExtra("activate")) {
            new IndexerMasterViewsTask().execute();
    new IndexerWorkViewsTask().execute();
 
        }
 
        /// your processing code comes here
 
    }
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar