Riproduzione di video su TextureView

Nella documentazione di Android TextureView afferma che puoi utilizzare un TextureView per riprodurre un video: ma non riesco a trovare alcun esempio di come farlo. Qualcuno sa?

Devo usare una textureView perché voglio animare il video. Voglio riprodurre un video in formato .3gp / .mp4, non video dalla camera 🙂

  • Salvataggio dell'image dalla camera nella memory interna
  • Android byte per l'image in Camera.onPreviewFrame
  • come correggere 23.0.1 \ aapt.exe '' finito con valore di output non zero 1
  • come call Una class di attività da una class noraml java in Android
  • Android animare il mio layout relativo da basso verso l'alto e in alto e in basso utilizzando l'animation di translate sul click di visualizzazione image
  • Come impostare diversi elenchi di elenchi
  • Qualsiasi aiuto sarebbe apprezzato..

    AGGIORNARE:

    La soluzione è pubblicata come una risposta wiki della comunità

  • Android Emulator: Come posso get un elenco di servizi in esecuzione
  • Come visualizzare la mappa statica di google sull'image android?
  • Come può un'attività di Android utilizzare un bundle OSGi Knopflerfish installato sul dispositivo
  • java.lang.OutOfMemoryError: Imansible allocare una allocazione di byte 31961100 con 15257484 byte gratuiti e 14 MB fino a OOM
  • Come utilizzare il binding dei dati con il frammento
  • Non è ansible combinare il titolo personalizzato con altre funzioni del titolo
  • 3 Solutions collect form web for “Riproduzione di video su TextureView”

    Ecco come puoi farlo: (soluzione da parte dell'autore delle domande, che ha pubblicato come aggiornamento nella domanda)

     Public class MediaPlayerDemo_Video extends Activity implements TextureView.SurfaceTextureListener { private MediaPlayer mMediaPlayer; private TextureView mPreview; @Override public void onCreate(Bundle icicle) { super.onCreate(icicle); mPreview = (TextureView) findViewById(R.id.surface); mPreview.setSurfaceTextureListener(this); extras = getIntent().getExtras(); setContentView(mPreview); } public void onSurfaceTextureAvailable(SurfaceTexture surface, int width, int height) { Surface s = new Surface(surface); try { mMediaPlayer= new MediaPlayer(); mMediaPlayer.setDataSource("http://daily3gp.com/vids/747.3gp"); mMediaPlayer.setSurface(s); mMediaPlayer.prepare(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnVideoSizeChangedListener(this); mMediaPlayer.setAudioStreamType(AudioManager.STREAM_MUSIC); mMediaPlayer.start(); } catch (IllegalArgumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SecurityException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalStateException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } 

    E l'animation funziona molto bene.

    Ho avuto lo stesso problema, e ho risolto con un TextureView . Ho trovato setScaleX e setScaleY molto utile, se questo aiuta chiunque. http://developer.android.com/reference/android/view/View.html#setScaleX%28float%29

    Tuttavia, se state solo targeting API 16+:

     mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); 

    dovrebbe farlo 🙂

    Il setContentView(mPreview); deve essere chiamato prima

     mPreview = (TextureView) findViewById(R.id.surface); mPreview.setSurfaceTextureListener(this); 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.