VideoView申请音频焦点问题
来源:互联网 发布:曾经网络歌曲 编辑:程序博客网 时间:2024/06/05 07:09
问题现象:使用VideoView写了一个悬浮框播放视频程序,在悬浮框代码中注册音频焦点监听事件,监听悬浮框的音频焦点获取和丢失。发现悬浮框和Music同时播放了。
分析:通过log分析当时音频焦点的获取情况,如下:
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@2109af33com.android.gallery3d.app.MoviePlayer$42@38f352f0
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@347bf9ccom.android.gallery3d.ui.FloatVideoView$1@10964da5
I/MediaFocusControl( 652): AudioFocus abandonAudioFocus() from android.media.AudioManager@2109af33com.android.gallery3d.app.MoviePlayer$42@38f352f0
I/MediaFocusControl( 652): AudioFocus removeFocusStackEntry(): removing entry for android.media.AudioManager@2109af33com.android.gallery3d.app.MoviePlayer$42@38f352f0
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@347bf9c
I/MediaFocusControl( 652): AudioFocus abandonAudioFocus() from android.media.AudioManager@204847cc
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@c5fd86dcom.android.music.MediaPlaybackService$3@a0e8ca2
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@347bf9ccom.android.gallery3d.ui.FloatVideoView$1@10964da5
I/MediaFocusControl( 652): AudioFocus abandonAudioFocus() from android.media.AudioManager@2109af33com.android.gallery3d.app.MoviePlayer$42@38f352f0
I/MediaFocusControl( 652): AudioFocus removeFocusStackEntry(): removing entry for android.media.AudioManager@2109af33com.android.gallery3d.app.MoviePlayer$42@38f352f0
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@347bf9c
I/MediaFocusControl( 652): AudioFocus abandonAudioFocus() from android.media.AudioManager@204847cc
I/MediaFocusControl( 652): AudioFocus requestAudioFocus() from android.media.AudioManager@c5fd86dcom.android.music.MediaPlaybackService$3@a0e8ca2
会发现,首先视频播放器MoviePlayer获取焦点。再打开悬浮框,悬浮框FloatVideoView获取焦点,MoviePlayer丢失焦点。可是在这里我们会发现,紧接着未知东西又申请了音频焦点,造成悬浮框FloatVideoView丢失音频焦点,而且没有再获取。故,当进入Music时候两者同时响起。
通过跟踪代码发现在VideoView中有申请音频焦点:
/frameworks/base/core/java/android/widget/VideoView.java
protected void openVideo() {
........
AudioManager am = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
........
}
同时,由于requestAudioFocus的监听事件(第一个参数)为空,所以在log中不会打印出申请音频焦点的类名。也就造成了该现象。
0 0
- VideoView申请音频焦点问题
- AudioManager获得焦点音频的问题
- *关于音频焦点和音频竞争通道的问题
- Android音频焦点
- Android---管理音频焦点
- Android 获取音频焦点
- Android---管理音频焦点
- Android 音频焦点
- 音频焦点处理
- Android音频焦点
- Android音频焦点
- android音频焦点
- videoView全屏问题
- videoview全屏问题
- VideoView全屏问题
- videoView 无法播放问题
- Android 音频焦点(Audio Focus)
- Android 音频焦点(Audio Focus)
- js中(function(){…})()立即执行函数写法理解
- 新浪微博SDK抛出异常-[__NSDictionaryM weibosdk_WBSDKJSONString]:
- iOS 开发笔记---在Label中显示图片
- [js] js中的 set & get
- net-snmp开发代理常见问题解决方案
- VideoView申请音频焦点问题
- Ubuntu14.04 CUDA 驱动安装
- OJ嘻唰唰 Shape系列-4
- 拿工资不仅仅是让你写代码的
- Linux下清空文件内容的几种方法
- 无线网络模式和加密方式简介
- Android Monkey
- Unity学习 - C#委托的介绍(delegate、Action、Func、predicate)
- 【风宇冲】Unity3D教程宝典之两步实现超实用的XML存档