首页 文章 精选 留言 我的

精选列表

搜索[信息窗口],共10000篇文章
优秀的个人博客,低调大师

Android 中利用广播接收器(BroadCastReceiver)来接收定时响铃的闹铃信息

刚开始做东西得时候很不了解android中一些组件的应用方法,找了一个闹钟的小例子来更好的理解广播的接收. 应用程序的界面是这样的,这个例子是用闹钟的制定与解除来穿插broadcast Receiver 的知识,不说废话了,先看下应用程序的界面: 点击设定闹钟的按钮,弹出来一个设置时间的对话框,你选择时间之后会弹出一个Toast告诉你定的时间时多少,然后到时间之后弹出对话框提示时间到。先看图: 是一个小闹钟的完整过程,代码中关键的部分就是用到AlarmManager控制时间和PendingIntent 捕获要执行的广播,先贴代码再详细讲解代码。 1 mButton1 . setOnClickListener( new View . OnClickListener() 2 { 3 public void onClick(View v) 4 { /* 取得按下按钮时的时间做为TimePickerDialog的默认值 */ 5 c . setTimeInMillis(System . currentTimeMillis()); 6 startCalendar . setTimeInMillis(System . currentTimeMillis()); 7 int mHour = c . get(Calendar . HOUR_OF_DAY); 8 int mMinute = c . get(Calendar . MINUTE); /* 跳出TimePickerDialog来设定时间 */ 9 new TimePickerDialog(SetAlarmActivity . this , 10 new TimePickerDialog . OnTimeSetListener() 11 { 12 public void onTimeSet(TimePicker view, int hourOfDay, 13 int minute) 14 { /* 取得设定后的时间,秒跟毫秒设为0 */ 15 c . setTimeInMillis(System . currentTimeMillis()); 16 c . set(Calendar . HOUR_OF_DAY, hourOfDay); 17 c . set(Calendar . MINUTE, minute); 18 c . set(Calendar . SECOND, 0 ); 19 c . set(Calendar . MILLISECOND, 0 ); 20 Intent intent = new Intent(SetAlarmActivity . this , 21 CallAlarm . class ); 22 PendingIntent sender = PendingIntent . getBroadcast( 23 SetAlarmActivity . this , 0 , intent, 0 ); 24 AlarmManager am; 25 am = (AlarmManager) getSystemService(ALARM_SERVICE); 26 am . set(AlarmManager . RTC_WAKEUP, c . getTimeInMillis(), 27 sender); /* 更新显示的设定闹钟时间 */ 28 String tmpS = format(hourOfDay) + " : " + format(minute); 29 setTime1 . setText(tmpS); /* 以Toast提示设定已完成 */ 30 Toast . makeText(SetAlarmActivity . this , " 设定闹钟时间为 " + tmpS, 31 Toast . LENGTH_SHORT) . show(); 32 33 } 34 } , mHour, mMinute, true ) . show(); 35 } 36 } ); 代码中显示了当点击按钮之后所进行的代码处理,我们获得了设置的时间,然后用了一个Intent,用了一个pendIntent,这个PendIntent在捕获广播的时候才会启动,然后我们将这个PendIntent绑定到AlarmManager上面,有三个参数,一个是时间格式,一个是响铃的时间,一个是闹铃到期时启动sender这个PendIntent对象,然后启动绑定在PendIntent里面的intent,从而启动广播CallAlarm。 在广播接收器CallAlar中,并不是直接执行代码,广播接收器只有一个onReceive方法,在这个方法里面又启动了另外一个Activity。需要说明的是广播接收器是没有界面的. 1 package com . cz; /* import相关class */ 2 3 import android . content . Context; 4 import android . content . Intent; 5 import android . content . BroadcastReceiver; 6 import android . os . Bundle; /* 调用闹钟Alert的Receiver */ 7 8 public class CallAlarm extends BroadcastReceiver 9 { 10 @Override 11 public void onReceive(Context context, Intent intent) 12 { /* create Intent,调用AlarmAlert.class */ 13 Intent i = new Intent(context, AlarmAlert . class ); 14 Bundle bundleRet = new Bundle(); 15 bundleRet . putString( " STR_CALLER " , " " ); 16 i . putExtras(bundleRet); 17 i . addFlags(Intent . FLAG_ACTIVITY_NEW_TASK); 18 context . startActivity(i); 19 } 20 } 启动另外一个Activity,是弹出闹铃时间到时的提示对话框,看下代码: 1 package com . cz; /* import相关class */ 2 3 import android . app . Activity; 4 import android . app . AlertDialog; 5 import android . content . DialogInterface; 6 import android . os . Bundle; 7 8 public class AlarmAlert extends Activity 9 { 10 @Override 11 protected void onCreate(Bundle savedInstanceState) 12 { 13 super . onCreate(savedInstanceState); /* 跳出的闹铃警示 */ 14 new AlertDialog . Builder(AlarmAlert . this ) . setIcon(R . drawable . clock) 15 . setTitle( " 闹钟响了!! " ) . setMessage( " 赶快起床吧!!! " ) . setPositiveButton( 16 " 关掉他 " , new DialogInterface . OnClickListener() 17 { 18 public void onClick(DialogInterface dialog, 19 int whichButton) 20 { /* 关闭Activity */ 21 AlarmAlert . this . finish(); 22 } 23 } ) . show(); 24 } 25 } 如果条件允许,还可以在响铃时加上震动,铃声等选项.. 本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/628428,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册