在TextureView上播放video

在Android的TextureView的文档说,你可以使用一个TextureView播放video:但我似乎无法find如何做到这一点的任何示例。 有人知道吗?

我需要使用textureView因为我想animationvideo。 我想以.3gp / .mp4格式播放video,而不是来自相机的video:)

任何帮助,将不胜感激..

更新:

解决scheme发布为社区wiki答案

下面是你如何做到这一点:(由问题作者提供的解决scheme,他作为问题中的更新发布)

 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(); } } 

animation效果非常好。

我有同样的问题,并用TextureView解决。 我发现setScaleXsetScaleY非常有用,如果这有助于任何人。 http://developer.android.com/reference/android/view/View.html#setScaleX%28float%29

但是,如果您只针对API 16+:

 mediaPlayer.setVideoScalingMode(MediaPlayer.VIDEO_SCALING_MODE_SCALE_TO_FIT_WITH_CROPPING); 

应该这样做:)

你的setContentView(mPreview); 需要被调用之前

 mPreview = (TextureView) findViewById(R.id.surface); mPreview.setSurfaceTextureListener(this);