studio - best alarm app android 2018
Android establece mĂșltiples alarmas (3)
Para configurar dinámicamente múltiples alarmas, el enfoque que utilicé fue que creé una sola alarma. Luego, en mi clase de configuración de alarma, se inicializa un entero estático (para ser utilizado como requestcode) que se incrementará cada vez desde mi actividad principal cada vez que hago clic en el botón "agregar alarma" en mi actividad principal. P.ej
MainActivity.java
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void addAlarmClick(View v) {
AlarmActivity.broadcastCode++;
startActivity(new Intent(this, AlarmActivity.class));
}
}
AlarmActivity.java
public class AlarmActivity extends AppCompatActivity {`
public static int broadcastCode=0;
/*some code here*/
Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class);
pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this,
broadcastCode, myIntent, 0);
Espero que esto sea de ayuda.
Estoy intentando implementar una aplicación de Android que necesita alarmar (o alertar) varias veces a lo largo del tiempo.
Ya he buscado, pero el más cercano que encontré fue un número fijo de alarmas establecidas, y supongo que el ejemplo no funcionó.
Lo que quiero saber si existe un enfoque para configurar dinámicamente múltiples alarmas, como una matriz de alarmas y luego activar esas alarmas en sus marcas de tiempo específicas.
Puede configurar la repetición de la alarma:
en este caso:
public void AddAlarm(int requestCode,MutableDateTime dueDate,int repeat) {
Intent intent = new Intent(context, AlarmReceiver.class);
intent.putExtra(Constants.RECORD_ID, requestCode);
intent.putExtra("REPEAT", repeat);
PendingIntent operation = PendingIntent.getBroadcast(context, requestCode, intent, PendingIntent.FLAG_ONE_SHOT );
MutableDateTime due = dueDate.toMutableDateTime();
switch(repeat){
case NO_REPEAT:
due.addMinutes(0);
break;
case DAILY:
due.addDays(1);
break;
case WEEKLY:
due.addWeeks(1);
break;
case MONTHLY:
due.addMonths(1);
break;
case MONTHLY_2:
due.addWeeks(5);
break;
case YEARLY:
due.addYears(1);
break;
}
due.add(-(dueDate.getMillis()));
due.setSecondOfMinute(0);
dueDate.setSecondOfMinute(0);
alarm.cancel(operation);
alarm.set(AlarmManager.RTC_WAKEUP, dueDate.getMillis(), operation);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, dueDate.getMillis(), due.getMillis(), operation);
}
Si desea establecer varias alarmas (repetidas o simples), solo necesita crear sus PendingIntent
con diferentes requestCode
. Si requestCode
es el mismo, la nueva alarma sobrescribirá la anterior.
Aquí está el código para crear múltiples alarmas individuales y mantenerlas en ArrayList
. PendingIntent
''s en la matriz porque eso es lo que necesitas para cancelar tu alarma.
// context variable contains your `Context`
AlarmManager mgrAlarm = (AlarmManager) context.getSystemService(ALARM_SERVICE);
ArrayList<PendingIntent> intentArray = new ArrayList<PendingIntent>();
for(i = 0; i < 10; ++i)
{
Intent intent = new Intent(context, OnAlarmReceiver.class);
// Loop counter `i` is used as a `requestCode`
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, i, intent, 0);
// Single alarms in 1, 2, ..., 10 minutes (in `i` minutes)
mgrAlarm.set(AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000 * i,
pendingIntent);
intentArray.add(pendingIntent);
}
Además, vea esta pregunta: ¿Cómo configurar más de una alarma a la vez en Android? .