[FAQ21436] 播放视频时被来电中断或短信提示音中断再回到播放界面,没有声音或没有继续播放

当音视频应用如MTKGallery在播放过程中遇到来电、短信或其他音频干扰时,会失去audiofocus,导致视频无声。文章分析了此现象背后的机制,包括如何检查日志以确定audiofocus是否被重新获取,及在不同情况下可能的解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

播放视频时,如果有来电、短信提示音、或者播放了其他声音,视频APP会失去audio focus,暂时不会再播放声音。

类似于下面的log:

// 使用MTK Gallery播放视频,Gallery会申请audio focus
        06-27 09:21:48.069557 793 2795 I MediaFocusControl: requestAudioFocus() from uid/pid 10052/2823 clientId=android.media.AudioManager@9bc5373com.android.gallery3d.app.MovieActivity$1@48ec230 callingPack=com.android.gallery3d req=1 flags=0x0 sdk=26

// Gallery失去audio focus,此时Gallery不应该再播放声音。
     06-27 09:22:00.090021 793 2795 I MediaFocusControl: abandonAudioFocus() from uid/pid 10052/2823 clientId=android.media.AudioManager@9bc5373com.android.gallery3d.app.MovieActivity$1@48ec230

如果重新再回到视频播放界面,视频没有声音,或者没有继续播放,可以检查main log,看视频APP是否有重新获取到audio focus,分为如下几种情况:

(1)如果打印abandonAudioFocus log,其他模块放弃了audio focus,但是视频APP没有来申请获取audio focus,需要找视频APP的厂商来确认代码逻辑,看有没有调用AudioManager.java的requestAudioFocus()函数来获取。

例如,使用MTK Gallery可以找MTK确认,使用第三方APP可以找对应的APP厂商确认。

(2)如果视频APP重新获取audio focus,但是获取不到,需要检查Audio framework的逻辑。常见的是,正在打电话时,其他APP会无法获取到audio focus。

    对应代码可以查看AudioService.java的requestAudioFocus()函数,该函数再调用到MediaFocusControl.java的requestAudioFocus()函数。

    在MediaFocusControl.java的requestAudioFocus()函数里面添加调试log来确认是在哪个return语句返回。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值