Android 系统(208)---OTA升级后概率性出现卡在开机动画界面无法退出

OTA升级后概率性出现卡在开机动画界面无法退出

 

OTA升级之后,手机会概率性卡在开机动画界面,log 显示 media.player died:

01-01 20:06:46.273062 288 288 E art : Cannot patch secondary image '/system/framework/boot-framework.art', clearing dalvik_cache and restarting zygote.  //<==zygote重启

01-01 20:06:46.298441 247 247 I ServiceManager: service 'media.player' died  

01-01 20:06:46.306115 513 574 D BootAnimation: threadLoop() movie() //<==开始播放开机动画

 

导致开机动画退出不了,也没有开机铃声播放。

 

原因:

OTA之后第一次开机,由于zygote检测到boot-framework.art这支文件的校验和不对(system分区在OTA升级后会更新,但是data分区下的文件在OTA升级中不更新仍旧是旧版本的,造成data和system目录下的.art、.oat文件不匹配),于是clearing了dalvik-cache里面的内容。zygote重启,zygote挂掉之后,引起media server挂掉,进而导致没有声音。也无法满足开机动画退出条件checkExit();。

 

解决方法:

修改BootAnimation.cpp:
491bool BootAnimation::threadLoop() 
492{
……
498 status_tmediastatus = NO_ERROR;
…… 
508 if (mediastatus == NO_ERROR) { 
509 ALOGD("mediaplayer is initialized"); 
510 Parcel* attributes = new Parcel(); 
511 attributes->writeInt32(AUDIO_USAGE_MEDIA); //usage 
512 attributes->writeInt32(AUDIO_CONTENT_TYPE_MUSIC); //audio_content_type_t 
513 attributes->writeInt32(AUDIO_SOURCE_DEFAULT); //audio_source_t 
514 attributes->writeInt32(0); //audio_flags_mask_t 
515 attributes->writeInt32(1); //kAudioAttributesMarshallTagFlattenTags of mediaplayerservice.cpp 
516 attributes->writeString16(String16("BootAnimationAudioTrack")); // tags 
517 mediaplayer->setParameter(KEY_PARAMETER_AUDIO_ATTRIBUTES, *attributes); 
518 mediaplayer->setAudioStreamType(AUDIO_STREAM_MUSIC); 
519 mediastatus = mediaplayer->prepare(); 
520 } 
521 if (mediastatus == NO_ERROR) { 
522 ALOGD("media player is prepared"); 
523 mediastatus = mediaplayer->start(); 
524 }
//If the mediastatus is not NO_ERROR, mBootVideoPlayState = MEDIA_ERROR.
if(mediastatus != NO_ERROR){ //add code
mBootVideoPlayState = MEDIA_ERROR; //add code
} //add code 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值