android闹铃功能源码(android闹钟实现)
本文目录一览:
- 1、android 代码闹钟实现
- 2、android开发,闹钟问题,想设置一个每天8点的闹钟,如何才能解决立即启动这个问题,附代码:
- 3、求安卓闹钟原理,求详细
- 4、基于android的闹钟如何添加和删除
- 5、android源码中闹钟源码在哪儿
android 代码闹钟实现
不需要activity, 你用Dialog就行.
也不需要另找声音文件,你用系统自带的铃声就行.
闹钟怎么设置可以看我在eoe论坛的贴子:
android开发,闹钟问题,想设置一个每天8点的闹钟,如何才能解决立即启动这个问题,附代码:
你设置的时间已经过了。就是说,你的这句话有逻辑问题。
if(calendar.getTimeInMillis() calendar.getTimeInMillis()){
calendar.set(Calendar.DAY_OF_YEAR, calendar.get(Calendar.DAY_OF_YEAR) + 1);
}
你是想写成这样吧?
if(System.currentTimeMills() calendar.getTimeInMillis()){...}
还有一个地方你应该注意一下。
最前面一句最好这么写。
Calendar calendar = Calendar.getInstance(Locale.getDefault());
求安卓闹钟原理,求详细
请参考下面的这篇【android闹钟实现原理】文章,也许对你有启示。
我们来看看新建闹钟到闹钟响铃的步骤:
1、新建一个闹钟:
01
// 获得AlarmManager实例
02
final AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
03
04
// 实例化Intent
05
Intent intent = new Intent();
06
// 设置Intent action属性
07
intent.setAction("com.test.BC_ACTION");
08
intent.putExtra("msg", "该去开会啦!");
09
// 实例化PendingIntent
10
final PendingIntent pi = PendingIntent.getBroadcast(MainActivity.this, 0,
11
intent, 0);
12
// 获得系统时间
13
final long time = System.currentTimeMillis();
14
am.set(AlarmManager.RTC_WAKEUP, time+5000, sender);//5秒后闹铃
15
16
// 设置按钮单击事件
17
setBtn.setOnClickListener(new OnClickListener() {
18
@Override
19
public void onClick(View v) {
20
// 重复提示,从当前时间开始,间隔5秒
21
am.setRepeating(AlarmManager.RTC_WAKEUP, time,
22
5 * 1000, pi);
23
}
24
});
在AndroidMainfest.xml里注册广播接收器
1
receiver android:name="MyReceiver"
2
intent-filter
3
action android:name="com.test.BC_ACTION"/
4
/intent-filter
5
/receiver
2、定义一个AlarmReceiver extends BroadcastReceiver接收广播,并弹出闹钟提醒视图。
上面用到一个AlarmManage,我们分别来看看它的处理闹钟流程和作用及例子。
处理闹钟流程:对应AlarmManage有一个AlarmManagerServie服务程序,该服务程序才是正真提供闹铃服务的,它主要遍历闹铃列表并设置即将触发的闹铃给闹铃设备,并且一直监听闹铃设备,一旦有闹铃触发或者是闹铃事件发生,AlarmManagerServie服务程序就会遍历闹铃列表找到相应的注册闹铃并发出广播。
作用及例子:AlarmManage中文名闹钟,或者叫做“全局定时器”更合适,它的作用和Timer类似,有两种使用方法:1、在特定时长后(特定时间)执行某任务;2、周期性的执行某任务,AlarmManager对象配合Intent使用,可以定时的开启一个Activity,发送一个BroadCast,或者开启一个Service.
(1)在指定时长后(特定时间)执行某项操作
01
//操作:发送一个广播,广播接收后Toast提示定时操作完成
02
Intent intent =new Intent(Main.this, alarmreceiver.class);
03
intent.setAction("short");
04
PendingIntent sender=
05
PendingIntent.getBroadcast(Main.this, 0, intent, 0);
06
07
//设定一个五秒后的时间
08
Calendar calendar=Calendar.getInstance();
09
calendar.setTimeInMillis(System.currentTimeMillis());
10
calendar.add(Calendar.SECOND, 5);
11
12
AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);
13
alarm.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), sender);
14
//或者以下面方式简化
15
//alarm.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+5*1000, sender);
16
17
Toast.makeText(Main.this, "五秒后alarm开启", Toast.LENGTH_LONG).show();
(2)周期性的执行某项操作
01
Intent intent =new Intent(Main.this, alarmreceiver.class);
02
intent.setAction("repeating");
03
PendingIntent sender=PendingIntent
04
.getBroadcast(Main.this, 0, intent, 0);
05
06
//开始时间
07
long firstime=SystemClock.elapsedRealtime();
08
09
AlarmManager am=(AlarmManager)getSystemService(ALARM_SERVICE);
10
//5秒一个周期,不停的发送广播
11
am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP
12
, firstime, 5*1000, sender);
AlarmManager的取消:(其中需要注意的是取消的Intent必须与启动Intent保持绝对一致才能支持取消AlarmManager)
1
Intent intent =new Intent(Main.this, alarmreceiver.class);
2
intent.setAction("repeating");
3
PendingIntent sender=PendingIntent
4
.getBroadcast(Main.this, 0, intent, 0);
5
AlarmManager alarm=(AlarmManager)getSystemService(ALARM_SERVICE);
6
alarm.cancel(sender);
AlarmManager还将闹钟分为五种类型:
1
public static final int ELAPSED_REALTIME
//当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是相对时间,是从系统启动后开始计时的,包括睡眠
时间,可以通过调用SystemClock.elapsedRealtime()获得。系统值是3 (0x00000003)。
1
public static final int ELAPSED_REALTIME_WAKEUP
//能唤醒系统,用法同ELAPSED_REALTIME,系统值是2 (0x00000002) 。
1
public static final int RTC
//当系统进入睡眠状态时,这种类型的闹铃不会唤醒系统。直到系统下次被唤醒才传递它,该闹铃所用的时间是绝对时间,所用时间是UTC时间,可以通过调用
System.currentTimeMillis()获得。系统值是1 (0x00000001) 。
1
public static final int RTC_WAKEUP
//能唤醒系统,用法同RTC类型,系统值为 0 (0x00000000) 。
1
Public static final int POWER_OFF_WAKEUP
//能唤醒系统,它是一种关机闹铃,就是说设备在关机状态下也可以唤醒系统,所以我们把它称之为关机闹铃。使用方法同RTC类型,系统值为4 (0x00000004)。
参考资料:
基于android的闹钟如何添加和删除
一、本课题要求:设计一个基于Android的闹钟的软件。
实现的功能有:能通过界面设置闹钟的启动条件建立后台服务进程,当满足触发条件时,闹钟响应相应事件。
二、需求分析
该课题实现在手机操作系统Android闹钟提醒功能,携带方便,使用起来灵活、快捷、省心,是一款实用的手机软件。“手机闹钟”可以在后台运行,且能和普通闹钟一样设置多个位置闹铃,有良好的人机交互界面,可对其编辑、启用或禁用,关键在于可以自定义设置取消闹钟的操作。
(1)系统体系结构包括:添加闹铃、设置时间、重复等,闹铃提醒方式,返回首页。
(2)用户界面设计
主页面
取消闹铃页面
三、代码设计
(1)
main.xml代码
解除闹铃代码
(2)代码分析
开发手机闹钟主要用到了AlarmManager类,AlarmManager类提供了访问系统定时服务的途径,开发人员可以在程序中设置某个应用程序在未来的某个时刻被执行。当AlarmManager定时时间到了之后,当初注册的Intent对象将会被系统广播,进而启动目标程序。注册的闹钟在设备睡眠的时候仍然会保留,可以选择性地设置是否唤醒设备,但是当设备关机和重启后,闹钟将会被清除。
在程序运行时当需要使用AlarmManager类时,可以通过Context对象的getSystemService(Context.ALARM_SERVICE)方法来获得AlarmManager对象。
闹钟使用的Demo:com.example.android.apis.app.AlarmController其中设定了两种闹钟,一种是一次性的,一种是重复的。
四、总结
在这个过程中,我学会了很多知识,比如Android环境的搭建和配置问题、Android的构架和基本组建等,同时我学会的最重要的一点是,要利用现有的资源去解决问题,在图书馆、在网络上寻找答案,也可以请教老师或与同学相互讨论。虽然,这个软件目前运行良好,但是我认为代码的健壮还很差,在整个工程的构思方面也不足,用户操作界面还不够灵活,这些问题还需要今后逐一解决。与此同时,这个软件还可以进一步扩展,例如通过Android Api获取位置信息,并在指定地点设置闹钟提醒等,使功能更加强大,带给用户更好的体验与便捷的生活服务。
android源码中闹钟源码在哪儿
首先 ,android studio中, 写出 你要找的 这个类. 点进去,会有 源码,如果没有源码,
右上角会有提示,
download src!
然后 只要你的 电脑 连着网,有vpn 就直接 下载下来了
当然你也可以选择 安装 本地源码
源码在 你看 那个类的 包名 路径