Android登录页VideoView播放时暂停音乐的解决方法咨询
解决VideoView播放时暂停音乐播放器的问题
这个问题很常见,本质是你的VideoView里的MediaPlayer默认会抢占音频焦点,导致其他正在播放的音频(比如音乐播放器)被迫暂停。下面给你两个实用的解决方案,根据你的需求选一个就行:
方案1:给背景视频静音(推荐,适合登录页场景)
登录页的背景视频大多不需要声音,直接把视频静音就不会和音乐播放器抢音频资源了。修改你的onPrepared方法:
vid.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); // 新增:将视频音量设为0,完全静音 mp.setVolume(0f, 0f); } });
这样视频正常播放,但没有声音输出,自然不会干扰后台的音乐播放器。
方案2:自定义音频焦点策略(保留视频声音时用)
如果你需要视频保留声音,又不想让音乐播放器暂停,可以通过AudioManager请求不中断式的音频焦点,让音乐播放器只是降低音量(而不是暂停),等视频播放结束后再释放焦点。
修改后的完整代码示例:
protected void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_login); vid = findViewById(R.id.videoView2); Uri uri = Uri.parse("android.resource://"+getPackageName()+"/"+R.raw.video); vid.setVideoURI(uri); // 获取AudioManager实例 AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); vid.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { mp.setLooping(true); // 请求音频焦点:短暂获取,允许其他音频降低音量继续播放 int result = audioManager.requestAudioFocus( null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK ); if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) { // 焦点获取成功,开始播放 vid.start(); } } }); // 页面销毁时记得释放音频焦点 vid.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { audioManager.abandonAudioFocus(null); } }); usuRut = findViewById(R.id.usuRut); girPass = findViewById(R.id.usuPass); girId = findViewById(R.id.girId); }
解释一下参数:
AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK:表示我们短暂获取音频焦点,允许其他音频以低音量继续播放(也就是"ducking"模式),不会直接暂停。
额外提醒
如果你的视频是循环播放的(像你代码里设置的setLooping(true)),方案2里的onCompletion不会触发,所以最好在页面销毁时手动释放音频焦点:
@Override protected void onDestroy() { super.onDestroy(); if (vid != null) { vid.stopPlayback(); AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); audioManager.abandonAudioFocus(null); } }
内容的提问来源于stack exchange,提问作者Asez97
相关产品推荐
相关产品推荐

