在一个屏幕上,我有一个循环播放的背景视频(显示正常的 UI 元素),使用 VideoView 实现,如下所示:
String resPath = "android.resource://" + getPackageName() + "/" + R.raw.bg_video;
videoView.setVideoURI(Uri.parse(resPath));
// Hide controls:
MediaController controller = new MediaController(getActivity());
controller.setVisibility(View.GONE);
videoView.setMediaController(controller);
// Use looping:
videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mp) {
mp.setLooping(true);
}
});
videoView.start();
视频效果很好。唯一的问题是,当显示此 View 时(或者甚至在使用例如 ViewPager 之前),来自其他应用程序的音乐播放停止。
我正在使用的视频本身没有声音。有没有办法将 VideoView 或它使用的 MediaPlayer 设置为“静音模式”?即,告诉它根本不要播放音频,尤其是不要弄乱其他应用的音频。
在 onPrepared()
中尝试了 mp.setVolume(0, 0);
但没有效果。
最佳答案
从 Android 源复制粘贴 VideoView
并注释掉这些行:
AudioManager am = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE);
am.requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN);
例如,您可以将新类命名为 MutedVideoView
。
关于android - 如何防止 VideoView/MediaPlayer 停止其他应用程序的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280191/