如何使用AlarmManager显示警报响起的剩余时间?

时间:2020-02-04 12:54:38

标签: android alarmmanager

我想知道如何显示闹钟响的剩余时间。我也想知道我们如何从不同的类增加/更改不同类的变量值。假设我有一个游戏,用户每天凌晨12点都有生命。因此,如何使用AlarmManager为用户提供生活。

这是我的MainActivity代码

CREATE TRIGGER UPDATED_Contact_Trigger 
ON table1 
AFTER UPDATE
AS
BEGIN
    -- update your base table
    UPDATE t1
    -- set the client_code to the employee_code from Table2
    SET client_code = t2.employee_code
    FROM dbo.Table1 t1
    -- join to "Inserted" to know what rows were updated - use the primary key
    INNER JOIN Inserted i ON t1.(primarykey) = i.(primarykey)
    -- join to "Deleted" to check if the "Phone" has been updated (between Deleted and Inserted)
    INNER JOIN Deleted d ON i.(primarykey) = d.(primarykey)
    -- join to "Table2" to be able to fetch the employee_code
    INNER JOIN dbo.Table2 t2 ON t2.mobile_no = t1.phone
    -- ensure the "Phone" has changed, between the old values (Deleted) and new values (Inserted)
    WHERE i.Phone <> d.Phone;
END;

我的alarmReciever类

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        TextView textView = findViewById(R.id.timeRemain);
        long timeRemaining;
        final TimePicker timePicker = findViewById(R.id.timepicker);

        findViewById(R.id.alarm).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Calendar calendar = Calendar.getInstance();

                if (Build.VERSION.SDK_INT >= 23) {
                    calendar.set(
                            calendar.get(Calendar.YEAR),
                            calendar.get(Calendar.MONTH),
                            calendar.get(Calendar.DAY_OF_MONTH),
                            timePicker.getHour(),
                            timePicker.getMinute(),
                            0
                    );
                }else {
                    calendar.set(
                            calendar.get(Calendar.YEAR),
                            calendar.get(Calendar.MONTH),
                            calendar.get(Calendar.DAY_OF_MONTH),
                            timePicker.getCurrentHour(),
                            timePicker.getCurrentMinute(),
                            0
                    );
                }
                setAlarm(calendar.getTimeInMillis());
            }
        });
    }

    private void setAlarm(long timeInMillis) {
        AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        Intent intent = new Intent(this, Alarm.class);
        PendingIntent pendingIntent = PendingIntent.getBroadcast(this, 0, intent, 0);
        alarmManager.setRepeating(AlarmManager.RTC,  timeInMillis, AlarmManager.INTERVAL_DAY,
                pendingIntent);
        Toast.makeText(this,"Alarm is Set", Toast.LENGTH_SHORT) .show();
    }
}

}

有什么建议吗?预先感谢。

1 个答案:

答案 0 :(得分:0)

我找到了答案。我们可以使用CountdownTimer查找剩余时间。

以下是代码:

    long total = calendar.getTimeInMillis();
    diff = total-System.currentTimeMillis();
    countDownTimer = new CountDownTimer(diff, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {

            diff = millisUntilFinished;
            int minutes = (int) (diff/1000) / 60;
            int seconds = (int) (diff/1000) %60;
            textView.setText("TIme Remain:" + minutes + ":" + seconds);
        }

        @Override
        public void onFinish() {

            textView.setText("00:00");
        }
    }.start();
相关问题