2012-09-15 12 views
12

Quiero silenciar un video en reproducción por VideoView en mi aplicación Android. No pude encontrar ningún método para hacerlo en VideoView Class. ¿Alguna idea de cómo hacer esto?Silenciar un video en reproducción por VideoView en la aplicación Android

He encontrado un método "setVolume" en MediaPlayer Class, pero no puedo encontrar ningún código que funcione para reproducir video por la clase MediaPlayer. Así que creo que puedo establecer el volumen 0 con este método.

Por lo tanto, estoy buscando cualquier código que funcione para reproducir video usando MediaPlayer Class o cómo controlar el volumen usando VideoView Class.

A continuación se muestra el código para reproducir video utilizando VideoView, que estoy usando.

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    videoView.setMediaController(mc); 
    String _path = "/mnt/sdcard/Movies/video5.mp4"; 

    videoView.setVideoPath(_path); 

    videoView.requestFocus(); 
    videoView.start(); 


} 
+0

Intente utilizar AudioManager sugerido en [esta pregunta similar] (http://stackoverflow.com/questions/4573667/how-to-mute-mediaplayer-in-android). – yorkw

+0

Hola yorkw, Quiero reproducir video en modo Mute. SO ¿cómo reproducir video con AudioManager? – Vishal

+0

Usando VideoView reproducir video mientras usa el volumen de control de AudioManager. – yorkw

Respuesta

2

He hecho esto usando la clase MediaPlayer. He utilizado la función setVolume de la clase MediaPlayer para establecer el volumen en 0. También me di cuenta de que no uso la clase AudioManager, porque usando AudioManager si un volumen establecido es 0, entonces establece el volumen en 0 para todas las instancias de MediaPlayer y VideoView. Pero si usa el método setVolume() de MediaPlayer, solo silenciará el volumen de esa instancia.

También configurar el volumen en 0 es fácil usando VideoView porque VideoView es un contenedor de la clase MediaPlayer y solo permite acceder a algunas funciones de MediaPlayer. También he leído en algunos blogs que aunque puedes hacer referencia a la instancia de MediaPlayer usando instancias de VideoView, es muy complejo y no se recomienda hacerlo. Espero que esto sea útil para otros lectores nuevos sobre cómo intentar hacer cosas similares.

22

Si desea obtener acceso a la MediaPlayer de un VideoView usted tiene que llamar MediaPlayer.OnPreparedListener y MediaPlayer.OnCompletionListener, entonces se puede llamar MediaPlayer.setVolume(0f, 0f); función para ajustar el volumen a 0.

Haga lo siguiente:

@Override 

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_video); 

    VideoView videoView = (VideoView)this.findViewById(R.id.VVSimpleVideo); 
    MediaController mc = new MediaController(this); 
    mc.setAnchorView(videoView); 
    mc.setMediaPlayer(videoView); 
    videoView.setMediaController(mc); 
    String _path = "/mnt/sdcard/Movies/video5.mp4"; 

    videoView.setVideoPath(_path); 
    videoView.setOnPreparedListener(PreparedListener); 

    videoView.requestFocus(); 

    //Dont start your video here 
    //videoView.start(); 


} 

MediaPlayer.OnPreparedListener PreparedListener = new MediaPlayer.OnPreparedListener(){ 

    @Override 
    public void onPrepared(MediaPlayer m) { 
     try { 
       if (m.isPlaying()) { 
        m.stop(); 
        m.release(); 
        m = new MediaPlayer(); 
       } 
       m.setVolume(0f, 0f); 
       m.setLooping(false); 
       m.start(); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      }  
    } 
}; 
+2

esta solución no funcionó –

+0

A veces funciona, a veces no. @RajiAC: ¿encontró alguna solución confiable? – Jaydev

15
videoview.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

      mp.setVolume(0, 0); 
     } 
    }); 
+0

A veces trabajando, a veces no. Supongo que si videoView está visible cuando se llama a mp.setVolume, ocurre el silencio. De lo contrario, no se lleva a cabo ninguna acción. Por favor corrígeme si estoy equivocado. – Jaydev

+0

Obviamente sucede en el momento de la carga de videoView –

Cuestiones relacionadas