如何将 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 实例,但它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有所帮助。
我正在与 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 实例,但它非常复杂,不建议这样做。希望这对其他新读者如何尝试做类似的事情有所帮助。