AlarmManager 实现闹钟的基本功能
先上效果图


这是一个利用AlarmManager做的最简单的闹钟!迟点再把重复响铃(例如星期一,星期三,重复响铃)
1.MainActivity
package com.example.domereflect; import java.util.Calendar; import android.os.Bundle;
import android.os.Handler;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.AlarmManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast; public class MainActivity extends Activity implements OnClickListener { private Button add_alarm; //添加闹钟按钮 private int sqlHour;//记录时间,小时
private int sqlMinute;//记录时间,分钟
private Calendar c; //时间 @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); createView();
} private void createView(){
add_alarm = (Button)findViewById(R.id.add_alarm_btn);
add_alarm.setOnClickListener(this);
} @Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.add_alarm_btn:
int i = ; //PendingIntent.getBroadcast的第二个,四个参数。
AddAlarm.getAlarmDialog(this); //添加闹钟的dialog(主要实现保存时间的功能)
sqlHour = MyApplication.getInstance().getAlarmHour(); //获取时间,小时
sqlMinute = MyApplication.getInstance().getAlarmMin();//获取时间,分钟
Toast.makeText(this, sqlHour+":"+sqlMinute, ).show();
openAlarm(i++);//发出广播,在指定时间响铃。
break; default:
break;
}
} private void openAlarm(int id){
//获得AlarmManager类
AlarmManager manager = (AlarmManager)getSystemService(Context.ALARM_SERVICE); //跳转,发送广播
Intent intent = new Intent(this, CallAlarm.class);
PendingIntent sender = PendingIntent.getBroadcast(this, id, intent, id); //时间的处理
c = Calendar.getInstance();
c.setTimeInMillis(System.currentTimeMillis());
c.set(Calendar.HOUR_OF_DAY, sqlHour);
c.set(Calendar.MINUTE, sqlMinute);
c.set(Calendar.SECOND, );
c.set(Calendar.MILLISECOND, ); //添加闹钟
manager.set(AlarmManager.RTC_WAKEUP, c.getTimeInMillis(), sender); } }
2.AddAlarm类
package com.example.domereflect; import android.app.Dialog;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.webkit.WebView.FindListener;
import android.widget.Button;
import android.widget.TextView;
import android.widget.TimePicker; public class AddAlarm { public AddAlarm(){ } public static Dialog getAlarmDialog(Context context){ final Dialog dialog = new Dialog(context);
LayoutInflater inflater = LayoutInflater.from(context);
View view = inflater.inflate(R.layout.alarmdialog_layout, null);
dialog.setContentView(view);
final TimePicker picker = (TimePicker)view.findViewById(R.id.pic_time);
Button save = (Button)view.findViewById(R.id.save_time); save.setOnClickListener(new OnClickListener() { @Override
public void onClick(View v) {
// TODO Auto-generated method stub
int hour= picker.getCurrentHour();
int min = picker.getCurrentMinute();
MyApplication.getInstance().setAlarmHour(hour);
MyApplication.getInstance().setAlarmMin(min);
dialog.dismiss();
}
});
dialog.show();
return dialog;
}
}
3.还有其他几个类
package com.example.domereflect; import android.app.Activity;
import android.os.Bundle; public class AlarmAlertDialog extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
package com.example.domereflect; import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent; public class CallAlarm extends BroadcastReceiver { @Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
intent.setClass(context, AlarmAlertDialog.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
} }
package com.example.domereflect; import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences; public class MyApplication extends Application {
private static MyApplication instance;
private static SharedPreferences settings; @Override
public void onCreate() {
// TODO Auto-generated method stub
super.onCreate();
settings = getSharedPreferences("AlarmShare", Context.MODE_PRIVATE);
}
public static MyApplication getInstance(){
if(null == instance){
instance = new MyApplication();
}
return instance;
} public void setAlarmHour(int hour){
settings.edit().putInt("Hour", hour).commit();
}
public int getAlarmHour(){
return settings.getInt("Hour", );
}
public void setAlarmMin(int min){
settings.edit().putInt("Min", min).commit();
}
public int getAlarmMin(){
return settings.getInt("Min", );
} }
AlarmManager 实现闹钟的基本功能的更多相关文章
- AlarmManager定时闹钟
一.AlarmManager介绍: AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来 ...
- 使用AlarmManager设置闹钟----之一
import java.util.Calendar; import android.os.Bundle;import android.app.Activity;import android.app.A ...
- Android中使用AlarmManager设置闹钟
场景 设置闹钟 闹钟提醒 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建 ...
- 使用AlarmManager设置闹钟----之二
import android.media.MediaPlayer;import android.os.Bundle;import android.app.Activity;import android ...
- AlarmManager手机闹钟简介
1.void set(int type , long triggerAtTime , PendingIntent operation ) : 设置在 triggerAtTime时间启动由operati ...
- Android AlarmManager类的应用(实现闹钟功能)
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- AlarmManager类的应用(实现闹钟功能)
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
- 关于闹钟设置AlarmManager类方法参数解释
1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...
随机推荐
- C#的TreeView标记
今天用到了TreeView控件,多次添加后发现内容是重复的,于是用到清除:this.myTreeView.Nodes.Clear(): 如果想在添加完节点后,默认全展开:this.myTreeView ...
- nodejs 80端口监听失败及NODE_PATH不起作用的问题
nodejs做web服务器,打开80时报错:Error: listen EACCES 0.0.0.0:80 80端口监听失败,是因为1024以下的端口需要root权限,需要sudo或su之后执行.但这 ...
- memcache的windows下的安装和简单使用
原文:memcache的windows下的安装和简单使用 memcache是为了解决网站访问量大,数据库压力倍增的解决方案之一,由于其简单实用,很多站点现在都在使用memcache,但是memcach ...
- [Ubuntu][Linux]更改PATH路径
1.什么是环境变量(PATH) 在Linux中,在执行命令时,系统会按照PATH的设置,去每个PATH定义的路径下搜索执行文件,先搜索到的文件先执行. 我们知道查阅文件属性的指令ls 完整文件名为:/ ...
- sdk 更新的时连接不上dl-ssl.google.com解决办法
今天有朋友说sdk的更新不了,借了个VPN给他也没解决问题,后来还是他自己解决了,下面分享下经验 这里介绍一种不需要FQ的解决办法,修改C:\Windows\System32\drivers\etc下 ...
- FlipView 索引为0 WP8.1
如果使用FlipView时,出现别的页面切换到含有FlipView的页面时(缓存此页面/MainPage),点击或者滑动FlipView,Flipview自动索引到0 的问题解决办法 1.对Flipv ...
- App软件开发的完整在线流程(一看就懂)
App软件开发其实并不复杂,完整的在线App开发不过9个步骤,一看就明白到底是怎么回事. 第一步:需求评估 在App项目正式启动前,客户应该对自己的需求进行评估,确认项目的开发周期和成本.登录APIC ...
- 解析Json需要设置Mime
IIS6.0 1.打开IIS添加Mime项 关联扩展名:*.json内容类型(MIME):application/x-javascript 2.添加映射: 位置在IIS对应站点右键属性:”主 ...
- 解决SQLSERVER在还原数据时出现的“FILESTREAM功能被禁用”问题
解决SQLSERVER在还原数据时出现的“FILESTREAM功能被禁用”问题 今天由于测试需要,在网上下载了Adventureworks2008实例数据库的BAK文件,进行还原时出现了这样的错误“F ...
- Java Servlet(九):转发请求与重定向请求区别
转发: <% pageContext.setAttribute("pageContextAttr", "pageContextAttribute"); r ...