简体   繁体   English

设置AlarmManager时间onClick android

[英]Setting AlarmManager Time onClick android

i am trying to change the AlarmManager 's time to 1 day, 3 days and 7 days on the click of respective buttons.我试图通过单击相应的按钮将AlarmManager的时间更改为 1 天、3 天和 7 天。 for instance, if i click on "1 day" button, the alarm should be set in a way that it repeats every day and so on.例如,如果我点击“1 天”按钮,闹钟应该设置为每天重复,依此类推。 but i have no idea how to achieve this, i have the code for repeating alarm with pre defined time但我不知道如何实现这一点,我有在预定义时间重复警报的代码

public class MainActivity extends Activity {

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

        Intent intent = new Intent(this, NotifyService.class);
        PendingIntent sender = PendingIntent.getBroadcast(this, 0, intent,
                PendingIntent.FLAG_CANCEL_CURRENT);
        AlarmManager am = (AlarmManager) this
                .getSystemService(Context.ALARM_SERVICE);
        long recurring = (1 * 60000 * 60 * 24); // repeat every 24 hrs
        am.setRepeating(AlarmManager.RTC, Calendar.getInstance()
                .getTimeInMillis(), recurring, sender);
    }

    public void set1day(View view) {
        //...
    }

    public void set3days(View view) {
        //...
    }

    public void set7days(View view) {
        //...
    }
}

There are default constants available for interval day.间隔日有可用的默认常量。 You should use them instead of calculating seconds for intervals.您应该使用它们而不是计算间隔的秒数。 like this one:像这个:

for single day interval单日间隔

 public void set1day(View view) {      
    am.setInexactRepeating(AlarmManager.RTC, Calendar.getInstance()
                .getTimeInMillis(), AlarmManager.INTERVAL_DAY, sender);
}

for 3 days interval间隔3天

public void set3day(View view) { 
    am.setInexactRepeating(AlarmManager.RTC, Calendar.getInstance()
                .getTimeInMillis(), AlarmManager.INTERVAL_DAY*3, sender);
}

for any n days interval对于任何 n 天间隔

am.setInexactRepeating(AlarmManager.RTC, Calendar.getInstance()
            .getTimeInMillis(), AlarmManager.INTERVAL_DAY*n, sender);

Also, as of API 19, all repeating alarms are inexact.此外,从 API 19 开始,所有重复的警报都是不准确的。 Use setInexactRepeating to avoid battery drain.使用setInexactRepeating避免电池耗尽。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM