[Android]闹钟

本文是对Android系统中AlarmManager服务类使用的总结,重点介绍了在API 19及以上版本如何设置重复闹钟,通过调用set()方法并在第一次触发后设置下一个闹钟。文中包含AlarmBean、设置闹钟的代码、SQLite数据库操作、广播接收器以及闹钟界面AlarmActivity的实现。
摘要由CSDN通过智能技术生成

    最近离开了上家来到了新公司,适应了一段时间,然后写了一部分有关闹钟的代码,这里做个小小的总结。
    Android的闹钟有个系统的服务类——AlarmManager,这个类的使用还是很容易懂的,我在这里先列一下至少需要知道的知识点:

1.AlarmManager:set(int type, long triggerAtMillis, PendingIntent operation)
2.AlarmManager:setRepeating(int type, long triggerAtMillis, long intervalMillis, PendingIntent operation)
3.PendingIntent:getBroadcast(Context context, int requestCode, Intent intent, int flags)


    网上有很多的讲解,但是很多都是旧版本(API < 19)的介绍,所以我在这里特别说明一下,API 19 之后,setRepeating()方法不准或只执行一次,这样设置重复闹钟就会很坑,这里讲一下另外一种做法:也就是调用set()方法,然后在第一个闹钟接收到后设置下一个闹钟。

    废话不多说,直接撸代码,我尽量把注释写的简介明了。

1.先来一个AlarmBean:

public class AlarmBean {
    private String content;//闹钟内容
    private Date cur_time;//设置闹钟的时间
    private String repeat;//是否重复
    private Date time;//闹钟提醒时间

    public String getContent() {
        return content;
    }

    public void setContent(String content) {
        this.content = content;
    }

    public Date getCur_time() {
        return cur_time;
    }

    public void setCur_time(Date cur_time) {
        this.cur_time = cur_time;
    }

    public String getRepeat() {
        return repeat;
    }

    public void setRepeat(String repeat) {
        this.repeat = repeat;
    }

    public Date getTime() {
        return time;
    }

    public void setTime(Date time) {
        this.time = time;
    }

    @Override
    public String toString() {
        StringBuilder temp = new StringBuilder();
        if (repeat.equals("0000000")) temp = temp.append("不重复");
        else {
            char[] array = repeat.toCharArray();
            if (array[0] == '1') {
                temp = temp.append("每周一 ");
            }
            if (array[1] == '1') {
                temp = temp.append("每周二 ");
            }
            if (array[2] == '1') {
                temp = temp.append("每周三 ");
            }
            if (array[3] == '1') {
                temp = temp.append("每周四 ");
            }
            if (array[4] == '1') {
                temp = temp.append("每周五 ");
            }
            if (array[5] == '1') {
                temp = temp.append("每周六 ");
            }
            if (array[6] == '1') {
                temp = temp.append("每周日 ");
            }
        }
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String tar = simpleDateFormat.format(time);
        if (cur_time == null)
            return "闹钟提醒时间:" + tar + ";闹钟提醒内容:" + content + ";闹钟重复次数:" + temp.toString();
        else {
            String cur = simpleDateFormat.format(cur_time);
            return "闹钟设置时间:" + cur + ";闹钟提醒时间:" +
                    tar + ";闹钟提醒内容:" + content + ";闹钟重复次数:" + temp.toString();
        }

    }
}

2.再来一个设置闹钟的地方,我是把闹钟设置放在了Application中:

public class MyApplication extends Application {

    private stati
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值