当前位置:首页 > 谈天说地

Android实现简易的闹钟功能

34资源网2022-09-13533

本文实例为大家分享了android实现简易的闹钟功能的具体代码,供大家参考,具体内容如下

主要是通过广播,实现一个闹钟的简易功能。

实现效果如下:

主界面为一个简易的设置闹钟button,点击“设置闹钟”弹出时间设置窗。设置成功后,会自动弹出弹窗,提示“时间到了”。

打开android studio,选择file>new>new project,选择phone and tablet设备下的empty activity,创建项目名称为“drinkremind”,并点击“finish”,完成项目创建。

首先打开资源文件夹“res>layout>activity_main.xml”布局文件,创建主界面。这里我们需要一个设置闹钟的button,修改activity_main.xml代码如下:

<?xml version="1.0" encoding="utf-8"?>

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"  
    android:orientation="vertical"    
    android:layout_width="fill_parent"    
    android:layout_height="fill_parent"    
    xmlns:app="http://schemas.android.com/apk/res-auto"    
    xmlns:tools="http://schemas.android.com/tools"    
    tools:context=".mainactivity">  
      
    <button        
        android:id="@+id/set_clock"        
        android:layout_width="fill_parent"        
        android:layout_height="wrap_content"        
        android:text="设置闹钟"/>
</linearlayout>

在mainactivity.java中,通过闹钟管理器 alarmmanager 来设定闹钟,通过timepickerdialog 弹出闹钟设置窗口。修改mainactivity.java中的代码如下:

public class mainactivity extends activity {    
    private button btn;    
    private alarmmanager alarmmanager;  //闹钟管理器    
    
    @override    
    protected void oncreate(bundle savedinstancestate) {        
        super.oncreate(savedinstancestate);        
        setcontentview(r.layout.activity_main);        

        //获取闹钟管理器        
        alarmmanager = (alarmmanager) getsystemservice(context.alarm_service);        

        btn = (button)findviewbyid(r.id.set_clock);        
        btn.setonclicklistener(new view.onclicklistener() {            
            @override            
            public void onclick(view view) {                
                setclock(view);            
            }        
        });   
    }    

    public void setclock(view view){        
        //获取当前系统时间        
        calendar calendar = calendar.getinstance();        
        int hour = calendar.get(calendar.hour_of_day);        
        int minute = calendar.get(calendar.minute);        

        //弹出闹钟框        
        timepickerdialog timepickerdialog = new timepickerdialog(this, new timepickerdialog.ontimesetlistener() {            
            @override            
            public void ontimeset(timepicker view, int hourofday, int minute) {                
                calendar c = calendar.getinstance();    //获取日期对象           
                c.set(calendar.hour_of_day, hourofday); //设置闹钟小时数              
                c.set(calendar.minute, minute); //设置闹钟分钟数                
                intent intent = new intent(mainactivity.this, alarmreceiver.class);                
                //创建pendingintent                
                pendingintent pendingintent = pendingintent.getbroadcast(mainactivity.this,0x102, intent,0);                
                //设置闹钟                
                alarmmanager.set(alarmmanager.rtc_wakeup, c.gettimeinmillis(), pendingintent);
                toast.maketext(mainactivity.this, "闹钟设置成功", toast.length_short).show();            
            }        
        },hour,minute,true);        
        timepickerdialog.show();    
    }
}

当闹钟到达设定时间后,需要显示闹钟的提醒框,这里新建alarmactivity.java类,设置闹钟的提醒框,代码如下:

public class alarmactivity extends activity {    
    @override    
    public void oncreate(bundle savedinstancestate) {        
        super.oncreate(savedinstancestate);        

    //显示闹钟提醒框        
    new alertdialog.builder(alarmactivity.this)                
        .settitle("闹钟")                
        .setmessage("时间到了")                
        .setpositivebutton("确定", new dialoginterface.onclicklistener(){                    
            public void onclick(dialoginterface dialoginterface, int which) {
                alarmactivity.this.finish();                    
            }                
        }).create().show();   
    }
}

创建一个广播接收类alarmreceiver,继承broadcastrecevice并实现onreceive方法即可。当广播发送后,系统会去检查广播接收器的过滤器与广播所发送的intent是否一致, 如果一致则调用onreceive方法。一旦接收到广播,则会立即在onreceive方法里调用alarmactivity,显示“时间到了”的弹窗。由于使用到了广播机制,所以就算不开着alarmactivity,也可以在后台监控这个广播。alarmreceiver实现代码如下:

public class alarmreceiver extends broadcastreceiver { 
   
    @override    
    public void onreceive(context context, intent intent) {        
        intent i = new intent(context, alarmactivity.class);
        i.addflags(intent.flag_activity_new_task);        
        context.startactivity(i);    
    }
}

广播类alarmreceiver和提醒框类alarmactivity需要在manifest.xml中进行配置,打开androidmainfest.xml,在< application> 标签下增加配置。

进行配置,打开androidmainfest.xml,在<application>标签下增加配置。

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.drinkremind">    

    <application        
        android:allowbackup="true"        
        ......        
        <activity android:name=".mainactivity">            
            <intent-filter>                
                <action android:name="android.intent.action.main" />                
                <category android:name="android.intent.category.launcher" />            
            </intent-filter>        
        </activity>        
        <activity android:name=".alarmactivity"/>        
        <receiver android:name=".alarmreceiver" android:process=":remote"/>    
    </application>
</manifest>

基于以上代码,我们就实现了一个简单的android端的闹钟提醒app,运行后,点击主界面的“设置闹钟”按键,效果如图所示。

完成闹钟设置,等待至到达闹钟设置时间后,界面会自动弹出“时间到了”的提醒框,如图所示。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持萬仟网。

看完文章,还可以扫描下面的二维码下载快手极速版领4元红包

快手极速版二维码

快手极速版新人见面礼

除了扫码领红包之外,大家还可以在快手极速版做签到,看视频,做任务,参与抽奖,邀请好友赚钱)。

邀请两个好友奖最高196元,如下图所示:

快手极速版邀请好友奖励

扫描二维码推送至手机访问。

版权声明:本文由34楼发布,如需转载请注明出处。

本文链接:https://www.34l.com/post/22061.html

分享给朋友:

相关文章

好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

好想你花开富贵大礼包多少钱一提?1236g优惠价只需要43.90元

好想你花开富贵大礼包多少钱一提?好想你,花开富贵礼盒1236g零食大礼包,原价58.90元,领取15元的优惠券减掉之后只需要43.90元,这个价格在近30日内属于最低价,喜欢这款商品的朋友不要错过哦。…

谈2022年平衡发展策略,我们要平衡的发展

谈2022年平衡发展策略,我们要平衡的发展

2022年解决方案的第二个关键词叫平衡。我们要平衡的发展,长期的发展。你的个人生活,你的公司事业,还有国家的形势,我觉得一定要平衡的去发展,不能说我只赚钱,身体就搞垮,或者说我只赚快钱,但是不关心国家的形势。你看,密室逃脱这个行业,上周国家…

应用汇下载安装最新版(2021最新版应用汇app)

应用汇下载安装最新版(2021最新版应用汇app)

Donews8月17日消息(记者 邱慧)近日,为安卓手机服务的应用型软件“应用汇”新版正式上线,同时推出“应用收藏”功能——“应用集”。 应用集主要分为“推荐”、“最热”、“最新”三类。应用汇官方介绍,此次新版上线后,安装包被优化缩小,给…

这家带有ESG基因的SaaS公司,如何定义未来的服装行业?

这家带有ESG基因的SaaS公司,如何定义未来的服装行业?

编者按:本文转自GGV纪源资本,创业邦经授权转载。 随着新一轮科技革命和产业变革,服装行业进行数智化转型升级已经成为了行业共识,但是多数企业对服装智能制造转型升级系统性认识不足,传统大批量流水线的生产方式无法满足市场“多款式”、“小批量”、…

ipad怎么录音转文字(分享3个录音转文字的方法)

ipad怎么录音转文字(分享3个录音转文字的方法)

在我们日常工作和日常学习中,我们在一些需要将话语内容给记录下来的场合,通常会选择录音,这样之后我们可以进行反复听写并整理成文稿。但随着科技的不断发展,我们现在不仅可以直接录音,还可以直接把音频文件转换成文字,这样就不需要我们自己对音频文件进…

静物拍摄怎样拍出高级感(静物拍照的技巧和角度)

静物拍摄怎样拍出高级感(静物拍照的技巧和角度)

静物摄影其实不如大家想象的一般轻巧,日常所见的普通物什和菜肴,要拍出静谧质感,不落俗套,反而更为困难。 不过,有了今天宇哥为大家推荐的美食静物摄影LR预设, 普普通通的原片也能变成物哀美学大作!镜头不能表现其可口百分之一的佳肴也能鲜亮诱人!…