如何将VideoView卷设为静音?

时间:2016-10-25 07:43:38

标签: android android-videoview

我正在使用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的代码:

  

爪哇

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;
            }
        });

并保持视频正常运行。请提供任何其他方法使视频视频静音 1.有没有办法用不同的音轨播放视频,我有.mp3链接列表。

2 个答案:

答案 0 :(得分:1)

试试这个:

    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;
        }
    }
}

答案 1 :(得分:1)

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

回答:https://stackoverflow.com/a/12549943/9909365

我已经使用MediaPlayer类完成了此操作。我使用MediaPlayer类的setVolume函数将音量设置为0。我也意识到不要使用AudioManager类,因为使用AudioManager时如果将音量设置为0,则它​​将所有MediaPlayer和VideoView实例的音量都设置为0。但是,如果您将使用MediaPlayer的setVolume()方法,则它将仅使该实例的音量静音。

使用VideoView也可以轻松地将音量设置为0,因为VideoView是MediaPlayer类的包装器,并且只允许访问MediaPlayer的少数功能。我还读过一些博客,尽管您可以使用VideoView实例引用MediaPlayer实例,但是它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有帮助。