android - 如何防止 VideoView/MediaPlayer 停止其他应用程序的音频?

标签 android audio android-mediaplayer android-videoview

在一个屏幕上,我有一个循环播放的背景视频(显示正常的 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

此处要点:https://gist.github.com/vishna/7e9d3466bced8502fcdd

关于android - 如何防止 VideoView/MediaPlayer 停止其他应用程序的音频?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29280191/

相关文章:

android - 在加载之前获取图像的宽度和高度

python - (python3.6)如何从视频文件中检查音频数据并有效地将其移动

java - 哪些库可用于分析口语关键字和/或语音到文本的音频文件?

android - 媒体播放器延迟启动

android - MediaPlayer.setOnCompletionListener 未执行

android - editText 未填充 gridLayout 中的整个列

android - 如何在设置中使用Seekbar?

android - 如何在 android 中发布 Soundpool

java - 音频输入流不工作

java - 如何将自定义 android.media.MediaDataSource 与 android.media.MediaPlayer 一起使用?