如何将 VideoView 音量设为静音?

How to make the VideoView volume as mute?

我正在与 videoView 合作,使用自定义控制器播放 .m3u8 视频。

怎样才能让VideoView音频静音,现在我用一种方法,你可以看下面我的java代码。我试过这种方式,但日志文件不会在 setOnInfoListener 方法中进入。我所关注的有什么错误吗?

我用于获取音轨的代码:

Java

videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
                @Override
                public boolean onInfo(MediaPlayer mp, int what, int extra) {
                    MediaPlayer.TrackInfo[] trackInfoArray = mp.getTrackInfo();
                    Log.e("track Length : ",String.valueOf(trackInfoArray.length));
                    for (int i = 0; i < trackInfoArray.length; i++) {
                        Log.e("track "+i+" : ",trackInfoArray[i].getLanguage().toString());
                        if (trackInfoArray[i].getTrackType() == MediaPlayer.TrackInfo.MEDIA_TRACK_TYPE_AUDIO
                                && trackInfoArray[i].getLanguage().equals(Locale.getDefault().getISO3Language())) {
                            mp.selectTrack(i);
                            break;
                        }
                    }
                    return true;
                }
            });

我用于静音 VideoView 的代码:

Java

videoView.setOnInfoListener(new MediaPlayer.OnInfoListener() {
            @Override
            public boolean onInfo(MediaPlayer m, int i, int i1) {
                try {
                    Log.e("track : ","inside media player");
                    if (m.isPlaying()) {
                        m.stop();
                        m.release();
                        m = new MediaPlayer();
                    }
                    m.setVolume(0f, 0f);
                    m.setLooping(false);
                    m.start();
                } catch (Exception e) {
                    e.printStackTrace();
                }
                return false;
            }
        });

并且保留所有视频 运行 fine.Please 提供任何其他方法来使 videoView 音频静音。
1.Is 有什么方法可以用不同的音轨播放视频,我有 .mp3 链接列表。

试试这个:

    WebView wView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        wView=(WebView)findViewById(R.id.webView1);
        wView.setWebViewClient(new WebViewClient(){
            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
            }

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
            }
        });

        wView.getSettings().setJavaScriptEnabled(true);
        wView.getSettings().setBuiltInZoomControls(true);
        wView.addJavascriptInterface(this, "myinterface");
    }

    public void displayMsg(String name,String pass){
        Toast.makeText(getApplicationContext(), name+"\n"+pass, 2000).show();
    }

    public void test(View v){
        switch (v.getId()) {
            case R.id.imageView1:
                wView.loadUrl("http://www.facebook.com");
                break;
            case R.id.imageView2:
                wView.loadUrl("http://www.linkedin.com");
                break;
            case R.id.imageView3:
                wView.loadUrl("http://www.twitter.com");
                break;
            case R.id.imageView4:
                wView.loadUrl("http://www.youtube.com");
                break;
            case R.id.imageView5:
                wView.loadUrl("file:///android_asset/login.html");
                break;
        }
    }
}

参考:Mute a playing video by VideoView in Android Application

答案:

我使用 MediaPlayer class 完成了此操作。我已经使用 MediaPlayer class 的 setVolume 函数将音量设置为 0。我还意识到不要使用 AudioManager class,因为如果将音量设置为 0,则使用 AudioManager,然后它将音量设置为 0 MediaPlayer 的所有实例和 VideoView。但是,如果您将使用 MediaPlayer 的 setVolume() 方法,那么它只会静音该实例的音量。

使用 VideoView 也很容易将音量设置为 0,因为 VideoView 是 MediaPlayer class 的包装,只允许访问 MediaPlayer 的一些功能。我也在一些博客上读到,虽然你可以使用 VideoView 实例引用 MediaPlayer 实例,但它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有所帮助。