2014-10-20 9 views
5

In Xamarin per Android utilizzando VideoView voglio giocare un video da risorseAndroid utilizzando Xamarin

Ecco il codice:

var videoView = (VideoView)FindViewById<VideoView> (Resource.Id.videoView); 
var Path = ("/Resources/raw/video.mp4"); 
var uri = Android.Net.Uri.Parse (Path); 
videoView.SetVideoURI (uri); 
videoView.Start(); 

Dopo aver chiamato videoView.Start) video (non gioca e tutto quello che ottiene è questo messaggio: Impossibile riprodurre il video

+0

Hai provato questo dispositivo? In caso contrario, potrebbe essere solo che il tuo emulatore ha problemi a riprodurre quel formato. –

risposta

3

ho trovato la risposta:

public class MainActivity : Activity, MediaPlayer.IOnPreparedListener, ISurfaceHolderCallback 
    { 

     MediaPlayer mediaPlayer; 
     protected override void OnCreate (Bundle bundle) 
     { 
      base.OnCreate (bundle); 

      SetContentView (Resource.Layout.Main); 

      var videoView = (VideoView)FindViewById<VideoView> (Resource.Id.videoView); 

      ISurfaceHolder holder = videoView.Holder; 
      holder.SetType (SurfaceType.PushBuffers); 
      holder.AddCallback(this); 


      var descriptor = Assets.OpenFd("test.ogv"); 
      mediaPlayer = new MediaPlayer(); 
      mediaPlayer.SetDataSource(descriptor.FileDescriptor, descriptor.StartOffset, descriptor.Length); 
      mediaPlayer.Prepare(); 
      mediaPlayer.Looping = true; 
      mediaPlayer.Start(); 

     } 


     public void SurfaceCreated(ISurfaceHolder holder) 
     { 
      Console.WriteLine("SurfaceCreated"); 
      mediaPlayer.SetDisplay(holder); 
     } 
     public void SurfaceDestroyed(ISurfaceHolder holder) 
     { 
      Console.WriteLine("SurfaceDestroyed"); 
     } 
     public void SurfaceChanged(ISurfaceHolder holder, Android.Graphics.Format format, int w, int h) 
     { 
      Console.WriteLine("SurfaceChanged"); 
     } 
     public void OnPrepared(MediaPlayer player) 
     { 

     } 
    } 
+0

Dato che sono nella stessa barca .. come è possibile aggiungere controlli come "Riproduci", "Pausa", "Stop" con il metodo precedente? – SoftSan

+0

@Salome Tsiramua, vorrei utilizzare questo esempio per eseguire diversi video all'interno della cartella. Posso riprodurre più video in una cartella? Potrei postare la risposta come più video all'interno della cartella. – Cyberlacs

1
var uri= Android.Net.Uri.Parse("android.resource://" + Application.PackageName + "/" + Resource.Raw.demo); 
video.SetVideoURI(uri); 
video.Start(); 
+0

Ho una cartella all'interno dell'applicazione che contiene alcuni video di circa 30 secondi e vorrei che l'applicazione eseguisse tutti i video. Dopo aver terminato il ri-esecuzione, eseguendo il looping dell'esecuzione dei video – Cyberlacs

Problemi correlati