先上效果图

这是一个利用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 实现闹钟的基本功能的更多相关文章

  1. AlarmManager定时闹钟

    一.AlarmManager介绍: AlarmManager是Android中常用的一种系统级别的提示服务,在特定的时刻为我们广播一个指定的Intent.简单的说就是我们设定一个时间,然后在该时间到来 ...

  2. 使用AlarmManager设置闹钟----之一

    import java.util.Calendar; import android.os.Bundle;import android.app.Activity;import android.app.A ...

  3. Android中使用AlarmManager设置闹钟

    场景 设置闹钟 闹钟提醒 注: 博客: https://blog.csdn.net/badao_liumang_qizhi关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 新建 ...

  4. 使用AlarmManager设置闹钟----之二

    import android.media.MediaPlayer;import android.os.Bundle;import android.app.Activity;import android ...

  5. AlarmManager手机闹钟简介

    1.void set(int type , long triggerAtTime , PendingIntent operation ) : 设置在 triggerAtTime时间启动由operati ...

  6. Android AlarmManager类的应用(实现闹钟功能)

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  7. AlarmManager类的应用(实现闹钟功能)

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  8. Android之AlarmManager(全局定时器/闹钟)指定时长或以周期形式执行某项操作

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

  9. 关于闹钟设置AlarmManager类方法参数解释

    1.AlarmManager,顾名思义,就是“提醒”,是Android中常用的一种系统级别的提示服务,可以实现从指定时间开始,以一个固定的间隔时间执行某项操作,所以常常与广播(Broadcast)连用 ...

随机推荐

  1. ThinkPHP3.2.3 自定义标签库的使用

    ThinkPHP 3.2.3 手册中标签库驱动的地址是: http://www.kancloud.cn/manual/thinkphp/1859 标签库的地址是:http://www.kancloud ...

  2. 生产环境下的mysql主从复制

    一.主mysql配置:1.配置my.cnf[mysqld]server-id = 10 #服务器标示log-bin= mysql-bin #二进制日志binlog-do-db=mydb #需要同步的数 ...

  3. mac 下面wireshark 找不到网卡

    终端上面,执行如下命令:   sudo chgrp admin /dev/bpf*   sudo chmod g+rw /dev/bpf* http://www.9upk.com/article/25 ...

  4. CentOS下搭建nginx+php环境

    一.下载安装nginx 参见 http://www.cnblogs.com/kreo/p/4378086.html 不再赘述 二.下载php #下载 wget http://bg2.php.net/d ...

  5. jQuery获取一般处理程序(ashx)的JSON数据

    昨天有在开发的软件生产线生产流程,RFID扫描IC卡的数据,当中有用到jQuery获取一般处理程序(ashx)的JSON数据.今有把它写成一个小例子,望需要的网友能参考. 在网站中,创建一个一般应用程 ...

  6. 【翻译】How To Tango With Django 1.5.4 第三章

    django基础 3.1测试你的配置 测试你的python版本和你的django版本是否兼容 3.2新建django工程 在dos里面进到你事先新建的code文件夹,然后在执行下列命令新建工程 c:\ ...

  7. k8s入门系列之集群安装篇

    关于kubernetes组件的详解介绍,请阅读上一篇文章<k8s入门系列之介绍篇> Kubernetes集群安装部署 •Kubernetes集群组件: - etcd 一个高可用的K/V键值 ...

  8. Android 自定义spinner下拉框实现的实现

    请支持原创:http://blog.csdn.NET/geniuseoe2012/article/details/8723702 说到Android下拉框spineer,框架中虽有现成的控件,但实际效 ...

  9. MetInfo数据库结构表

    met_admin_table 表 Key 字段名称 数据类型 不为空 默认值 说明 PK id INT(11) Yes   编号   admin_type TEXT Yes   管理员类型   ad ...

  10. Fatal Error: TXK Install Service oracle.apps.fnd.txk.config.ProcessStateException: OUI process failed : Exit=255 See log for details

    安装EBS的时候,database pre-install checks检查报警,显示"!" 一开始忽略了该报警,继续安装.在post-install checks的时候又报了错误 ...