para mejor inteligente despertar despertador descargar celulares celular app aplicaciones aplicacion alarmas alarma android alarms

inteligente - mejor despertador android 2017



¿Cómo puedo configurar múltiples alarmas en Android? (2)

Hasta el momento y gracias a este sitio web, he podido configurar una alarma que se configurará y activará, incluso si apago mi teléfono.

Ahora, configuré una alarma para mostrar un recordatorio para el evento A y necesito que la aplicación configure otra alarma para mostrar otro recordatorio para el evento B.

Debo estar haciendo algo mal, porque solo activa el recordatorio para el evento A. Parece que una vez configurada, cualquier otra alarma se entiende como la misma. :-(

Aquí está el detalle de lo que estoy haciendo en dos pasos:

1) De una actividad, configuro una alarma que en cierta hora y fecha llamará a un receptor

Intent intent = new Intent(Activity_Reminder.this, AlarmReceiver_SetOnService.class); intent.putExtra("item_name", prescription .getItemName()); intent .putExtra( "message", Activity_Reminder.this .getString(R.string.notif_text)); intent.putExtra("item_id", itemId); intent.putExtra("activityToTrigg", "com.companyName.appName.main.Activity_Reminder"); PendingIntent mAlarmSender; mAlarmSender = PendingIntent.getBroadcast( Activity_Reminder.this, 0, intent, 0); long alarmTime = dateMgmt.getTimeForAlarm(pickedDate); Calendar c = Calendar.getInstance(); c.setTimeInMillis(alarmTime); // Schedule the alarm! AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); am.set(AlarmManager.RTC_WAKEUP, alarmTime + 15000, mAlarmSender);

2) Del receptor llamo un servicio

Bundle bundle = intent.getExtras(); String itemName = bundle.getString("item_name"); String reminderOrAlarmMessage = bundle.getString("message"); String activityToTrigg = bundle.getString("activityToTrigg"); int itemId = Integer.parseInt(bundle.getString("item_id")); NotificationManager nm = (NotificationManager) context.getSystemService("notification"); CharSequence text = itemName + " "+reminderOrAlarmMessage; Notification notification = new Notification(R.drawable.icon, text, System.currentTimeMillis()); Intent newIntent = new Intent(); newIntent.setAction(activityToTrigg); newIntent.putExtra("item_id", itemId); CharSequence text1= itemName + " "+reminderOrAlarmMessage; CharSequence text2= context.getString(R.string.notif_Go_To_Details); PendingIntent pIntent = PendingIntent.getActivity(context,0, newIntent, 0); notification.setLatestEventInfo(context, text1, text2, pIntent); notification.flags = Notification.FLAG_AUTO_CANCEL; notification.defaults = Notification.DEFAULT_ALL; nm.notify(itemId, notification);

Gracias por adelantado,

monn3t


Ok, cuando configura un PendingIntent, se supone que debe asignarle un ID único, en caso de que quiera identificarlo más tarde (para modificarlo / cancelarlo)

static PendingIntent getActivity(Context context, int requestCode, Intent intent, int flags) //Retrieve a PendingIntent that will start a new activity, like calling Context.startActivity(Intent). static PendingIntent getBroadcast(Context context, int requestCode, Intent intent, int flags) //Retrieve a PendingIntent that will perform a broadcast, like calling Context.sendBroadcast().

El código de solicitud es esa ID.

En su código, sigue restableciendo el MISMO PendingIntent, en su lugar utiliza un RequestCode diferente cada vez.

PendingIntent pIntent = PendingIntent.getActivity(context,uniqueRQCODE, newIntent, 0);

Tiene que ser un número entero, supongo que tiene una primaryid ( itemId ) que puede identificar la alarma A de la alarma B.


Puede configurar múltiples alarmas suministrando diferentes códigos de solicitud en pendingIntent.getBroadcast (......)

El enfoque que utilicé para configurar múltiples alarmas es que creé una sola alarma. Inicialicé un entero estático en la clase de configuración de alarma 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; //........ Intent myIntent = new Intent(AlarmActivity.this, AlarmReceiver.class); pendingIntent = PendingIntent.getBroadcast(AlarmActivity.this, broadcastCode, myIntent, 0);