欢迎来到天天文库
浏览记录
ID:19239131
大小:38.50 KB
页数:10页
时间:2018-09-30
《android闹钟最终版【android源码闹钟解析】》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、Android闹钟最终版【android源码闹钟解析】Android闹钟最终版【android源码闹钟解析】Android闹钟最终版【android源码闹钟解析】我以前写了个复杂闹钟的demo,参见Android闹钟【复杂版】【大明进化十五】.但是里面的bug有一些,好多人留言,所以我就看看源码,找找原因?顺便把源码代码整理出来,弄成一个完整的可以运行的apk,今天上午就整理了一下,才发现,源码处理的逻辑多一些,考虑的情况多,比如开机后接收一个广播,然后从数据库中取时间和当前时间对比,设置闹钟,当时区改变了,也会发送广播,对闹钟进行设置的。转载请标明出处:http://b
2、log.csdn.net/wdaming1986/article/details/7461043有人问我:“当设置一个闹钟后,然后调系统时间超过设置的闹钟的时间,这时候闹钟响了??”通过源码,我发现这种情况是正常的。不是bug。可以理解。以下是我发现的几点闹钟中重要的点,分享一下:(1)在闹钟中有AudioManager管理机制,这个机制可以申请和释放OnAudioFocusChangeListener监听。还有mTelephonyManager对象,处理在闹钟响的时候,来电铃声的切换。(2)广播接收闹钟,通过广播启动AlarmKlaxon这个Service,隐式启动se
3、rvice:publicstaticfinalStringALARM_INTENT_EXTRA="intent.extra.alarm";//Playthealarmalertandvibratethedevice.IntentplayAlarm=newIntent(Alarms.ALARM_ALERT_ACTION);playAlarm.putExtra(Alarms.ALARM_INTENT_EXTRA,alarm);context.startService(playAlarm);在mainfest中,AlarmKlaxon这个服务的定义如下:4、oid:name="AlarmKlaxon"android:description="@string/alarm_klaxon_service_desc">这个service做的是允许别的Activity打断正在响铃的铃声,播放其他的铃声,例如,闹钟响的时候来电话了。(3)在listview中包含checkbox,这时候闹钟的处理时,activity实现一个OnItemCli5、ckListener的监听,点击每一项的监听。然后在checkbox单独拿出去写一个类,继承LinearLayout,重写setPressed()这个方法,以实现“当点击checkbox的时候不触发parent的click事件”。关键代码如下:@OverridepublicvoidsetPressed(booleanpressed){//Iftheparentispressed,donotsettopressed.if(pressed&&((View)getParent()).isPressed()){return;}super.setPressed(pressed);}6、下面看看我的程序截图:红色圈的图标为我的闹钟。点击“玲闹钟”后的界面点击新建闹钟出现的界面设置好时间弹出的toast。下面我把我的主要入口类的代码贴出来:DeskClockMainActivity.javapackagecom.cn.daming.deskclock;importjava.util.Calendar;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Context;importandroid.content.DialogInterface;impor7、tandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.database.Cursor;importandroid.graphics.Typeface;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;import
4、oid:name="AlarmKlaxon"android:description="@string/alarm_klaxon_service_desc">这个service做的是允许别的Activity打断正在响铃的铃声,播放其他的铃声,例如,闹钟响的时候来电话了。(3)在listview中包含checkbox,这时候闹钟的处理时,activity实现一个OnItemCli
5、ckListener的监听,点击每一项的监听。然后在checkbox单独拿出去写一个类,继承LinearLayout,重写setPressed()这个方法,以实现“当点击checkbox的时候不触发parent的click事件”。关键代码如下:@OverridepublicvoidsetPressed(booleanpressed){//Iftheparentispressed,donotsettopressed.if(pressed&&((View)getParent()).isPressed()){return;}super.setPressed(pressed);}
6、下面看看我的程序截图:红色圈的图标为我的闹钟。点击“玲闹钟”后的界面点击新建闹钟出现的界面设置好时间弹出的toast。下面我把我的主要入口类的代码贴出来:DeskClockMainActivity.javapackagecom.cn.daming.deskclock;importjava.util.Calendar;importandroid.app.Activity;importandroid.app.AlertDialog;importandroid.content.Context;importandroid.content.DialogInterface;impor
7、tandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.database.Cursor;importandroid.graphics.Typeface;importandroid.os.Bundle;importandroid.view.LayoutInflater;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;import
此文档下载收益归作者所有