2012-09-15 13 views
12

Desidero disattivare l'audio di un video di VideoView nella mia applicazione Android. Non sono riuscito a trovare alcun metodo per farlo in VideoView Class. Qualche idea su come farlo?Disattiva la riproduzione di un video da VideoView nell'applicazione Android

Ho trovato un metodo "setVolume" nella classe MediaPlayer, ma non riesco a trovare alcun codice funzionante per riprodurre video dalla classe MediaPlayer. Quindi credo di poter impostare il volume 0 con questo metodo.

Pertanto, sto cercando qualsiasi codice funzionante per riprodurre video utilizzando MediaPlayer Class o come controllare il volume utilizzando la classe VideoView.

Di seguito è riportato il codice per riprodurre video utilizzando VideoView, che sto utilizzando.

@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

Provare a utilizzare AudioManager suggerito in [questa domanda simile] (http://stackoverflow.com/questions/4573667/how-to-mute-mediaplayer-in-android). – yorkw

+0

Ciao york, Voglio riprodurre il video in modalità silenziosa. SO come si fa a riprodurre video con AudioManager? – Vishal

+0

Utilizzo di VideoView riproduce video mentre si utilizza il volume di controllo di AudioManager. – yorkw

risposta

2

Ho eseguito questa operazione utilizzando la classe MediaPlayer. Ho usato la funzione setVolume della classe MediaPlayer per impostare il volume su 0. ho anche capito che non uso la classe AudioManager, perché usando AudioManager se un volume impostato su 0, allora imposta il volume a 0 per tutte le istanze di MediaPlayer e VideoView. Ma se si userà il metodo setVolume() di MediaPlayer, verrà solo silenziato il volume di quell'istanza.

Anche impostare il volume su 0 è facile da utilizzare con VideoView perché VideoView è un wrapper sulla classe MediaPlayer e consente solo di accedere a poche funzioni di MediaPlayer. Inoltre, ho letto su alcuni blog che, sebbene si possa fare riferimento all'istanza di MediaPlayer utilizzando le istanze di VideoView, è molto complessa e non è consigliabile farlo. Spero che questo possa essere utile ad altri nuovi lettori come provare a fare cose simili.

22

Se si desidera ottenere l'accesso alla MediaPlayer di un VideoView devi chiamare MediaPlayer.OnPreparedListener e MediaPlayer.OnCompletionListener, quindi è possibile chiamare MediaPlayer.setVolume(0f, 0f); funzione per impostare il volume a 0.

Fate questo:

@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

questa soluzione non ha funzionato –

+0

A volte funziona, a volte no. @ RajiAC: trovato qualche soluzione affidabile? – Jaydev

15
videoview.setOnPreparedListener(new OnPreparedListener() { 

     @Override 
     public void onPrepared(MediaPlayer mp) { 

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

A volte funziona, a volte no. La mia ipotesi è che se videoView è visibile dal momento in cui viene chiamato mp.setVolume, accade il muto. Altrimenti, nessuna azione ha luogo. Per favore correggimi se sbaglio. – Jaydev

+0

Ovviamente succede al momento del caricamento di videoView –

Problemi correlati