Android实现简易的闹钟功能
本文实例为大家分享了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元,如下图所示:






