Я делаю приложение, которое:Почему BroadcastReceiver инициализируется в прошлый раз?
- входы от пользователя времени диапазон ... (Начальное время, Конечное время) предположим, что пользователь дает (06:00 вечера до 07:00 PM)
- Когда текущее время телефона равно начального времени, тогда активируется бесшумный режим работы телефона.
Все работает отлично, если диапазон времени в будущем (если мое время телефон перед тем 05:00 PM в описанном выше случае):
- позволяет сказать, что мой телефон текущее время телефон 08: 00 PM, и у меня есть временной диапазон от (с 18:00 до 19:00). Затем в мое текущее время (20:00) активируется тихий режим работы телефона. Он должен активировать следующий день ...
Я сделал услугу для этого ...
Всякий раз, когда пользователь вводит диапазон времени он начинает службу OnStart и onStartCommand отменяются ...
public void onStart(Intent intent, int startId) {
super.onStart(intent, startId);
ArrayList<HashMap<String, String>> arraylist_start = (ArrayList<HashMap<String, String>>) intent.getSerializableExtra("arraylist_start");
if(arraylist_start != null){
try {
silentModeOnBroadCastReceiver.startAlarmAt(this, arraylist_start);
silentModeOffBroadCastReceiver.startAlarmOff(this, arraylist_start);
} catch (ParseException e) {
e.printStackTrace();
}
}
}
в arraylist_start я беру список временных диапазонов от намерения где диапазоны пользователь добавленное время ... То же код записывается в onStartCommand
в SilentModeOnBroadCastReceiver я добавил метод startAlarmAt который та KES что ArrayList и вызовы в ожидании намерения
public void startAlarmAt(Context context, ArrayList<HashMap<String, String>> list) throws ParseException {
Calendar calendar = Calendar.getInstance();
for (int j = 0; j < list.size(); j++){
SimpleDateFormat dateFormat = new SimpleDateFormat("HH:mm:ss");
String timeStart = list.get(j).get("timeStart");
date1 = Calendar.getInstance();
date2 = Calendar.getInstance();
date1.setTime(dateFormat.parse(timeStart));
Log.i("Date1Time", date1.toString());
int hours = date1.get(Calendar.HOUR_OF_DAY);
int minutes = date1.get(Calendar.MINUTE);
calendar.set(Calendar.HOUR_OF_DAY, hours);
calendar.set(Calendar.MINUTE, minutes);
calendar.set(Calendar.SECOND, 0);
calendar.set(Calendar.MILLISECOND, 0);
AlarmManager am =(AlarmManager)context.getSystemService(Context.ALARM_SERVICE);
Intent i = new Intent(context, SilentModeOnBroadCastReceiver.class);
PendingIntent pi = PendingIntent.getBroadcast(context, j, i, PendingIntent.FLAG_UPDATE_CURRENT);
am.setRepeating(AlarmManager.RTC_WAKEUP, date1.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pi);
}
}
Сейчас в SilentModeOnBroadCastReceiver
public void onReceive(Context context, Intent intent)
{
PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "");
wl.acquire();
// Put here YOUR code.
Toast.makeText(context, "Silent Activated !!!!!!!!!!", Toast.LENGTH_LONG).show();
Silent silent = new Silent(context);
silent.activateAudioMode(AudioManager.RINGER_MODE_SILENT);
wl.release();
}
Пожалуйста, помогите исправить мою проблему ... Почему BroadcastReceiver инициализируется в прошлый раз?
Спасибо за ответ ... Он не работает ... Я добавил его в код –
На самом деле это date1, который я устанавливаю. Повторяю ... Его время должно быть увеличено на один день ... Правильно? –
Я добавил этот код в метод startAlarmAt(). Но все еще не работает? –