- Posts del Foro: 2
25 feb. 2015 18:08:25 vía Web
25 feb. 2015 18:08:25 vía Web
Hola, espero alguien me pueda ayudar con esto.
Estoy tratando de crear 5 alarmas distintas en android studio.
Lo que pasa es que cuando creo las alarmas con 1 min de diferencia para probar que sirven 3 de las 5 se me acumulan en una sola alarma.
Ej:
alarma 1
alarma 2
alarma 3
alarma 4
alarma 5
suena la alarma 1 cuando llega a la dos no pasa nada, luego llega a la 3 no pasa nada y cuando llega a la 4 me envia la 2,3 y 4 en una sola notificacion.
Ya revise el codigo y parece estar bien, ya que al parecer genera un id diferente para cada alarma y asi no caiga una alarma sobre otra pero se me acumulan como indique antes.
aca la funcion que crea las alarmas.
Alguien sabe que pueda estar fallando para que se acumuelen las alarmas unas con otras???
Gracias
public class Recordatorios2 extends Activity {
Button buttonstartSetDialog;
TextView desayuno,merienda1,almuerzo,merienda2,cena;
TimePickerDialog timePickerDialog;
private Spinner alarma;
private String comida,descripcion;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.recordatorios2);
llenarSpinnerAlarmas();
desayuno = (TextView)findViewById(R.id.Desayuno);
merienda1 = (TextView) findViewById(R.id.Merienda1);
almuerzo = (TextView) findViewById(R.id.Almuerzo);
merienda2 = (TextView) findViewById(R.id.Merienda2);
cena = (TextView) findViewById(R.id.cena);
alarma = (Spinner) findViewById(R.id.spinnerAlarma);
buttonstartSetDialog = (Button)findViewById(R.id.startSetDialog);
buttonstartSetDialog.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// desayuno.setText("");
openTimePickerDialog(false);
}
});
}
public void llenarSpinnerAlarmas(){
alarma = (Spinner) findViewById(R.id.spinnerAlarma);
//Creamos el adaptador
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this,R.array.Alarmas,android.R.layout.simple_spinner_item);
//Añadimos el layout para el menú
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
//Le indicamos al spinner el adaptador a usar
alarma.setAdapter(adapter);
}
private void openTimePickerDialog(boolean is24r) {
Calendar calendar = Calendar.getInstance();
timePickerDialog = new TimePickerDialog(
Recordatorios2.this,
onTimeSetListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
is24r);
timePickerDialog.setTitle("Elija la alarma");
timePickerDialog.show();
}
TimePickerDialog.OnTimeSetListener onTimeSetListener
= new TimePickerDialog.OnTimeSetListener(){
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
Calendar calNow = Calendar.getInstance();
Calendar calSet = (Calendar) calNow.clone();
calSet.set(Calendar.HOUR_OF_DAY, hourOfDay);
calSet.set(Calendar.MINUTE, minute);
calSet.set(Calendar.SECOND, 0);
calSet.set(Calendar.MILLISECOND, 0);
if(calSet.compareTo(calNow) <= 0){
calSet.add(Calendar.DATE, 1);
}
setAlarm(calSet);
}};
private void setAlarm( Calendar targetCal) {
if(alarma.getSelectedItem().toString().equals("Desayuno")){
desayuno.setText("Desayuno: " + targetCal.getTime());
comida = desayuno.getText().toString();
descripcion = "desayuno";
}else if(alarma.getSelectedItem().toString().equals("Primera Merienda")){
merienda1.setText("Primer Merienda: " + targetCal.getTime());
comida = merienda1.getText().toString();
descripcion = "primera merienda";
}else if(alarma.getSelectedItem().toString().equals("Almuerzo")){
almuerzo.setText( "Almuerzo: " + targetCal.getTime());
comida = almuerzo.getText().toString();
descripcion = "almuerzo";
}else if(alarma.getSelectedItem().toString().equals("Segunda Merienda")){
merienda2.setText( "Segunda Merienda: " + targetCal.getTime());
comida = merienda2.getText().toString();
descripcion = "segunda merienda";
} else if(alarma.getSelectedItem().toString().equals("Cena")){
cena.setText("Cena: " + targetCal.getTime());
comida = cena.getText().toString();
descripcion = "cena";
}
Intent intent = new Intent(getBaseContext(), AlarmReceiver.class);
intent.putExtra("Comida",comida);
final int id = (int)System.currentTimeMillis()/1000;
Random generator = new Random();
int id_nuevo = id * 5 + generator.nextInt();
PendingIntent pendingIntent = PendingIntent.getBroadcast(getBaseContext(), id_nuevo ,intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
alarmManager.set(AlarmManager.RTC_WAKEUP, targetCal.getTimeInMillis(), pendingIntent);
Toast.makeText(this,"Alarma " + descripcion + " creada",Toast.LENGTH_SHORT).show();
y la clase AlarmReceiver
public class AlarmReceiver extends BroadcastReceiver {
MediaPlayer player;
Recordatorios2 r = new Recordatorios2();
@Override
public void onReceive(Context arg0, Intent i) {
String v = i.getStringExtra("Comida");
Toast.makeText(arg0,v, Toast.LENGTH_LONG).show();
player = MediaPlayer.create(arg0,R.raw.alarma);
player.start();
}
}
— modificado el 25 feb. 2015 18:17:35