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);

値の詳細を渡すことは

現在の時刻: 16:07 時間 = 16 分 = 10

しかし

tmemills来ています 1377772800393

私はAndroidの初心者であるため、問題がどこにあるのかを見つけることができません。私を助けてください

4

4 に答える 4

0

アラームのようなものを作成するために、次のコードを使用しました。役立つことを願っています。BroadcastReceiver br; AlarmManager 午前; 最終的な静的プライベート ロング 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 )); }}`

于 2013-08-30T11:14:22.320 に答える
0

2つの時間の差が必要な場合は、これを使用できます::

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();

diffは、ミリ秒単位の違いを示します。

また、値 cal_alarm.getTimeInMillis() は日付の値をミリ秒単位で示しますが、2 つの日付の差は示しません。

于 2013-08-29T12:07:12.960 に答える
0

cal_alarm.getTimeInMillis()1970 年 1 月 1 日午前 0 時からのミリ秒数を返します。2 つの日付の違いではありません。

差を得るには、次のcal_now.getTimeInMillis()ように減算します。

long tmemills = cal_alarm.getTimeInMillis() - cal_now.getTimeInMillis();
于 2013-08-29T11:18:48.837 に答える
0

これ作って

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

この

am.setRepeating(AlarmManager.RTC_WAKEUP,tmemills +    System.currentTimeMillis(),AlarmManager.INTERVAL_DAY, sender);
于 2013-08-29T12:51:42.673 に答える