測试步骤

【測试版本号】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键上锁,没有锁屏提示音,无法恢复【单机必现】的更多相关文章

  1. Android Device Administration 设备管理器——实现一键锁屏

    Android Device Administration 设备管理器--实现一键锁屏 最近研究了一下安全这一块的内容,当然,我是比较水的,所以也拿不出什么好知识点,但是有一些冷门的东西我还是可以聊聊 ...

  2. Android Framework层Power键关机流程(二,关机流程)

    二,关机流程 从前一篇博文我们知道,当用户长按Power键时会弹出(关机.重启,飞行模式等选项)对话框,我们点击关机,则会弹出关机确认对话框.那么从选项对话框到关机确认对话框又是一个什么流程呢.下面我 ...

  3. Android Framework层Power键关机流程(一,Power长按键操作处理)

    一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...

  4. Android 手动调用 返回键

    有人想通过下面代码来实现手动调用返回键,很可惜会出现空指针异常. this.onKeyDown(KeyEvent.KEYCODE_BACK, null); 我们可以通过调用 onBackPressed ...

  5. Android 7.0 以上保留数据去除锁屏密码的方法

    在很多情况下,由于我们的疏忽,导致忘记了锁屏密码.也没有开启 USB 调试,内置存储中还有要保留的数据.我们需要在不清除数据的情况下删除锁屏密码.接下来我们就介绍该如何做. 注意事项 首先要注意,这个 ...

  6. 【Android N 7.1.1】 处于锁屏界面时可以转屏

    frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarWindowManager.ja ...

  7. 手动ubuntu 18.04修改登录锁屏界面效果(含登录背景修改)flat-remix

    前言 在ubuntu 18.04,可以通过修改/etc/alternatives/gdm3.css来进行修改 本来想直接使用flat-remix主题,但是只有这个登录界面没有达到作者演示的效果,所以手 ...

  8. 【Mac使用系列】Mac锁屏及快捷键

    mac锁屏办法,我有所尝试,可用系统自带锁屏快捷键:Ctrl + Command + Q或者参考方法2,直接设置TouchBar. 这两种办法,亲测可用.我直接设置了TouchBar,锁屏解锁离得很近 ...

  9. Android 触摸提示音【转】

    本文转载自:http://blog.csdn.net/Jin_HeZai/article/details/46791567 近期任务,涉及Android触摸提示音. 首先,定位源码目标.很显然的,在原 ...

随机推荐

  1. gif处理

    UleadGIFAnimator-v5.05破解版 网盘地址:https://pan.baidu.com/s/1bpf6iVP 2017-02-19  10:39:58

  2. day6作业--游戏人生

    本节作业: 熟练使用类和模块,写一个交互性强.有冲突的程序. 思路: 1.各个模块之间的调用关系,如何使用类,各种方法的使用上面: 2.学了类,以为能用来解决所有问题,东西都要写在类里面: 3.下面自 ...

  3. Asp.net MVC4 +EF6开发的个人网站源码和介绍(仅供新手学习)

    本项目是我去年利用业余时间开发的,采用的是asp.net mvc 4 +EF6+三层架构,适合新手进行学习,高手就没有什么价值了,可以直接跳过. 源码和数据库下载(已上传到git):https://g ...

  4. Hadoop自定义类型处理手机上网日志

    job提交源码分析 在eclipse中的写的代码如何提交作业到JobTracker中的哪?(1)在eclipse中调用的job.waitForCompletion(true)实际上执行如下方法 con ...

  5. Yii2之控制台命令篇(console)

    控制台命令 Yii 中有一个拥有丰富功能的控制台,它们主要用于创建网站后台处理的任务.在项目根目录下执行相关操作,有意思的事,可以通过 yii 自带的功能,列出当前已有的命令. 1.查看当前项目控制台 ...

  6. Ionic入门十:icon(图标)

    ionic 也默认提供了许多的图标,大概有500多个.用法也非常的简单: <i class="icon ion-star"></i> 图标列表如下:   ...

  7. Redis keys命令

    序号 命令及描述 1 DEL key该命令用于在 key 存在时删除 key. 2 DUMP key 序列化给定 key ,并返回被序列化的值. 3 EXISTS key 检查给定 key 是否存在. ...

  8. Spring Boot 结合 Redis 缓存

    Redis官网: 中:http://www.redis.cn/ 外:https://redis.io/ redis下载和安装 Redis官方并没有提供Redis的Windows版本,这里使用微软提供的 ...

  9. UNP学习总结(一)

    本文主要为对UNP第五章部分内容的实验和总结. UNP第五章对一个echo服务器和客户端在各种连接状态下的表现做了详细的分析,包括了: 正常启动和终止: accept返回前连接中止: 服务器进程终止: ...

  10. python opencv3 背景分割 mog2 knn

    git:https://github.com/linyi0604/Computer-Vision 使用mog2算法进行背景分割 # coding:utf-8 import cv2 # 获取摄像头对象 ...