2011-07-08 25 views
6

Este es mi código pero cuando inicio el reproductor de medios solo sale el sonido y la superficie no muestra nada. ¿Por qué?SurfaceView en blanco al reproducir video utilizando mediaplayer

No tengo ni idea de esto. ¿Tienes algún código que me ayude a aprender con esto?

videoV = (SurfaceView) findViewById(R.id.SurfaceView1); 
    sh = videoV.getHolder(); 

    File path = Environment.getExternalStorageDirectory(); 
    File file = new File(path, "sample2.mp4"); 

    sh.addCallback(this);  
    mp = new MediaPlayer(); 
    mp.setDataSource(file.getAbsolutePath()); 
    mp.setDisplay(sh); 
    mp.prepare(); 
    mp.start(); 

Respuesta

1


prueba este código.

resource es el nombre del archivo que desea jugar y one.two es el paquete nombre de su camino puede que al igual que android.resource://package_name/raw/file_name

VideoView video=(VideoView) findViewById(R.id.videoview); 
MediaController mediaController = new MediaController(this); 
mediaController.setAnchorView(video); 
video.setMediaController(mediaController); 
//Uri uri = Uri.parse("android.resource://play.vedio/"+R.raw.dobeernotdrugs); 
video.setKeepScreenOn(true); 
video.setVideoPath("android.resource://one.two/raw/"+resource); 
video.start(); 
video.requestFocus(); 

También echa un vistazo a este tutorial

3

Ha añadido el de oyente preparado? Implementé el inicio en ese método ya que es el disparador que indica cuándo el video está listo para ser renderizado.

sh.addCallback(this);  
mp = new MediaPlayer(); 
mp.setDataSource(file.getAbsolutePath()); 
mp.setDisplay(sh); 
mp.setOnPreparedListener(this); 
mp.prepare(); 

public void onPrepared(MediaPlayer arg0) { 
    mp.start(); 
} 
5

intenta agregar después

sh.addCallback(this); 

este

En mi caso fue muy útil.

+1

A partir de Honeycomb, el método setType está en desuso. –

Cuestiones relacionadas