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 🙂

  • RingtonePreference non spara OnPreferenceChangeListener
  • Dove trovare lo strumento nm (codice compilato o sorgente) per Android
  • Il ricevitore di trasmissione Android non funziona
  • Quali sono le differenze tra setFilterQueryProvider () e runQueryOnBackgroundThread () in CursorAdapter?
  • Nessuna animation con ViewFlipper?
  • Inserimento di record tramite caricatori in android
  • Qualsiasi aiuto sarebbe apprezzato..

    AGGIORNARE:

    La soluzione è pubblicata come una risposta wiki della comunità

  • File non aggiunto alla galleria android
  • TextView all'interno di ViewPager intercetta tocchi gli events
  • Metodo getText () deve essere richiamato dal thread UI
  • select una parola su un rubinetto in TextView / EditText
  • Come disegnare Bitmap veloce in onDraw () metodo in canvas android
  • Le immagini vengono ripetute in ListView
  • 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.