2014-10-06 2 views
1

У меня есть проект, использующий alarmmanager. многие avtivity устанавливают аварийные сигналы, а затем, когда срабатывает сигнализация, определенная активность в имени AlarmSetter, которая начала показывать аварийный сигнал, а также устанавливает новый (следующий) сигнал тревоги и аварийный сигнал (если это необходимо). моя проблема - это только последняя тревога. это означает, что вся тревога с настройкой активности заработала последним набором аварийных сигналов. Например, при настройке тревоги, если пользователь выбирает кнопку snooz, тогда основной аварийный сигнал не работает (просто работает snooz = последняя тревога сидит). я установить alarmmanager в G класса (общий) и использовать и установить сигнал тревоги активности alarm.javaПочему только последний будильник был обработан

Это мой G Класс:

public class G extends Application { 
public static AlarmManager   alarmManager; 
@Override 
public void onCreate() { 
    super.onCreate(); 
    context = getApplicationContext(); 
    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
} 
} 

Alarm сеттер Java IS:

public class ActivityAlarm extends ActivityMain { 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    requestWindowFeature(Window.FEATURE_NO_TITLE); 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.alarmshower); 

    //at first reminder will start, should register next alarm time : 
    long MilisectoAlarmManager = mDbHelper.SetNextTime_andIsactiveYET(DrugRegID); 
    if (MilisectoAlarmManager != 0 && IsFor10minlater == 0) { 
     Intent intentMain = new Intent(G.context, ActivityAlarm.class); 
     intentMain.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     intentMain.putExtra("DrugID", String.valueOf(DrugRegID)); 
     intentMain.putExtra("IsItFor10MinLate", String.valueOf(0)); 
     PendingIntent pendingIntentMain = PendingIntent.getActivity(G.context, 0, intentMain, PendingIntent.FLAG_UPDATE_CURRENT); 
     String AA = mDbHelper.GetStartDateAlarm(DrugRegID); 
     Date D = new Date(MilisectoAlarmManager); 
     System.out.println("current Date(ms): " + MilisectoAlarmManager); 
     G.alarmManager.set(AlarmManager.RTC_WAKEUP, MilisectoAlarmManager, pendingIntentMain); 
    } 



//Finished Activing Alarm Manager and switch Off Alarmn 
    else if (MilisectoAlarmManager == 0 && IsFor10minlater == 0) { 
     mDbHelper.UpdateAlarmSwitch(DrugRegID, false); 
    } 

    handler.postDelayed(r, HowLongRemainAlarm_var); 
    //End CountDown Finished Activity 

    //Procedure for 10 min later button 
    btn10minLater_var.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View arg0) { 
      // TODO Auto-generated method stub 
      btn10minLater_var.setBackgroundColor(Color.parseColor("#1174b9")); 
      Intent intentFor10min = new Intent(G.context, ActivityAlarm.class); 
      intentFor10min.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      intentFor10min.putExtra("DrugID", String.valueOf(DrugRegID)); 
      intentFor10min.putExtra("IsItFor10MinLate", String.valueOf(1)); 
      PendingIntent pendingIntent10min = PendingIntent.getActivity(G.context, 0, intentFor10min, PendingIntent.FLAG_UPDATE_CURRENT); 

      G.alarmManager.set(AlarmManager.RTC_WAKEUP, new Date().getTime() + 20000, pendingIntent10min); 



      ActivityAlarm.this.finish(); 
     } 
    }); 

ответ

3

я найденный asnwer! в параметре PendingIntent.getActivity secound должен быть разным в каждом наборе аварийных сигналов!

Смежные вопросы