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类,实现更多的功能。

     

你可能感兴趣的:(Android开发)