2

日付ピッカーと時刻ピッカーから一度に時刻と日付を設定できるこのコードがあります。

 private void dialoguetime() {

    final Dialog dialog = new Dialog(this);
    dialog.setContentView(R.layout.custom_dialogue);
    dialog.setCancelable(true);
    dialog.setTitle("This is Dialog 1");
    dialog.show();

    TimePicker time_picker = (TimePicker) dialog
            .findViewById(R.id.timePicker1);
    hours = time_picker.getCurrentHour();
    minute = time_picker.getCurrentMinute();
    time_picker.setOnTimeChangedListener(new OnTimeChangedListener() {
        public void onTimeChanged(TimePicker view, int hourOfDay,
                int minutes) {
            // TODO Auto-generated method stub
            // Toast.makeText(CustomDialog.this,
            // "hourOfDay = "+hourOfDay+"minute = "+minute , 1000).show();
            hours = hourOfDay;
            minute = minutes;
        }
    });

    final DatePicker date_picker = (DatePicker) dialog
            .findViewById(R.id.datePicker1);
    Button btn = (Button) dialog.findViewById(R.id.button2);
    btn.setOnClickListener(new OnClickListener() {

        public void onClick(View arg0) {
            // TODO Auto-generated method stub



            xDate = date_picker.getYear() + "-"+ (date_picker.getMonth() + 1) + "-"+ date_picker.getDayOfMonth() + " " + hours+ ":" + minute + ":00";
            Toast.makeText(
                    getApplicationContext(),
                    xDate, Toast.LENGTH_LONG)
                    .show();
            dialog.cancel();
        }

    }

    );

}

これから、このような日付形式として文字列を取得できますyyyy-mm-dd hh:mm:ss。選択した時間のユーザーにアラートを (アラームとして) 伝えたいと思います。これにはアラーム マネージャーを使用しましたが、その日付を選択できませんでした。

これどうやってするの?

4

1 に答える 1

2

AlarmManager の API (http://developer.android.com/reference/android/app/AlarmManager.html) を見ると、メソッドが

set()

次のパラメータが必要です。

public void set (int type, long triggerAtMillis, PendingIntent operation)

どこ

int type = One of ELAPSED_REALTIME, ELAPSED_REALTIME_WAKEUP, RTC or RTC_WAKEUP.
long triggerAtMillis = time in milliseconds that the alarm should go off, using the appropriate clock (depending on the alarm type).
PendingIntent operation = Action to perform when the alarm goes off

したがって、基本的にすべきことは、選択した日付 (DateFormat.parse() で日付形式の文字列を解析して現在の日付まで) と現在の日付の間の時間を取得することです。このようなもの:

Date now = new Date();
SimpleDateFormat format = new SimpleDateFormat("yyyy-mm-dd hh:mm:ss");
Date parsedDate = format.parse(YOUR_PICKED_DATE_AS_STRING);
long alertTime = parsedDate.getTime() - now.getTime();

Intent someIntent = new Intent(getApplicationContext(), YourClass.class);
PendingIntent pending = PendingIntent.getBroadcast(getApplicationContext(), 0, someIntent, 0);

AlarmManager manager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
manager.set(AlarmManager.
于 2012-09-18T15:54:32.063 に答える