Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】
測试步骤
【測试版本号】T0606
【模块版本号】
NAVI锁屏:5.0.0.ck
【測试步骤】
1、手动按power键上锁,
【測试结果】
没有锁屏提示音,无法恢复【单机必现】
【预期结果】
有提示音
【发生次数】
单机必现
从log能够找到
4321 05-25 16:58:23.779 886 32501 W SoundPool: sample 1 not READY
7641 05-25 16:58:33.879 886 32563 W SoundPool: sample 1 not READY
10835 05-25 16:58:42.550 886 32619 W SoundPool: sample 1 not READY
14300 05-25 16:58:53.021 886 32679 W SoundPool: sample 1 not READY
17733 05-25 16:59:02.343 886 32737 W SoundPool: sample 1 not READY
21173 05-25 16:59:12.912 886 332 W SoundPool: sample 1 not READY
24266 05-25 16:59:19.413 886 397 W SoundPool: sample 1 not READY
27374 05-25 16:59:25.650 886 456 W SoundPool: sample 1 not READY
30833 05-25 16:59:32.635 886 557 W SoundPool: sample 1 not READY
34121 05-25 16:59:41.375 886 616 W SoundPool: sample 1 not READY
37447 05-25 16:59:49.593 886 787 W SoundPool: sample 1 not READY
40340 05-25 16:59:58.792 886 888 W SoundPool: sample 1 not READY
43666 05-25 17:00:05.802 886 1015 W SoundPool: sample 1 not READY
播放失败的原因
解决方式:
改动文件:frameworks/av/media/libmedia/SoundPool.cpp
int SoundPool::play(int sampleID, float leftVolume, float rightVolume,
int priority, int loop, float rate)
{
ALOGV("play sampleID=%d, leftVolume=%f, rightVolume=%f, priority=%d, loop=%d, rate=%f",
sampleID, leftVolume, rightVolume, priority, loop, rate);
sp<Sample> sample;
SoundChannel* channel;
int channelID; Mutex::Autolock lock(&mLock); if (mQuit) {
return 0;
}
// is sample ready? sample = findSample(sampleID);
//2015.06.06 add for begin
if(sample != 0){
int LoopCounter = 15;
while(LoopCounter-- > 0 && (sample->state() != Sample::READY)){
ALOGD("wait for sample ready, sleep 150ms");
usleep(150 * 1000);
}
}
//2015.06.06 add for end
if ((sample == 0) || (sample->state() != Sample::READY)) {
ALOGW(" sample %d not READY", sampleID);
return 0;
} dump(); // allocate a channel
channel = allocateChannel_l(priority); // no channel allocated - return 0
if (!channel) {
ALOGV("No channel allocated");
return 0;
} channelID = ++mNextChannelID; ALOGV("play channel %p state = %d", channel, channel->state());
channel->play(sample, channelID, leftVolume, rightVolume, priority, loop, rate);
return channelID;
}
假设载入线程还没有准备好sample->state() != Sample::READY。等待2.25s再去播放
Android 手动按power键上锁,没有锁屏提示音,无法恢复【单机必现】的更多相关文章
- Android Device Administration 设备管理器——实现一键锁屏
Android Device Administration 设备管理器--实现一键锁屏 最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊 ...
- Android Framework层Power键关机流程(二,关机流程)
二,关机流程 从前一篇博文我们知道,当用户长按Power键时会弹出(关机.重启,飞行模式等选项)对话框,我们点击关机,则会弹出关机确认对话框.那么从选项对话框到关机确认对话框又是一个什么流程呢.下面我 ...
- Android Framework层Power键关机流程(一,Power长按键操作处理)
一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...
- Android 手动调用 返回键
有人想通过下面代码来实现手动调用返回键,很可惜会出现空指针异常. this.onKeyDown(KeyEvent.KEYCODE_BACK, null); 我们可以通过调用 onBackPressed ...
- Android 7.0 以上保留数据去除锁屏密码的方法
在很多情况下,由于我们的疏忽,导致忘记了锁屏密码.也没有开启 USB 调试,内置存储中还有要保留的数据.我们需要在不清除数据的情况下删除锁屏密码.接下来我们就介绍该如何做. 注意事项 首先要注意,这个 ...
- 【Android N 7.1.1】 处于锁屏界面时可以转屏
frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.ja ...
- 手动ubuntu 18.04修改登录锁屏界面效果(含登录背景修改)flat-remix
前言 在ubuntu 18.04,可以通过修改/etc/alternatives/gdm3.css来进行修改 本来想直接使用flat-remix主题,但是只有这个登录界面没有达到作者演示的效果,所以手 ...
- 【Mac使用系列】Mac锁屏及快捷键
mac锁屏办法,我有所尝试,可用系统自带锁屏快捷键:Ctrl + Command + Q或者参考方法2,直接设置TouchBar. 这两种办法,亲测可用.我直接设置了TouchBar,锁屏解锁离得很近 ...
- Android 触摸提示音【转】
本文转载自:http://blog.csdn.net/Jin_HeZai/article/details/46791567 近期任务,涉及Android触摸提示音. 首先,定位源码目标.很显然的,在原 ...
随机推荐
- IntelliJ IDEA 显示行号
设置方法如下: File->Settings->Editor->Appearence->Show Line Number
- Redis(四)Redis高级
一Redis 数据备份与恢复 Redis SAVE 命令用于创建当前数据库的备份. 语法 redis Save 命令基本语法如下: redis 127.0.0.1:6379> SAVE 实例 r ...
- Linux下MySQL主从同步故障:"Slave_SQL_Running:No"的解决方法
故障现象: 进入slave服务器,运行: mysql> show slave status\G ....... Relay_Log_File: loc ...
- beeshell —— 开源的 React Native 组件库
介绍 beeshell 是一个 React Native 应用的基础组件库,基于 0.53.3 版本,提供一整套开箱即用的高质量组件,包含 JavaScript(以下简称 JS)组件和复合组件(包含 ...
- 论 异常处理机制中的return关键字
Java中,执行try-catch-finally语句需要注意: 第一:return语句并不是函数的最终出口,如果有finally语句,这在return之后还会执行finally(return的值会暂 ...
- shell run 屏蔽一切log
&命令: xxx >/dev/null 2>&1 & 屏蔽一切logxxx >/tmp/xxx.log 2 ...
- 【基础知识】Asp.Net基础三
服务器端控件一般用于访问量不高的网站,要做到物尽其用. 服务器端控件: FIleUpload控件:向服务器上传文件 if (this.FileUpload1.HasFile) { // Path.Ge ...
- 华为荣耀V8这个7.0的系统的root
原文链接:http://m.shuaji.com/jiaocheng/5585.htm 已经有不少的机友的华为荣耀V8手机已经升级到EMUI5.0了,也就是现在的安卓7.0的系统,那这个时候该如何进行 ...
- iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面
iOS 11开发教程(六)iOS11Main.storyboard文件编辑界面 在1.2.2小节中提到过编辑界面(Interface builder),编辑界面是用来设计用户界面的,单击打开Main. ...
- Web服务评估工具Nikto
Web服务评估工具Nikto Nikto是一款Perl语言编写的Web服务评估工具.该工具主要侧重于发现网站的默认配置和错误配置.它通过扫描的方式,检测服务器.服务和网站的配置文件,从中找出默认配 ...