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

刚开始做东西得时候很不了解android中一些组件的应用方法,找了一个闹钟的小例子来更好的理解广播的接收.

应用程序的界面是这样的,这个例子是用闹钟的制定与解除来穿插broadcast  Receiver 的知识,不说废话了,先看下应用程序的界面:

3365350_1312171194zUV3.png

点击设定闹钟的按钮,弹出来一个设置时间的对话框,你选择时间之后会弹出一个Toast告诉你定的时间时多少,然后到时间之后弹出对话框提示时间到。先看图:

3365350_131217119424Qn.png3365350_1312171195R9rE.png3365350_13121711958aCW.png

是一个小闹钟的完整过程,代码中关键的部分就是用到AlarmManager控制时间和PendingIntent 捕获要执行的广播,先贴代码再详细讲解代码。

1mButton1.setOnClickListener(newView.OnClickListener() 2{ 3publicvoidonClick(Viewv) 4{/*取得按下按钮时的时间做为TimePickerDialog的默认值*/ 5c.setTimeInMillis(System.currentTimeMillis()); 6startCalendar.setTimeInMillis(System.currentTimeMillis()); 7intmHour=c.get(Calendar.HOUR_OF_DAY); 8intmMinute=c.get(Calendar.MINUTE);/*跳出TimePickerDialog来设定时间*/ 9newTimePickerDialog(SetAlarmActivity.this, 10newTimePickerDialog.OnTimeSetListener() 11{ 12publicvoidonTimeSet(TimePickerview,inthourOfDay, 13intminute) 14{/*取得设定后的时间,秒跟毫秒设为0*/ 15c.setTimeInMillis(System.currentTimeMillis()); 16c.set(Calendar.HOUR_OF_DAY,hourOfDay); 17c.set(Calendar.MINUTE,minute); 18c.set(Calendar.SECOND,0); 19c.set(Calendar.MILLISECOND,0); 20Intentintent=newIntent(SetAlarmActivity.this, 21CallAlarm.class); 22PendingIntentsender=PendingIntent.getBroadcast( 23SetAlarmActivity.this,0,intent,0); 24AlarmManageram; 25am=(AlarmManager)getSystemService(ALARM_SERVICE); 26am.set(AlarmManager.RTC_WAKEUP,c.getTimeInMillis(), 27sender);/*更新显示的设定闹钟时间*/ 28StringtmpS=format(hourOfDay)+":"+format(minute); 29setTime1.setText(tmpS);/*以Toast提示设定已完成*/ 30Toast.makeText(SetAlarmActivity.this,"设定闹钟时间为"+tmpS, 31Toast.LENGTH_SHORT).show(); 3233} 34},mHour,mMinute,true).show(); 35} 36});

代码中显示了当点击按钮之后所进行的代码处理,我们获得了设置的时间,然后用了一个Intent,用了一个pendIntent,这个PendIntent在捕获广播的时候才会启动,然后我们将这个PendIntent绑定到AlarmManager上面,有三个参数,一个是时间格式,一个是响铃的时间,一个是闹铃到期时启动sender这个PendIntent对象,然后启动绑定在PendIntent里面的intent,从而启动广播CallAlarm。

在广播接收器CallAlar中,并不是直接执行代码,广播接收器只有一个onReceive方法,在这个方法里面又启动了另外一个Activity。需要说明的是广播接收器是没有界面的.

1packagecom.cz;/*import相关class*/ 23importandroid.content.Context; 4importandroid.content.Intent; 5importandroid.content.BroadcastReceiver; 6importandroid.os.Bundle;/*调用闹钟Alert的Receiver*/ 78publicclassCallAlarmextendsBroadcastReceiver 9{ 10@Override 11publicvoidonReceive(Contextcontext,Intentintent) 12{/*createIntent,调用AlarmAlert.class*/ 13Intenti=newIntent(context,AlarmAlert.class); 14BundlebundleRet=newBundle(); 15bundleRet.putString("STR_CALLER",""); 16i.putExtras(bundleRet); 17i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 18context.startActivity(i); 19} 20}

启动另外一个Activity,是弹出闹铃时间到时的提示对话框,看下代码:

1packagecom.cz;/*import相关class*/ 23importandroid.app.Activity; 4importandroid.app.AlertDialog; 5importandroid.content.DialogInterface; 6importandroid.os.Bundle; 78publicclassAlarmAlertextendsActivity 9{ 10@Override 11protectedvoidonCreate(BundlesavedInstanceState) 12{ 13super.onCreate(savedInstanceState);/*跳出的闹铃警示*/ 14newAlertDialog.Builder(AlarmAlert.this).setIcon(R.drawable.clock) 15.setTitle("闹钟响了!!").setMessage("赶快起床吧!!!").setPositiveButton( 16"关掉他",newDialogInterface.OnClickListener() 17{ 18publicvoidonClick(DialogInterfacedialog, 19intwhichButton) 20{/*关闭Activity*/ 21AlarmAlert.this.finish(); 22} 23}).show(); 24} 25}

如果条件允许,还可以在响铃时加上震动,铃声等选项..

本文转自HDDevTeam 51CTO博客,原文链接:http://blog.51cto.com/hddev/628428,如需转载请自行联系原作者

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值