Android开发学习之闹钟功能的简单实现

           Alarm就是我们通常说的闹钟,其实,在Android中实现一个简单的闹钟功能并不是很难,原理就是在特定的事件广播一个Intent,然后系统收到这个广播以后,做出一个反应( Receive)。在Android中提供了四种类型的闹钟,分别是ELAPSED_REALTIME(在指定的延时后广播通知,不唤醒设备)、ELAPSED_REALTIME_WAKEUP(在指定的延时后广播通知,唤醒设备)、 RTC (在指定的时刻发送通知,不唤醒设备)、RTC_WAKEUP( 在指定的时刻发送通知,不唤醒设备)。在Android中实现闹钟最主要的几个方法是:

void set(int type, long triggerAtTime, PendingIntent operation) 
设置一个闹钟 
 void setRepeating(int type, long triggerAtTime, long interval, PendingIntent operation) 
设置一个会重复的闹钟 
void setInexactRepeating(int type, long triggerAtTime, long interval, PendingIntent operation) 
设置一个重复闹钟的不精确版本
内置的几个interval为: INTERVAL_FIFTEEN_MINUTES 、INTERVAL_HALF_HOUR、INTERVAL_HOUR、 INTERVAL_HALF_DAY、 INTERVAL_DAY
void cancel(PendingIntent operation) 
取消一个闹钟

       代码实现片段:

am=(AlarmManager)getSystemService(ALARM_SERVICE);
		Intent intent=new Intent();
		intent.setAction("com.Android.AlarmManager.action.BACK_ACTION");
		intent.putExtra("Message", "学习编程累了,该休息一下啦");
		pi=PendingIntent.getBroadcast(MainActivity.this, 0, intent,0);
		BtnOpen=(Button)findViewById(R.id.BtnOpen);
		BtnOpen.setOnClickListener(new OnClickListener()
		{
			@Override
			public void onClick(View arg0) 
			{
				//立即提醒
				am.set(AlarmManager.RTC, System.currentTimeMillis(), pi);
				//每隔一分钟提醒
				//am.setRepeating(AlarmManager.RTC_WAKEUP, System.currentTimeMillis(), 10000, pi);
			}
		});
        这样我们就实现了发送广播的过程,下面我们再来说接收的事情。

        我们首先继承BroadcastReceiver实现一个用以接收发出去的广播的类Receiver。

public class Receiver extends BroadcastReceiver
{

	@Override
	public void onReceive(Context context, Intent intent) 
	{
		
		Toast.makeText(context, intent.getStringExtra("Message"), Toast.LENGTH_SHORT).show();
	}

}

       然后在AndroidMainifest.xml中的application节点中加入下面的内容,完成Receiver的注册

       <receiver android:name="Receiver" android:permission="com.android.alarm.permission.SET_ALARM">
            <intent-filter>
              <action android:name="com.Android.AlarmManager.action.BACK_ACTION"/>
            </intent-filter>
        </receiver>

      这样,一个闹钟就做好了,如果想在提醒这方面做更多地优化,比如加入铃声,可以自行扩展Receiver类,实现更多的功能。

     

雪轻鸿 CSDN认证博客专家 .NET Python 伪·全栈攻城狮
谢谢你,在这世界的角落,找到我,一个即将进入而立之年的中年大叔,常年以 飞鸿踏雪 的花名混迹江湖。在现实生活中,我是一名 伪·全栈攻城狮,因为我觉得,什么都略懂一点,生活会更多彩一些。目前,主要关注.NET、.NET Core、Python、数据分析、微服务、Web 等技术方向。日常行为:读书、写作、电影、烹饪、洞箫等。喜欢看日剧/纪录片/科普、刷B站、刷LeetCode等。
已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 成长之路 设计师:Amelia_0503 返回首页
实付 9.90元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值