AlarmManager 实现闹钟的基本功能
2013-11-22 15:19
375 查看
先上效果图
这是一个利用AlarmManager做的最简单的闹钟!迟点再把重复响铃(例如星期一,星期三,重复响铃)
1.MainActivity
2.AddAlarm类
3.还有其他几个类
这是一个利用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 = 1; //PendingIntent.getBroadcast的第二个,四个参数。 AddAlarm.getAlarmDialog(this); //添加闹钟的dialog(主要实现保存时间的功能) sqlHour = MyApplication.getInstance().getAlarmHour(); //获取时间,小时 sqlMinute = MyApplication.getInstance().getAlarmMin();//获取时间,分钟 Toast.makeText(this, sqlHour+":"+sqlMinute, 1).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, 0); c.set(Calendar.MILLISECOND, 0); //添加闹钟 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", 0); } public void setAlarmMin(int min){ settings.edit().putInt("Min", min).commit(); } public int getAlarmMin(){ return settings.getInt("Min", 0); } }
相关文章推荐
- AlarmManager类的应用(实现闹钟功能)
- AlarmManager类的应用(实现闹钟功能)
- 基于Alarmmanager实现简单闹钟功能
- 数据结构之顺序表基本功能实现
- Android开发学习之闹钟功能的简单实现
- 服务器负载均衡是什么意思(服务器负载均衡的基本功能和实现原理)
- 实现队列基本功能
- 服务器负载均衡的基本功能和实现原理
- 服务器负载均衡的基本功能和实现原理
- JAVA用List实现Map的基本功能
- C++实现顺序栈的基本功能
- Spring核心学习(1)实现基本的容器-包括注入和获取功能
- spring boot + velocity框架搭建及基本功能实现
- 【JS】原生js实现拖拽功能基本思路
- C#软件开发实例.私人订制自己的屏幕截图工具(四)基本截图功能实现
- 实现单向链表的基本功能
- 康威生命游戏 第一部分-基本功能实现(C++ & Windows SDK)
- Rexsee API介绍:Android定时任务Alarm,附基本的闹钟功能示例
- 对linux下chown命令基本功能的实现
- iOS开发中文件的上传和下载功能的基本实现