2013-08-29 16 views
0
Date dat = new Date(); 

Calendar cal_alarm = Calendar.getInstance(); 
Calendar cal_now = Calendar.getInstance(); 
cal_alarm.setTime(dat); 
cal_alarm.set(Calendar.HOUR_OF_DAY, hrs);// set the alarm time 
cal_alarm.set(Calendar.MINUTE, min); 
cal_alarm.set(Calendar.SECOND, 0); 
cal_alarm.set(Calendar.MILLISECOND, 0); 
if (cal_alarm.before(cal_now)) {// if its in the past increment 
    cal_alarm.add(Calendar.DATE, 1); 
} 
Intent intent = new Intent(ctx, AlarmReceiver.class); 
// intent.putExtra("Reminder to Take Photo", "Pixitch!"); 
PendingIntent sender = PendingIntent.getBroadcast(ctx, 192837, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
// Get the AlarmManager service 
Long tmemills = cal_alarm.getTimeInMillis(); 

AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE); 
am.setRepeating(AlarmManager.RTC_WAKEUP, tmemills,AlarmManager.INTERVAL_DAY, sender); 

傳遞值詳細是calender.getTimeInMillis()未設定正確

當前時間是:16:07 小時= 16 分鐘= 10

tmemills即將1377772800393

我無法找到問題出在哪裏 因爲我是A的初學者ndroid。 請幫我

+0

1377772800393有什麼問題? – flx

+0

從16:07到16:10差距大約是180000毫秒,但它顯示1377772800393 – Viresh

+0

http://stackoverflow.com/a/16220883/1777090檢查它 –

回答

0

請此

long tmemills = cal_alarm.getTimeInMillis() - cal_now.getTimeInMillis(); 

am.setRepeating(AlarmManager.RTC_WAKEUP,tmemills + System.currentTimeMillis(),AlarmManager.INTERVAL_DAY, sender); 
0

cal_alarm.getTimeInMillis()給你從1970年1月1日午夜起的毫秒數。這不是你的兩個日期之間的差異。

得到的差異,減去cal_now.getTimeInMillis()這樣的:

long tmemills = cal_alarm.getTimeInMillis() - cal_now.getTimeInMillis(); 
+1

有沒有聽說過Java運營商:http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op1.html – Henry

+0

謝謝@Henry價值是完美的但阿拉拉姆正在運行immidiatly ...請任何建議? – Viresh

0

如果你想兩個時間之間的區別,你可以使用這個::

Date date1 = cal.getTime(); String endTime = "2013/29/08 18:59:59"; SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy/dd/MM HH:mm:ss"); Date dtEndTime = dateFormat.parse(endTime); DecimalFormat formatter = new DecimalFormat("###,###"); long diff = dtEndTime.getTime() - date1.getTime();

差異會給你以毫秒爲單位的差異。

此外,值cal_alarm.getTimeInMillis()將以毫秒爲單位給出日期的值,它不會給出兩個日期的差異。

+0

尊敬的來自long tmemills的@Ritaban = cal_alarm.getTimeInMillis() - cal_now.getTimeInMillis();價值來臨正確,但阿拉姆經理正在開立immidiatly :( – Viresh

0

我用下面的代碼爲喜歡它helps.`public類AlarmManagerActivity延伸活動{ 的PendingIntent PI的alarm..hope創建一些; BroadcastReceiver br; AlarmManager am; final static private long ONE_SECOND = 1000; final static private long Five_SECONDS = ONE_SECOND * 5;

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    setup(); 
    findViewById(R.id.tv).setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      am.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, SystemClock.elapsedRealtime() + 
        Five_SECONDS, pi); 
     }  });  

}  
@Override 
protected void onDestroy() { 
     am.cancel(pi); 
     unregisterReceiver(br); 
     super.onDestroy(); 
}  
private void setup() { 
    br = new BroadcastReceiver() { 
      @Override 
      public void onReceive(Context c, Intent i) { 
        Toast.makeText(c, "Rise and Shine!", Toast.LENGTH_LONG).show(); 
        } 
      }; 
    registerReceiver(br, new IntentFilter("abc")); 
    pi = PendingIntent.getBroadcast(this, 0, new Intent("abc"), 

0); am =(AlarmManager)(this.getSystemService(Context.ALARM_SERVICE)); }}`