2013-11-15 48 views
1

我需要觸發兩個鬧鐘。如果只有一個警報,第一個就會正確啓動。如果我包含第二個代碼,則警報重疊並且不能實現所需的功能。我的問題是我需要兩臺廣播接收機還是我可以用一臺? 第一警報:使用一個接收器設置2個鬧鐘

public void triggerEnable(boolean enableData, int hourInDay, int minInDay) { 
    Calendar calendar = Calendar.getInstance(); 
    //if (enableData) { 
     calendar.set(Calendar.HOUR_OF_DAY, hourInDay); 
     calendar.set(Calendar.MINUTE, minInDay); 
//  } else { 
//   calendar.set(Calendar.HOUR_OF_DAY, hourInDay); 
//   calendar.set(Calendar.MINUTE, minInDay); 
//  } 
    calendar.set(Calendar.SECOND, 0); 
    Intent broadcastIntent = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE"); 
    broadcastIntent.putExtra("FLAG_KEY", enableData); 
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 
    AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); 
    am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(),AlarmManager.INTERVAL_DAY, pi); 

} 

廣播接收機:

@Override 
public void onReceive(Context context, Intent intent) { 
    if(CONN_ACTION.equals(intent.getAction())) { 
     boolean enableConn = intent.getBooleanExtra("FLAG_KEY", false); 
      objNetwork.setMobileDataEnabled(context, enableConn); 
     //what do I do here to have different values for the second alarm? 
     } 
    } 
} 

回答

0

如所陳述在機器人文檔。

如果已經爲同一個IntentSender安排了鬧鐘,它將首先被取消。

我相信你需要設置一個接一個的時間。

0

您必須創建兩個待處理的意圖。

Intent alarm1 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE"); 
    broadcastIntent.putExtra("FLAG_KEY", enableData); 
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, alarm1 , PendingIntent.FLAG_UPDATE_CURRENT); 

Intent alaram2 = new Intent("com.sang.mobiledata.IntentAction.RECEIVE_CONN_UPDATE"); 
    broadcastIntent.putExtra("FLAG_KEY", enableData); 
    PendingIntent pi = PendingIntent.getBroadcast(this, 0, alaram2 , PendingIntent.FLAG_UPDATE_CURRENT); 

然後你必須註冊兩個廣播接收器。

private static BroadcastReceiver alarm1= null; 
private static BroadcastReceiver alaram2= null; 

alarm1= new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
     if(CONN_ACTION.equals(intent.getAction())) { 
     boolean enableConn = intent.getBooleanExtra("FLAG_KEY", false); 
     objNetwork.setMobileDataEnabled(context, enableConn); 

     } 

} 

alaram2=new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
//put your code for the second alarm here 

} 

試試這個。我相信這會起作用。

+0

我不知道,但這個人有一些嚴重的語法錯誤。它沒有工作。 – Adi

4

這可以通過使用單個廣播接收器,但使用具有不同ID的未決意圖來實現。 現在你正在做的是發送多個具有相同ID的未決意圖。正因爲如此,它們是重疊的。你需要做的是用另一個ID發送另一個掛起的意圖。
首先意圖

 PendingIntent pi = PendingIntent.getBroadcast(this, 0, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

其次意圖

PendingIntent pi = PendingIntent.getBroadcast(this, 1, broadcastIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

然後用alarmManager的幫助下,火被你的廣播接收器接收這些掛起的意圖。 希望它有幫助

+0

我該如何解決這些未決意圖? – Adi