博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android闹钟服务详解
阅读量:7111 次
发布时间:2019-06-28

本文共 4097 字,大约阅读时间需要 13 分钟。

通常情况下我们有这样的需求,规定程序在指定的时间内启动,这样就用到了android为我们提供的闹钟服务

下面就一个简单的例子,来说明如何使用android的闹钟服务

1、首先创建布局文件

 第二步:在activity中使用闹钟服务

package com.jiao.alarm;import java.util.Calendar;import android.app.Activity;import android.app.AlarmManager;import android.app.PendingIntent;import android.content.Context;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;import android.widget.TimePicker;import android.widget.TimePicker.OnTimeChangedListener;import android.widget.Toast;public class MyAlarmManager extends Activity {	private AlarmManager alarm = null;							// 闹钟管理	private Button set = null;									// 按钮组件	private Button delete = null;								// 按钮组件	private TextView msg = null;								// 文本显示组件	private Calendar calendar = Calendar.getInstance();			// 取得Calendar对象	private TimePicker time = null;								// 时间选择器	private int hourOfDay = 0;									// 保存设置的时	private int minute = 0;										// 保存设置的分	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		super.setContentView(R.layout.main); 					// 调用布局管理器		time = (TimePicker) super.findViewById(R.id.time); // 取得时间选择器		set = (Button) super.findViewById(R.id.set); 		// 取得按钮组件		delete = (Button) super.findViewById(R.id.delete); // 取得按钮组件		msg = (TextView) super.findViewById(R.id.msg);		// 取得组件		set.setOnClickListener(new SetOnClickListenerImpl()); // 设置单击事件		delete.setOnClickListener(new DeleteOnClickListenerImpl()); // 设置单击事件		alarm = (AlarmManager) super.getSystemService(Context.ALARM_SERVICE); 	// 取得闹钟服务		time.setOnTimeChangedListener(new OnTimeChangedListenerImpl());	 // 设置时间改变监听		time.setIs24HourView(true); // 24小时制	}	private class OnTimeChangedListenerImpl implements OnTimeChangedListener {		@Override		public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {			calendar.setTimeInMillis(System.currentTimeMillis());	// 设置当前时间			calendar.set(Calendar.HOUR_OF_DAY,hourOfDay);		// 设置小时			calendar.set(Calendar.MINUTE, minute);	// 设置分钟			calendar.set(Calendar.SECOND, 0);	// 设置秒			calendar.set(Calendar.MILLISECOND, 0);	// 设置毫秒			hourOfDay = hourOfDay; 	// 保存设置的小时			minute = minute; 		// 保存设置的分钟		}	}	private class SetOnClickListenerImpl implements OnClickListener {		@Override		public void onClick(View view) {			Intent intent = new Intent(MyAlarmManager.this,MyAlarmReceiver.class); // 指定跳转的Intent			intent.setAction("com.jiao.action.setalarm"); 	// 定义广播的Action			PendingIntent sender = PendingIntent.getBroadcast(MyAlarmManager.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);	// 指定PendingIntent			alarm.set(AlarmManager.RTC_WAKEUP,MyAlarmManager.this.calendar.getTimeInMillis(), sender);	// 设置闹钟			msg.setText("闹钟响起的时间是:"+ hourOfDay + "时"+ minute + "分。");	// 提示文字			Toast.makeText(MyAlarmManager.this, "闹钟设置成功!",Toast.LENGTH_SHORT).show();	// 显示提示信息		}	}      	private class DeleteOnClickListenerImpl implements OnClickListener {		@Override		public void onClick(View view) {			if (alarm != null) {				Intent intent = new Intent(MyAlarmManager.this,MyAlarmReceiver.class);// 设置Intent				PendingIntent sender = PendingIntent.getBroadcast(MyAlarmManager.this, 0, intent,PendingIntent.FLAG_UPDATE_CURRENT);	// 指定PendingIntent				alarm.cancel(sender);	// 取消闹钟				msg.setText("当前没有设置闹钟。");	// 提示文字				Toast.makeText(MyAlarmManager.this, "闹钟删除成功!",Toast.LENGTH_SHORT).show();	// 显示提示信息			}		}	}}

 第三步:在上一步的代码中自定义了一个广播接收者,所以再创建一个广播接收者

package com.jiao.alarm;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class MyAlarmReceiver extends BroadcastReceiver {	@Override	public void onReceive(Context context, Intent intent) {		Intent it = new Intent(context, AlarmMessage.class);// 定义要操作的Intent,要转到的activity在这里设置就可以了		it.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);	// 传递一个新的任务标记		context.startActivity(it);	// 启动Intent	}}

 最后记得在清单文件中配置,注册广播接收者

  
  

 

 

转载于:https://www.cnblogs.com/all88/archive/2013/04/03/2997558.html

你可能感兴趣的文章
终于找到IE10 Browser Mode为IE10 compat View的真相
查看>>
STL priority_queue<> 用法 <转>
查看>>
异常Address already in use: JVM_Bind的处理
查看>>
Unix/Linux 脚本中 “set -e” 的作用
查看>>
静观----冥想
查看>>
使用 IntraWeb (23) - 基本控件之 TIWTimer、TIWProgressBar、TIWProgressIndicator、TIWTimeEdit...
查看>>
SQLServer如何处理数据集的维度变化
查看>>
了解SVG
查看>>
【读书笔记-数据挖掘概念与技术】数据预处理
查看>>
嵌入式开发之davinci--- ccs 编译lib库
查看>>
CUDA程序设计(一)
查看>>
iOS随机颜色
查看>>
mybatis-generator自动生成dao,mapping,model
查看>>
阿里云服务器的坑=====部署EF+MVC
查看>>
docker学习笔记17:Dockerfile 指令 ONBUILD介绍
查看>>
MVC5 网站开发之七 用户功能 1、角色的后台管理
查看>>
To Miss Our Children Time(dp)
查看>>
Python学习笔记15—mysql的操作
查看>>
VisualSVN Server和Subversion的联系
查看>>
Gossip算法
查看>>