扣丁学堂——AlarmManager
2015-12-17 14:31
267 查看
一丶源码见本文
二丶课程讲解及代码
MainActivity
Activity2
Receive
二丶课程讲解及代码
MainActivity
ublic class Main1217Activity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main1217); } public void startSet(View v){ //获取到了系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间 long triggerTime = System.currentTimeMillis()+3000; Intent intent = new Intent(this,Main2Activity2.class); // 可以get 广播,服务,activity 类型 PendingIntent op = PendingIntent.getActivity(this,0,intent,PendingIntent.FLAG_UPDATE_CURRENT); //只会执行一次的闹钟 am.set(AlarmManager.RTC, triggerTime, op); //op : 启动这个闹钟的操作,也就是干什么事. } public void startAlarmClick(View v){ //获取到了系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间 long triggerTime = System.currentTimeMillis()+3000; Intent intent = new Intent(this,MyReceiverR.class); // 可以get 广播,服务,activity 类型 PendingIntent op = PendingIntent.getBroadcast(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); //只会执行一次的闹钟 am.set(AlarmManager.RTC,triggerTime,op); //op : 启动这个闹钟的操作,也就是干什么事. //指定时间重复执行 // am.setRepeating(AlarmManager.RTC, triggerTime, 2000, op); //2000 : 间隔时间,多长时间重复一次 //am.cancel(op);//取消操作 } }
Activity2
public class Main2Activity2 extends AppCompatActivity { MediaPlayer mp; //媒体播放对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //唤醒屏幕 Window win = getWindow(); win.addFlags(WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD| WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED); win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON| WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); setContentView(R.layout.activity_main22); mp = new MediaPlayer(); try { mp.setDataSource(this, Uri.parse("/storage/extSdCard/qqmusic/song/a.mp3")); mp.prepare(); //状态,预备状态 } catch (IOException e) { e.printStackTrace(); } mp.setLooping(true); //循环 mp.start(); //启动 alarmDialog(); //弹出对话框 } @Override protected void onDestroy() { super.onDestroy(); if(mp !=null){ if(mp.isPlaying()){ mp.stop(); } mp.release(); //释放资源 } } public void alarmDialog(){ AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setMessage("起床了"); //弹出框提示内容 //弹出框按钮 builder.setPositiveButton("再来一次", new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) { alarm();//由闹钟服务来自动 启动对话窗口 finish();//关闭窗口 } }); builder.setNegativeButton("关闭了", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { finish(); } }); builder.show(); } private void alarm(){ //获取到了系统的闹钟服务 AlarmManager am = (AlarmManager) getSystemService(Context.ALARM_SERVICE); //触发闹钟的时间 long triggerTime = System.currentTimeMillis()+5000; Intent intent = new Intent(this,Main2Activity2.class); PendingIntent op = PendingIntent.getActivity(this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); //只会执行一次的闹钟 am.set(AlarmManager.RTC, triggerTime, op); //op : 启动这个闹钟的操作,也就是干什么事. } }
Receive
public class MyReceiverR extends BroadcastReceiver { public MyReceiverR() { } @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context, "闹钟", Toast.LENGTH_SHORT).show(); } }
相关文章推荐
- AFNetWorking 监听网络连接的状态
- Linux指令--mkdir
- minSdkVersion, targetSdkVersion, targetApiLevel,compileSdkVersion,buildToolsVersion
- 关于Python报错:SyntaxError: Non-ASCII character '\xe5' in file
- Java之多线程内存可见性_3(synchronized和volatile比较)
- 0 0/1 * * * ?
- 基本排序_冒泡排序_Java实现
- openstack controller ha测试环境搭建记录(十二)——配置neutron(计算节点)
- wini -- FileSubmitByFTP
- 什么是实时应用程序自我保护(RASP)?
- 【翻译】数据库设计——范式
- 对象的深复制和浅复制
- java统计字符串中指定元素出现次数方法
- datetimepicker-bootstrap默认年份1899修改问题
- 【Lua C交互】3 - lua调用C模块
- spring问题排查-调低日志等级
- struts学习笔记(四)
- [ios][swift]swift 怎么去除 optional
- java资料——线程(转)
- Java将数据库数据导入EXCEL