您的位置:首页 > 其它

基于VideoView实现视频播放文件切换

2010-03-01 18:51 886 查看
VideoView 是android 系统提供的一个媒体播放显示和控制的控件。其结构层次如下:

extends SurfaceView

implements MediaController.MediaPlayerControl

java.lang.Object
android.view.View
android.view.SurfaceView
android.widget.VideoView
其中SurfaceView
为显示提供支持,MediaPlayerControl则为媒体控制提供了支持。

在eclair 中播放视频文件时,MediaPlayerControl 的进度条滑块,有时会显示不完整。可以通过修改其

布局描文件frameworks/base/core/res/res/layout/media_controller.xml,来达到理想的效果。

这里基于VideoView 实现了一个MovieView,它支持上一首、下一首的视频播放功能。下面是其主要代码:

public class MovieView extends Activity implements
MediaPlayer.OnErrorListener, MediaPlayer.OnCompletionListener,
MediaPlayer.OnPreparedListener



@Override

public void onCreate(Bundle icicle)

{

super.onCreate(icicle);

setContentView(R.layout.movie_view);

mVideoView = (VideoView) findViewById(R.id.surface_view);

Uri uri = getIntent().getData();

mCurrent = getIntent().getIntExtra("start", 0);

MakeCursor();

mVideoView.setOnErrorListener(this);

mVideoView.setOnCompletionListener(this);

mVideoView.setOnPreparedListener(this);

mVideoView.setVideoURI(uri);

mMediaController = new MediaController(this, false);

mMediaController.setPrevNextListeners(mNextListener, mPrevListener);

mVideoView.setMediaController(mMediaController);

mVideoView.start();



private void MakeCursor() {

String[] cols = new String[] {

MediaStore.Video.Media._ID,

MediaStore.Video.Media.TITLE,

MediaStore.Video.Media.DATA,

MediaStore.Video.Media.MIME_TYPE,

MediaStore.Video.Media.ARTIST

};

ContentResolver resolver = getContentResolver();

if (resolver == null) {

System.out.println("resolver = null");

} else {

String mSortOrder = MediaStore.Video.Media.TITLE + " COLLATE UNICODE";

String mWhereClause = MediaStore.Video.Media.TITLE + " != ''";

mCursor = resolver.query(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,

cols, mWhereClause , null, mSortOrder);

}

}

private View.OnClickListener mNextListener = new View.OnClickListener() {

public void onClick(View v) {

mCurrent = (mCurrent + 1) % mCursor.getCount();

mCursor.moveToPosition(mCurrent);

long id = mCursor.getLong(0);

Uri uri= ContentUris.withAppendedId(MediaStore.Video.Media.EXTERNAL_CONTENT_URI, id);

mVideoView.setVideoURI(uri);

mVideoView.start();

}

}

private View.OnClickListener mPrevListener = new View.OnClickListener() {

public void onClick(View v) {

/*get prev uri*/

mVideoView.setVideoURI(uri);

mVideoView.start();

}



@Override

public void onPause() {

super.onPause();

}

public boolean onError(MediaPlayer player, int arg1, int arg2) {

}

public void onCompletion(MediaPlayer mp) {

}

public void onPrepared(MediaPlayer mp) {

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: