2014-10-06 63 views
1

我有一個使用alarmmanager的項目。許多avtivity設置警報,然後當警報發生時,以AlarmSetter名義開始的特定活動顯示警報,並設置新的(下一個)警報和snooz警報(如果用戶需要)。我的問題只是最後設定的警報。這意味着所有的活動設置警報由最後的警報設置已經工作。例如在警報設置如果用戶選擇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); 
} 
} 

報警二傳手Java是:

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參數必須在每個報警集中有不同的地方!

相關問題