96U手游网--最好玩的手机游戏网站!
当前位置:
> 天涯明月刀ol7月24日维护到几点 7月24号更新了什么内容?
天涯明月刀ol7月24日维护到几点 7月24号更新了什么内容?
关于天涯明月刀ol在7月24日的维护更新,玩家们应该都很好奇吧,还不知道更新了什么的速来围观吧。
维护内容:
1.阶段性关闭2级及以上金装的制造
2.阶段性关闭2级及以上金装制造图谱掉落
3.阶段性关闭80级紫装制造
4.全部高级制造材料阶段性调整为:暂未开放
天涯明月刀ol7月24日维护是从7点半到九点半,所以玩家们耐心等等,就可以去游戏中体验一下啦!
本站为防止低俗内容出现,用户发表的评论需经过审核,谢谢 !
查看更多 ↓
新年大礼包剩余:0%
新年大礼包剩余:0%
新年大礼包剩余:0%
新年大礼包剩余:0%
新年大礼包剩余:0%闹钟BUG-到7月24号(30个)
闹钟BUG-到7月24号(30个)
发布时间: 8:11:55
编辑:www.fx114.net
本篇文章主要介绍了"闹钟BUG-到7月24号(30个)",主要涉及到闹钟BUG-到7月24号(30个)方面的内容,对于闹钟BUG-到7月24号(30个)感兴趣的同学可以参考一下。
1、将倒计时铃声设置为歌曲后,删除该歌曲,倒计时铃声显示为“节奏”,实际响的是闹钟默认铃声
& &此时因为外部歌曲已经不存在,所以应该设置一个新的默认的歌曲。修改方法就是把所选歌曲换成节奏铃声。
s = AlarmKlaxon.getdefaltUri(ctx).toString();这个获取的是闹钟的默认铃声
Uri uri = Uri.parse(&content://media/internal/audio/media/5&);
play(uri);
2.闹钟响闹时按back键,闹钟会一直响,不会在设置的响闹时长停止闹铃
解决方式,闹钟响闹的过程中让返回键失效
public boolean dispatchKeyEvent(KeyEvent event) {
boolean up = event.getAction() == KeyEvent.ACTION_UP;
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK://点击返回键的时候执行暂停闹钟操作
& & & & & & & & & & switch (mVolumeBehavior) {
& & & & & & & & & & & & case 1:
& & & & & & & & & & & & & & snooze();
& & & & & & & & & & & & & &
& & & & & & & & & & & & case 2:
& & & & & & & & & & & & & & dismiss(false);
& & & & & & & & & & & & & &
& & & & & & & & & & & & default:
& & & & & & & & & & & & & &
& & & & & & & & & & }
& & & & & & & & }
//返回true是不继续执行系统的方法
return super.dispatchKeyEvent(event);
3:步骤:时钟-添加一闹钟-等时间到弹出闹钟提示框按back键-重新进入时钟删除此闹钟-下拉通知栏点击关闭闹钟&
结果:弹出提示“很抱歉,闹钟已停止运行”,之后此闹钟在通知栏一直不消失,每次点击均报错
原因是因为删除闹钟之后执行AlarmAlertFullScreen.java里面的方法的时候会执行
final Alarm>
& & & & mAlarm = Alarms.getAlarm(this,this.getContentResolver(), alarmTmp.id);
如果此时闹钟已经不存在,那么第二行代码会把mAlarm置为空,此时,执行到setTitle()时会因为空指针导致报错。 &
当时张改的方式是删除掉第二行代码,不做判断。但是后来又改回来了。以为修改完上面的bug之后这个bug就不存在了。
因为:点击返回键的时候,自动停止闹钟,这个时候删除闹钟,会删除通知栏。所以不会存在删除之后点击通知栏报错的情况。
删除闹钟值判断暂停状态和数据库里面的数据,不会判断正在响闹的数据。
4、闹钟响闹界面长按电源键关机,关机后手机长时间震动一段时间(每次震动时间长短不同)
在闹钟响闹界面增加关机的***器,关机的时候,关闭闹钟。
IntentFilter filter = new IntentFilter(Alarms.ALARM_KILLED);
filter.addAction(Intent.ACTION_SHUTDOWN);
registerReceiver(mReceiver, filter); private BroadcastReceiver mReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (action.equals(Intent.ACTION_SHUTDOWN)) {
Log.e(&Shutdown when alerting...&);
dismiss(false);
5、倒计时设置了自定义铃声(位于内置U盘的音乐),然后关机,重新拔插T卡后开机,点击开始倒计时,铃声响时铃声异常(不是铃声列表里的,也不是T卡内的音乐)。和倒计时铃声无论设置成哪个,响的都是节奏
本来代码是这样的:
if(PATH == null){//如果path为空,那么设置默认的铃声(比如设置为sd卡里面的音乐,然后把sd卡拔出来,path就为空)
s = AlarmKlaxon.getdefaltUri(ctx).toString();//设置为系统默认的音乐
urivalue = Uri.parse(s);
play(urivalue);
出现第一个bug之后修改方式为
if(PATH == null){
s = AlarmKlaxon.getdefaltUri(ctx).toString();
Uri uri = Uri.parse(&content://media/internal/audio/media/5&);//改变path为空的铃声
urivalue = Uri.parse(s);
play(urivalue);
play(uri); //但是此处有问题音乐path不为空的时候,uri就没有设置,就为空了,那么下面就播放默认的铃声。导致程序出错。出现第二个bug。
正确的修改方式为:
if(PATH == null){
//s = AlarmKlaxon.getdefaltUri(ctx).toString();
Uri uri = Uri.parse(&content://media/internal/audio/media/5&);
s=uri.toString();//转换为String类型,然后在下面的代码中再转换过来
urivalue = Uri.parse(s);
play(urivalue);
6、在座钟界面点击座钟时,时钟报错停止
主要原因是点击之后,设置接口发生变化。点击座钟之后,会执行下面代码
public OnClickListener DigitalClockOnClickListener = new OnClickListener(){
public void onClick(View v)
Intent intent = new Intent();
//intent.setClassName(&com.android.settings&, &android.settings.DATE_SETTINGS&);
intent.setClassName(&com.android.settings&, &com.android.settings.Settings$DateTimeSettingsActivity&);
//设置里面代码发生变化
startActivity(intent);
设置代码对应xml文件代码为:
&activity android:name=&Settings$DateTimeSettingsActivity&
android:label=&@string/date_and_time&&
&intent-filter&
&action android:name=&android.intent.action.MAIN& /&
&action android:name=&android.settings.DATE_SETTINGS& /&
&category android:name=&android.intent.category.VOICE_LAUNCH& /&
&category android:name=&android.intent.category.DEFAULT& /&
&/intent-filter&
&meta-data android:name=&com.android.settings.FRAGMENT_CLASS&
android:value=&com.android.settings.DateTimeSettings& /&
&meta-data android:name=&com.android.settings.TOP_LEVEL_HEADER_ID&
android:resource=&@id/date_time_settings& /&
&/activity&
但是Activity中定义为
public class DateTimeSettings extends SettingsPreferenceFragment
这是什么模式????
7、在世界时间查找框中输入一个列表中不存在的城市名时无任何提示
下拉列表显示是动态的,通过TextChangedListener可以实现,在afterTextChanged方法中,***如果输入的字符和实际列表字符相匹配,那么就增加到新的列表中去。
如果新的列表为空,那么说明不存在城市,那么我们手动添加一个显示信息。 即可提示。
if(list.size()==0)
HashMap&String,String& map1 =new HashMap&String,String&();
map1.put(&text1&, &不存在你要输入的城市&);
list.add(map1);
8、在世界时钟查找框中输入列表中不存在的城市名点击回车键,输入的内容被清空
输入的时候***enter键,让其失效
et.setOnEditorActionListener(new OnEditorActionListener() {
public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
9、使用12小时制,数字座钟界面无“上/下午“的显示
使用String smPmStr = DateUtils.getAMPMString(Calendar.getInstance().get(Calendar.AM_PM));获取是上午还是下午,然后显示在界面上面。
10、倒计时响闹时的默认铃声是一首系统铃声列表里不存在的铃声
让默认铃声显示。
// & & & & intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, false);
具体原因是什么??
11 、钟界面,下方的“确定/删除闹钟/取消”选项卡的灰色颜色不好看,与整个界面的颜色不匹配,建议更改。
刚开始用的样式为style=&@android:style/ButtonBar& &使用见说明:
更改样式为:style=&?android:attr/buttonBarStyle&
12、倒计时响闹时按home键后,期望在状态栏中有通知和倒计时时间到响闹时按menu键,结果倒计时被关闭
解决办法是增加通知栏和 &屏蔽home键。。。。
增加通知栏:在onCreate()中添加&StartNotification();
public void StartNotification(){
nm = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
String title = getString(R.string.Countdown);
Notification n = new Notification(R.drawable.stat_notify_alarm, title, System.currentTimeMillis());
Intent notify = new Intent(this, CountDownNotify.class);
PendingIntent pendingNotify = PendingIntent.getActivity(this,0, notify, 0);
n.setLatestEventInfo(this, title, getString(R.string.CloseCountdown), pendingNotify);
n.flags |= Notification.FLAG_SHOW_LIGHTS
| Notification.FLAG_ONGOING_EVENT;
n.defaults |= Notification.DEFAULT_LIGHTS;
nm.cancel(Notification_ID_COUNTDOWN); //这个不能省略,不然点击home键,然后点击通知栏提示,会有两个铃声。。
nm.notify(Notification_ID_COUNTDOWN, n);
}其他细节不用多说。。。。
屏蔽menu键,代码先执行dispatchKeyEvent方法,然后执行onKeyDown方法,所以***返回键 ,音量键等按钮。
public boolean dispatchKeyEvent(KeyEvent event) {
boolean up = event.getAction() == KeyEvent.ACTION_UP;//按下键操作
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_VOLUME_UP:
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_MUTE:
case KeyEvent.KEYCODE_CAMERA:
case KeyEvent.KEYCODE_FOCUS://照相过程中聚焦模式
case KeyEvent.KEYCODE_BACK:
CdnNotifyCancel();//暂停闹钟
return super.dispatchKeyEvent(event);
然后执行onKeyDown方法,
public boolean onKeyDown(int keyCode, KeyEvent event) {
switch (keyCode) {
case KeyEvent.KEYCODE_BACK:
case KeyEvent.KEYCODE_VOLUME_DOWN:
case KeyEvent.KEYCODE_VOLUME_UP:
//其他键什么都不做
return super.onKeyDown(keyCode, event);
//这样就能屏蔽掉menu键,点击menu键,无反应
13.卸载SD卡后。闹钟铃声不是系统列表的的提示声
1)步骤:在ES文件管理器中选择一首音乐设置为闹钟提示声后,在设置闹钟,提示声为SD卡中的音乐,在卸载SD卡,在设置闹钟
结果:闹钟响铃提示声为不是系统列表中的提示声。
卸载之后,获取还能获取到正确的uri地址,但是在下面代码中获取标题的时候就获取的是 & 缤纷
Ringtone&r&=&RingtoneManager.getRingtone(&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&getContext(),¶ms[0]);//params[0]可以获取到正确的uri&&
&&&&&&&&&&&&&&&&&&&&if&(r&==&null)&{&&
&&&&&&&&&&&&&&&&&&&&&&&&Log.d(&test&,&&ddd&);&&
&&&&&&&&&&&&&&&&&&&&&&&&r&=&RingtoneManager.getRingtone(getContext(),&&
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&Settings.System.DEFAULT_ALARM_ALERT_URI);&&
&&&&&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&&&&&if&(r&!=&null)&{&&
&&&&&&&&&&&&&&&&&&&&&&&&return&r.getTitle(getContext());&//可能是获取标题的时候出了问题???&&
&&&&&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&&&&&return&null;&&
2)步骤:将SD卡中的音乐设置为闹钟响铃提示声后,在卸载SD卡后在***,在进入到闹钟设置界面中。
结果:铃声选项提示:(默认铃声(未知铃声))。
备注:在闹钟设置中设置默认铃声显示:(默认铃声(美好回忆))。
3)时钟/闹钟界面,进入menu/设置,设置默认铃声设为静音,返回后再次进入,默认铃声变为未知铃声
这个是因为修改前面的代码的时候,增加了如下代码:
String[]&proj&=&{&MediaStore.Images.Media.DATA&};&&
&&&&&&&&ContentResolver&resolver&=&getContentResolver();&&
&&&&&&&&String&PATH&=&null;&&
&&&&&&&&try&{&&
&&&&&&&&&&&&Cursor&cursor&=&resolver.query(alert,&proj,&null,&null,null);&&
&&&&&&&&&&&&if&(cursor&!=&null)&&&
&&&&&&&&&&&&{&&
&&&&&&&&&&&&&&&&int&column_index&=&cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);&&
&&&&&&&&&&&&&&&&cursor.moveToFirst();&&
&&&&&&&&&&&&&&&&PATH&=&cursor.getString(column_index);&&
&&&&&&&&&&&&}&&&
&&&&&&&&}&catch&(Exception&ex)&{&&
&&&&&&&&}&&
&&&&&&&&if&(PATH&==&null)//如果是静音的话,path就为空。。就会设置一个新的uri给alert&&
&&&&&&&&&&&&{&&
&&&&&&&&&String&back_defauit&=&Settings.System.getString(getContentResolver(),&Settings.System.BACK_DEFAULT_ALARM_ALERT);&&&&&
&&&&&&&&&alert&=&Uri.parse(back_defauit);&&
&&&&&&&&&&&&if(alert&!=&null){&&
&&&&&&&&&&&&&&&&RingtoneManager.setActualDefaultRingtoneUri(this,&RingtoneManager.TYPE_ALARM,&alert);&&
&&&&&&&&&&&&}&&
&&&&&&&&}&&
第一个 第二个问题的原因是SettingsActivity在首次获取默认铃声的时候,如果是
Uri alert = RingtoneManager.getActualDefaultRingtoneUri(this,
& & & & & & & & RingtoneManager.TYPE_ALARM);
这个代码在静音的时候,首次获取alert可能不为空,为content://settings/system/ringtone,为什么???
还有就是在卸载和***sd卡之后,开始几次设置铃声为外部铃声的时候,提示设置外部铃声失败。为什么????
14.世界时间输入不存在的城市之后点击回车键,内容被清空
在世界时钟查找框中输入列表中不存在的城市名点击回车键,输入的内容被清空
横屏界面世界时间添加“输入查找的城市名称”后点击下一步无反应
在世界时钟查找框中输入列表中不存在的城市名点击回车键,输入的内容被清空
第一次修改,增加代码
et.setOnEditorActionListener(new&OnEditorActionListener()&{//当***到按键的时候,屏蔽操作&&&&
&&&&&&&&&&&&@Override&&&&
&&&&&&&&&&&&public&boolean&onEditorAction(TextView&v,&int&actionId,&KeyEvent&event)&{&&&&
&&&&&&&&&&&&&&&&return&true;&&&&
&&&&&&&&&&&&}&&&&
&&&&&&&&});&&&&
&代码意思详见:
但是这样早切换为横屏的时候,点击下一步,操作也会被屏蔽掉。当时修改为删除上述代码。还是有问题。结果修改如下:
et.setOnKeyListener(new&OnKeyListener(){&&&&
&&&&&&&&&&&&@Override&&&&
&&&&&&&&&&&&&&&&
&&&&&&&&&&&&public&boolean&onKey(View&v,&int&keyCode,&KeyEvent&event)&{&&
&&&&&&&&&&&&&&&&if(keyCode&==&KeyEvent.KEYCODE_ENTER){&//获取enter键事件,当点击ENTER的时候,隐藏键盘&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&InputMethodManager&imm&=&(InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&if(imm.isActive()){&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&imm.hideSoftInputFromWindow(v.getApplicationWindowToken(),&0&);&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&return&true;&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&}&&&&
&&&&&&&&&&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&&&&&&return&false;&&&&
&&&&&&&&&&&&}&&&&
&&&&&&&&});&&
如下问题:为什么竖屏的时候没有下一步按钮,横屏的时候有,而且为什么竖屏的时候点击enter执行删除操作,竖屏的时候执行 进入下一行操作???
15.倒计时-设置默认铃声,实际列表中没有
【时钟】将倒计时铃声设置为系统默认铃声后报错
步骤:进入时钟,选择倒计时,点击开始,等待结束铃声响
结果:实际结束铃声在列表中没有
问题出在下面代码上:
public&static&Uri&getdefaltUri(Context&context){&&
&&&&&&&&String&name&=&&alarm_alert_default&;&&
&&&&&&&&&&
&&&&&&&&//String&uriString&=&Settings.System.getString(context.getContentResolver(),&name);&&
&&&&&&&&String&uriString&=&&content://settings/system/ringtone&;&&
&&Uri&alert&=&RingtoneManager.getActualDefaultRingtoneUri(context,&&
&&&&&&&&&&&&&&&&RingtoneManager.TYPE_ALARM);&&
&&&&&&&&if(null&!=&alert){&&
&&&&&&&&&&Log.d(&alart=&,String.valueOf(alert));&&
&&&&&&&&&&&return&&&
&&&&&&&&&}&&
&&&&&&&&if(uriString&!=&null){&&
&&&&&&&&&&&&return&Uri.parse(uriString);&&
&&&&&&&&}else{&&
&&&&&&&&&&&&return&null;&&
&&&&&&&&}&&
&&&&&&&&&&
第一个bug是因为在settings.db里面,根本没有alar_alert_default这个值,所以会报错。。。修改方式,给定一个默认值。。。
但是这个默认值是铃声系统中没有的,所以有了第二个bug,获取默认的闹钟铃声, & & & & & &但是这样还是有问题的,当我们闹钟铃声和倒计时铃声都设置为外部铃声的时候,卸载sd卡,这个时候获取的闹钟还是
String&uriString&=&&content://settings/system/ringtone&;&&
这样还会出现第一个bug。。。以后怎么修改,看需求。
16、闹钟添加不了标签
原因:SetAlarm.java中没有获取EditTextPreference的代码,并没有对标签进行处理,而是添加了EditText组件。
方法:添加EditTextPreference相关代码,并且进行长度限制和提示。。
mLabel&=&(EditTextPreference)findPreference(&label&);//获取标签&&
mLabel.setOnPreferenceChangeListener(new&Preference.OnPreferenceChangeListener()&{//***标签事件改变&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&boolean&onPreferenceChange(Preference&preference,&Object&newValue)&{&&
&&&&&&&&&&&&&&&&//&TODO&Auto-generated&method&stub&&
&&&&&&&&&&&&&&&&preference.setSummary((String)newValue);//将内容显示在相应位置&&
&&&&&&&&&&&&&&&&return&true;&&
&&&&&&&&&&&&}&&
&&&&&&&&});&&
还要获取&final EditText edit = mLabel.getEditText(); & 以限制长度和输入监控。。
edit.setFilters(new&InputFilter[]&{new&InputFilter.LengthFilter(MAX_LENGTH)});//限制输入长度&&
&&&&&&&&edit.addTextChangedListener(new&TextWatcher(){&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&onTextChanged(CharSequence&s,&int&start,&int&before,&int&count)&{&&
&&&&&&&&&&&&&&&&if(true){&&
&&&&&&&&&&&&&&&&&&&&int&l&=&edit.getText().length();&&
&&&&&&&&&&&&&&&&&&&&if(l&=MAX_LENGTH){&&
&&&&&&&&&&&&&&&&&&&&&&&&Toast&toast&=&Toast.makeText(SetAlarm.this,&R.string.WarningString,&Toast.LENGTH_LONG);&&
&&&&&&&&&&&&&&&&&&&&&&&&ToastMaster.setToast(toast);&&
&&&&&&&&&&&&&&&&&&&&&&&&toast.show();&&
&&&&&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&beforeTextChanged(CharSequence&s,&int&start,&int&count,&&
&&&&&&&&&&&&&&&&&&&&int&after){&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&
&&&&&&&&&&&&@Override&&
&&&&&&&&&&&&public&void&afterTextChanged(Editable&s)&{&&
&&&&&&&&&&&&}&&
&&&&&&&&&&
&&&&&&&&});&&
17、闹钟响起之后之后响铃,没有提示框
步骤:设置一个定时关机时间(17:39),一个闹钟时间(17:40),关机时间到关机后在开机,闹钟时间到响起
结果:但是没有提示框,只有响铃,在按其他应用程序都无法进入,也无法进到设置中。重启正常。
//&win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED&&
&&&&&&&&&&&&&&//&|&WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD);&&
&&&&&&&&win.addFlags(WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED);&&
不知道什么原因,但是加上这两句话之后闹钟响闹的时候,直接在屏幕上显示,不然要点击解锁之后才能显示Activity???
后面还有相关代码:判断如果是屏幕黑暗状态,那么就亮屏。。
if&(!getIntent().getBooleanExtra(SCREEN_OFF,&false))&{&&
&&&&&&&&&&&&win.addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON&&
&&&&&&&&&&&&&&&&&&&&|&WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON&&
&&&&&&&&&&&&&&&&&&&&|&WindowManager.LayoutParams.FLAG_ALLOW_LOCK_WHILE_SCREEN_ON);&&
&&&&&&&&} &
18.闹钟响起-home键-删除闹钟-通知栏点击闹钟报错
步骤:时钟-添加一闹钟-等时间到弹出闹钟提示框按HOME键-重新进入时钟删除此闹钟-下拉通知栏点击关闭闹钟&
结果:弹出提示“很抱歉,闹钟已停止运行”,之后此闹钟在通知栏一直不消失,每次点击均报错
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&FATAL&EXCEPTION:&main&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&java.lang.RuntimeException:&Unable&to&start&activity&ComponentInfo{com.etonmobile.alarm/com.etonmobile.alarm.AlarmAlert}:&java.lang.NullPointerException&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2003)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2028)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread.access$600(ActivityThread.java:130)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread$H.handleMessage(ActivityThread.java:1156)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.os.Handler.dispatchMessage(Handler.java:99)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.os.Looper.loop(Looper.java:148)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread.main(ActivityThread.java:4503)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&java.lang.reflect.Method.invokeNative(Native&Method)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&java.lang.reflect.Method.invoke(Method.java:511)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:834)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&dalvik.system.NativeStart.main(Native&Method)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&Caused&by:&java.lang.NullPointerException&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.etonmobile.alarm.AlarmAlertFullScreen.setTitle(AlarmAlertFullScreen.java:195)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.etonmobile.alarm.AlarmAlertFullScreen.updateLayout(AlarmAlertFullScreen.java:250)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.etonmobile.alarm.AlarmAlertFullScreen.onCreate(AlarmAlertFullScreen.java:178)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&com.etonmobile.alarm.AlarmAlert.onCreate(AlarmAlert.java:60)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.Activity.performCreate(Activity.java:4472)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&at&android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1967)&&
07-01&17:26:56.503&&8456&&8456&E&AndroidRuntime:&&&&...&11&more&&
分析:setTitle代码
& & private void setTitle() {
& &String>
& & & & TextView title = (TextView) findViewById(R.id.alertTitle);
& & & & title.setText(label);
& & 这个是在第一次闹钟响的时候调用的。getLabelOrDefault获取标签应该不为空,那么就是mAlarm可能为空,删除闹钟之后 &打log发现不为空啊???原因进一步分析中。。
19、将倒计时铃声设置为歌曲后,删除该歌曲,倒计时铃声显示为“节奏”,实际响的是闹钟默认铃声
& &此时因为外部歌曲已经不存在,所以应该设置一个新的默认的歌曲。修改方法就是把所选歌曲换成节奏铃声。
//&&&&&&&&&&&&&&&&&&s&=&AlarmKlaxon.getdefaltUri(ctx).toString();这个获取的是闹钟的默认铃声&&
&&&&&&&&&&&&&&&&Uri&uri&=&Uri.parse(&content://media/internal/audio/media/5&);&&
&&&&&&&&&&&&&&&&play(uri);&&
20、倒计时设置了自定义铃声(位于内置U盘的音乐),然后关机,重新拔插T卡后开机,点击开始倒计时,铃声响时铃声异常(不是铃声列表里的,也不是T卡内的音乐)。和倒计时铃声无论设置成哪个,响的都是节奏
本来代码是这样的:
if(PATH&==&null){//如果path为空,那么设置默认的铃声(比如设置为sd卡里面的音乐,然后把sd卡拔出来,path就为空)&&
&&&&s&=&AlarmKlaxon.getdefaltUri(ctx).toString();//设置为系统默认的音乐&&
&&&&&&urivalue&=&Uri.parse(s);&&
&&&&&&play(urivalue);&&
出现第一个bug之后修改方式为
&&&&&&&&&&&&&&&&if(PATH&==&null){&&
//&&&&&&&&&&&&&&&&&&s&=&AlarmKlaxon.getdefaltUri(ctx).toString();&&
&&&&&&&&&&&&&&&&&&&&Uri&uri&=&Uri.parse(&content://media/internal/audio/media/5&);//改变path为空的铃声&&
&&&&&&&&&&&&&&&&}&&
//&&&&&&&&&&&&&&urivalue&=&Uri.parse(s);&&
//&&&&&&&&&&&&&&play(urivalue);&&
&&&&&&&&&&&&&&&&play(uri);&//但是此处有问题音乐path不为空的时候,uri就没有设置,就为空了,那么下面就播放默认的铃声。导致程序出错。出现第二个bug。&&
正确的修改方式为:
if(PATH&==&null){&&
&&&&//s&=&AlarmKlaxon.getdefaltUri(ctx).toString();&&
&&&&Uri&uri&=&Uri.parse(&content://media/internal/audio/media/5&);&&
&&&&s=uri.toString();//转换为String类型,然后在下面的代码中再转换过来&&
&&&&&&urivalue&=&Uri.parse(s);&&
&&&&&&play(urivalue);&&
21、倒计时响闹时按home键后,期望在状态栏中有通知和倒计时时间到响闹时按menu键,结果倒计时被关闭
解决办法是增加通知栏和 &屏蔽home键。。。。
增加通知栏:在onCreate()中添加&StartNotification();
public&void&StartNotification(){&&
&&&&&&&&nm&=&(NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);&&
&&&&&&&&String&title&=&getString(R.string.Countdown);&&
&&&&&&&&Notification&n&=&new&Notification(R.drawable.stat_notify_alarm,&title,&System.currentTimeMillis());&&
&&&&&&&&Intent¬ify&=&new&Intent(this,&CountDownNotify.class);&&
&&&&&&&&PendingIntent&pendingNotify&=&PendingIntent.getActivity(this,0,¬ify,&0);&&
&&&&&&&&n.setLatestEventInfo(this,&title,&getString(R.string.CloseCountdown),&pendingNotify);&&
&&&&&&&&n.flags&|=&Notification.FLAG_SHOW_LIGHTS&&
&&&&&&&&|&Notification.FLAG_ONGOING_EVENT;&&
&&&&&&&&n.defaults&|=&Notification.DEFAULT_LIGHTS;&&
&&&&&&&&nm.cancel(Notification_ID_COUNTDOWN);&//这个不能省略,不然点击home键,然后点击通知栏提示,会有两个铃声。。&&
&&&&&&&&nm.notify(Notification_ID_COUNTDOWN,&n);&&
其他细节不用多说。。。。
屏蔽menu键,代码先执行dispatchKeyEvent方法,然后执行onKeyDown方法,所以***返回键 ,音量键等按钮。
@Override&&
&&&&public&boolean&dispatchKeyEvent(KeyEvent&event)&{&&
&&&&&&&&boolean&up&=&event.getAction()&==&KeyEvent.ACTION_UP;//按下键操作&&
&&&&&&&&switch&(event.getKeyCode())&{&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_VOLUME_UP:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_VOLUME_DOWN:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_VOLUME_MUTE:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_CAMERA:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_FOCUS://照相过程中聚焦模式&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_BACK:&&
&&&&&&&&&&&&&&&&if&(up)&{&&
&&&&&&&&&&&&&&&&&&&&CdnNotifyCancel();//暂停闹钟&&
&&&&&&&&&&&&&&&&}&&
&&&&&&&&&&&&&&&&return&true;&&
&&&&&&&&&&&&default:&&
&&&&&&&&&&&&&&&&break;&&
&&&&&&&&}&&
&&&&&&&&return&super.dispatchKeyEvent(event);&&
然后执行onKeyDown方法,
@Override&&
&&&&public&boolean&onKeyDown(int&keyCode,&KeyEvent&event)&{&&
&&&&&&&&switch&(keyCode)&{&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_BACK:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_VOLUME_DOWN:&&
&&&&&&&&&&&&case&KeyEvent.KEYCODE_VOLUME_UP:&&
&&&&&&&&&&&&default:&&
&&&&&&&&&&&&//其他键什么都不做&&
return&super.onKeyDown(keyCode,&event);&&
&&&&&&//这样就能屏蔽掉menu键,点击menu键,无反应&&
22、两台测试机,同时开始倒计时(10s),其中一台在计时开始后按power键锁屏,该机器计时提示不及时
修改方式为在CountdownService类中增加PowerManager。。。
@Override&&&&
&&&&public&void&onCreate()&{&&&&
&&&&&&&&super.onCreate();&&&&
&&&&&&&&pm&=&(PowerManager)&getSystemService(Context.POWER_SERVICE);&&
&&&&&&&&wl&=&pm.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK,&&StartCountdown&);&&
&&&&&&&&wl.acquire();&&
@Override&&&&
&&&&public&void&onDestroy()&{&&&&
&&&&&&&&super.onDestroy();&&&&
&&&&&&&&wl.release();&&
23:打***过程中 闹钟依然会响
首先确保这个***器可以***到***状态的变化
&action android:name=&android.intent.action.PHONE_STATE& /&
然后再***器类里面获取***的状态,如果为打***状态,设置参数值为真。
if&(&android.intent.action.PHONE_STATE&.equals(intent.getAction()))&{&&
&&&&&&&&&&&&String&state&=&intent.getStringExtra(&state&);&&
&&&&&&&&&&&&isPhoneStateIdle&=&TextUtils.equals(state,&TelephonyManager.EXTRA_STATE_IDLE);&&
&&&&&&&&&&&&return;&&
&&&&&&&&}&&
然后再闹钟响闹的程序中,判断打***状态是否为真,如果为真,那么就不想闹钟。暂停几分钟之后再行判断。
if&(!AlarmInitReceiver.isPhoneIdle())&{&&&&&&&&&&
&&&&&&&&&&&&if&(System.currentTimeMillis()&&&alarm.time&+&STALE_WINDOW)&{&&
&&&&&&&&&&&&&&&&Log.v(&Ignoring&stale&alarm&);&&
&&&&&&&&&&&&&&&&return;&&
&&&&&&&&&&&&}&&&&&&&&&&&
&&&&&&&&&&&&final&String&snooze&=&PreferenceManager.getDefaultSharedPreferences(context).getString(SettingsActivity.KEY_ALARM_SNOOZE,&&5&);&&
&&&&&&&&&&&&int&snoozeMinutes&=&Integer.parseInt(snooze);&&
&&&&&&&&&&&&final&long&snoozeTime&=&System.currentTimeMillis()&+&(1000&*&60&*&snoozeMinutes);&&&&&&&&
&&&&&&&&&&&&Alarms.saveSnoozeAlert(context,&alarm.id,&snoozeTime);&&&&&&&&&&&&
&&&&&&&&&&&&Vibrator&mVibrator&=(Vibrator)&context.getSystemService(Context.VIBRATOR_SERVICE);&&&&
&&&&&&&&mVibrator.vibrate(1000);&&&&&&&&&&
&&&&&&&&&&&&final&Calendar&c&=&Calendar.getInstance();&&
&&&&&&&&&&&&c.setTimeInMillis(snoozeTime);&&
&&&&&&&&&&&&String&label&=&alarm.getLabelOrDefault(context);&&
&&&&&&&&&&&&label&=&context.getString(R.string.alarm_notify_snooze_label,&label);&&
&&&&&&&&&&&&Intent&cancelSnooze&=&new&Intent(context,&AlarmReceiver.class);&&
&&&&&&&&&&&&cancelSnooze.setAction(Alarms.CANCEL_SNOOZE);&&
&&&&&&&&&&&&cancelSnooze.putExtra(Alarms.ALARM_ID,&alarm.id);&&
&&&&&&&&&&&&PendingIntent&broadcast&=&&&
&&&&&&&&&&&&PendingIntent.getBroadcast(context,&alarm.id,&cancelSnooze,&0);&&
&&&&&&&&&&&&NotificationManager&nm&=&getNotificationManager(context);&&
&&&&&&&&&&&&Notification&n&=&new&Notification(R.drawable.stat_notify_alarm,&label,&0);&&
&&&&&&&&&&&&n.setLatestEventInfo(context,&label,&&
&&&&&&&&&&&&context.getString(R.string.alarm_notify_snooze_text,&&
&&&&&&&&&&&&Alarms.formatTime(context,&c)),&broadcast);&&
&&&&&&&&&&&&n.flags&|=&Notification.FLAG_AUTO_CANCEL;&&
&&&&&&&&&&&&n.flags&|=&Notification.FLAG_ONGOING_EVENT;&&
&&&&&&&&&&&&nm.notify(alarm.id,&n);&&&&&&&&&
&&&&&&&&&&&&return;&&
&&&&&&&&}&&
然后闹钟时间到的时候,会触发AlarmRecever.java类。if (!AlarmInitReceiver.isPhoneIdle()) 由于在打***,执行里面的方法。
判断是否大于3分钟,如果是,那么不执行。闹钟响。。如果打***状态超过3分钟呢???
设置下次响闹钟为延长默认时间。振动一秒钟。发送一个通知。
24:通话的过程中闹钟自动停止,点击通知栏查看为3分钟,应该为默认时间。
通过PreferenceManager获取系统设置的时间。
//final&long&snoozeTime&=&System.currentTimeMillis()&+&(3&*&60&*&1000);&&
final&String&snooze&=&PreferenceManager.getDefaultSharedPreferences(context).getString(SettingsActivity.KEY_ALARM_SNOOZE,&&5&);&&
&&int&snoozeMinutes&=&Integer.parseInt(snooze);&&
&&&&&&&&&&&&final&long&snoozeTime&=&System.currentTimeMillis()&+&(1000&*&60&*&snoozeMinutes);&&
25:闹钟响闹过程中关机,手机会响闹一段时间。
解决办法,注册关机***器,取消闹钟。
filter.addAction(Intent.ACTION_SHUTDOWN);
在***器里面判断是否为关机状态。
if&(action.equals(Intent.ACTION_SHUTDOWN))&{&&
&&&&&&&&&&&&&&&&Log.e(&Shutdown&when&alerting...&);&&
&&&&&&&&&&&&&&&&dismiss(false);&&
&&&&&&&&&&&&&&&&return;&&
&&&&&&&&&&&&}&&
26:闹钟次数最多为五次。
预计每次响过闹钟之后,次数加1。要在暂停和自动停止都执行的方法中设置次数。
在***器里面,判断。
首先在onCreate方法里面注册使用xml文件。
private static final int DEFAULT_SNOOZE_TIME = 6;//默认次数
& & SharedPreferences>
& & String TIMES = ×&;//次数
& & Editor>
& & & & edit = snoosetime.edit();
然后在***器mReceiver里面判断。
int×&=&GetSnooseTimes();//获取闹钟响闹次数&&
&&&&&&&&&&&&if(times&&=&DEFAULT_SNOOZE_TIME){//如果超过指定次数。那么清楚数据,返回,不在执行&&
&&&&&&&&&&&&&&&&ClearSnooseTimes();&&
&&&&&&&&&&&&&&&&dismiss(false);&&
&&&&&&&&&&&&&&&&return;&&
&&&&&&&&&&&&}&&
&&&&&&&&&&&&if&(action.equals(Alarms.ALARM_DISMISS_ACTION))&{//如果用户点击的是取消操作,那么也清楚里面数据&&
&&&&&&&&&&&&&&&&ClearSnooseTimes();&&
&&&&&&&&&&&&}&&
private&int&GetSnooseTimes(){&&
&&&&&&&&int×&=&snoosetime.getInt(TIMES,&0);//获取闹钟响闹次数&&
&&&&&&&×++;//自加1&&
&&&&&&&&if(times&&=&DEFAULT_SNOOZE_TIME){&//如果大于指定次数&&
&&&&&&&&&&&&ClearSnooseTimes();&//清楚里面数据&&
&&&&&&&&}else{&&
&&&&&&&&&&&&edit.putInt(TIMES,×);//把加1之后的数据存进去&&
&&&&&&&&&&&&mit();&&
&&&&&&&&}&&
&&&&&&&&return&//返回次数&&
&&&&private&void&ClearSnooseTimes(){&&
&&&&&&&&edit.clear();&&
&&&&&&&&mit();&&
27:闹钟响时删除此闹钟后1分钟后“时钟”报错
通过eclipse查看错误信息,报空指针。顺着错误信息,定位。
最后理清思路,是你在删除闹钟的时候,只查询有没有暂停,如果没有,那么直接删除。如果有暂停,那么删除暂停里面的信息。
而正在响的闹钟,一分钟之后,自定停止响的时候,会把暂停信息加到xml文件里面。
当执行代码查询下一个闹钟的时候,是查询暂停的和启用的两个地方的文件。然后通过设置启用闹钟。但是辞职暂停的闹钟在数据库里面已经没有
了。所以会报空指针异常。。
修改如下:插入暂停信息的时候,先判断数据库中有没有这个闹钟信息,如果没有的话,就不插入。如果有这条信息,那么就执行插入到xml文件中
else&if&(hasAlarmById(context.getContentResolver(),id))&&
&&&&&&&&{&&
&&&&&&&&&&&&&&
&&&&&&&&}&&
private&static&boolean&hasAlarmById(&&
&&&&&&&&&&&&ContentResolver&contentResolver,int&id)&{&&
&&&&&&&&Cursor&cursor&=&contentResolver.query(Alarm.Columns.CONTENT_URI,&&
&&&&&&&&&&&&&&&&Alarm.Columns.ALARM_QUERY_COLUMNS,&&_id=&+id,&&
&&&&&&&&&&&&&&&&null,&null);&&
&&&&&&&&if&(cursor!=null)&&
&&&&&&&&&&&&return&true&;&&
&&&&&&&&else&&&
&&&&&&&&{&&
&&&&&&&&&&&&return&false&;&&
&&&&&&&&}&&
相关知识点:
时钟改bug的时候,改着改着删除时钟报错。。。恢复到以前版本也不行。。。
如何判断一个表为空:游标查询数据,cursor.moveToFirst(),然后用cursor.getCount()判断游标的长度。如果为0,那么查询的字段就为空。
28:闹钟再响闹钟时间为3分钟,期望为设置时间。
&span&style=&color:#ff0000;&&&strong&&&/strong&&/span&final&String&snooze&=&PreferenceManager.getDefaultSharedPreferences(context).getString(SettingsActivity.KEY_ALARM_SNOOZE,&&5&);&&
&&&&&&&&&&&&int&snoozeMinutes&=&Integer.parseInt(snooze);&&
&&&&&&&&&&&&final&long&snoozeTime&=&System.currentTimeMillis()&+&(1000&*&60&*&snoozeMinutes);&&
关于preference的使用参考:
29.闹钟,倒计时设置完外部铃声之后显示的还是静音。
经测试,通过应用传递的uri是正确的,而且播放的时候也是选择的歌曲的。应该是框架显示的问题。
显示铃声会调用RingtonePickerActivity里面的onPrepareListView方法。其中最主要是
mClickedPos = getListPosition(mRingtoneManager.getRingtonePosition(mExistingUri)); 通过上层传递过来的uri得到位置数据。
getRingtonePosition会首先得到所有的铃声数据,得到所有的铃声uri。跟传递进来的进行比较,如果匹配,返回i值。否则,返回-1.
经检验是闹钟代码的问题。设置的默认uri为content://media/internal/audio/media/5但是 &当从860到701这个项目转变的时候,数据表中这个uri已经不是代表节奏 铃声 了,经过查询是代表闪烁。所以此时会出现紊乱。
修改方式:通过 RingtoneManager.getActualDefaultRingtoneUri(context,
& & & & & & & & RingtoneManager.TYPE_ALARM)
获取settings.db中的默认铃声。修改上层相应改动。
还有一个问题,就是选择完外部铃声之后,再次进入铃声选择列表,显示的是默认铃声。原因是在getRingtonePosition中的getCursor没有获取到数据。
还是getCursor问题。已经解决。
30.设置外部铃声未成功:
代码在RingtonePickerActivity中onClick点击其他,会触动
if(which == DialogInterface.BUTTON_NEUTRAL){
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setPackage(&com.android.fileexplorer&);
intent.setType(&audio/*&);
startActivityForResult(intent, GET_PICKER_OTHER);
Log.i(&ETON&,&DialogInterface.BUTTON_NEUTRAL&);
会返回数据得到ringFullPath。最主要的是通过getExternalContentURIForPath(ringFullPath)得到uri,这个要从数据库中查询。
bug的原因就是在插板sd卡的时候数据没有更新完,所以导致获取不到数据。&
测试 &两个多G的 数据 大概需要三分钟的时间。
设置铃声未成功 &字符在frameworks\base\core\res\res\values-zh-rCN中进行设置。
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!
二、互相尊重,对自己的言论和行为负责。
本文标题:
本页链接: