6

これは私の onclick() 関数です。これはターゲットアラームを設定します

      SA=(ボタン)findViewById(R.id.button1);
      SA.setOnClickListener(新しいOnClickListener() {

        @SuppressWarnings("非推奨")
        @オーバーライド
            public void onClick(View v) {
                showDialog(id);


            }
        });

    }
        @オーバーライド
        保護されたダイアログ onCreateDialog(int id1) {
        スイッチ (id1) {
        ケースID:
            // タイムピッカーを現在の時刻として設定

            新しい TimePickerDialog(これ、
                                         timePickerListener、時間、分、false);
        }
        null を返します。
    }

        プライベート TimePickerDialog.OnTimeSetListener timePickerListener =
            新しい TimePickerDialog.OnTimeSetListener() {
        public void onTimeSet(TimePicker view, int selectedHour,
                int selectedMinute) {
            カレンダー calnow=Calendar.getInstance();
            calnow.setTimeInMillis(System.currentTimeMillis());
            calnow.set(Calendar.HOUR_OF_DAY,selectedHour);
            calnow.set(Calendar.MINUTE,selectedMinute);
            calnow.set(Calendar.SECOND, 0);
             インテント インテント=新しいインテント(getBaseContext(),alarm.class);
            PendingIntent pendingintent= PendingIntent.getBroadcast(getBaseContext(),0, インテント, 0);
             AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);

              alarmManager.set(AlarmManager.RTC_WAKEUP, calnow.getTimeInMillis(),pendingintent);
              Toast.makeText(getBaseContext(), "アラームセット", Toast.LENGTH_SHORT).show();

        }
    };

    public void onReceive(Context arg0, Intent arg1) {
         AlarmManager mgr = (AlarmManager)arg0.getSystemService(Context.ALARM_SERVICE);

            Toast.makeText(arg0,"アラーム開始.....", Toast.LENGTH_LONG).show();

ここでの問題は、ターゲットアラームに到達する前にボタンをクリックしてアラームを設定するとすぐに、「アラームセット」と「アラーム開始」の両方のトーストが表示されることです。

4

2 に答える 2

0

ここでの問題は、TP からの値が現在の時刻のように見えることです。コードをもっと見せていただけると助かります。5秒の遅延でアラーム時間を設定する例を挙げましょう。これを試してみてください。汚い方法です。説明したいだけです。これはあなたがしたことです:

       calnow.set(Calendar.HOUR_OF_DAY,TP.getCurrentHour());
            calnow.set(Calendar.MINUTE,TP.getCurrentMinute());
          alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis(),pendingintent);

5 秒の遅延を取得するには、次のように変更します。

    alarmManager.set(AlarmManager.RTC_WAKEUP,   calnow.getTimeInMillis()+5000,pendingintent);

私が言ったように、これはalarmManagerに設定しなければならない値を示すためだけです。アラームを開始する時間はミリ秒である必要があります。このためには、TP から適切な値を取得する必要があります。したがって、あなたが私たちにあなたを助けてほしいなら、それは私たちに完全なコードを示す良い方法です.

于 2013-07-30T17:52:55.387 に答える
0

あなたのせいはここにあります。だからそのようにする

          Calendar calnow=Calendar.getInstance()
           
            calnow.set(Calendar.HOUR_OF_DAY,selectedHour);
            calnow.set(Calendar.MINUTE,selectedMinute);
            calnow.set(Calendar.SECOND, 0);
            if (calnow.getTimeInMillis()< System.currentTimeMillis()) {
            calnow.set(Calendar.DAY_OF_YEAR, 1)
            }
       

           
于 2022-02-17T18:44:02.653 に答える