获取本地视频
public void getDataFromLocal() { mediaItems = new ArrayList<>(); new Thread() { @Override public void run() { super.run(); ContentResolver resolver = mContext.getContentResolver(); Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; String[] objs = { MediaStore.Video.Media.DISPLAY_NAME,//视频在sdcard中的名字 MediaStore.Video.Media.DURATION,//视频的总时长 MediaStore.Video.Media.SIZE,//视频的总大小 MediaStore.Video.Media.DATA,//视频的绝对地址 MediaStore.Video.Media.ARTIST//歌曲的演唱者 }; Cursor cursor = resolver.query(uri, objs, null, null, null); if (cursor != null) { while (cursor.moveToNext()) { MediaItem mediaItem = new MediaItem(); String name = cursor.getString(0);//视频的名称 mediaItem.setName(name); long duration = cursor.getLong(1);//视频的时长 mediaItem.setDuration(duration); long size = cursor.getLong(2);//视频的大小 mediaItem.setSize(size); String data = cursor.getString(3);//视频的绝对路径 mediaItem.setData(data); String arist = cursor.getString(4);//音频的艺术家 mediaItem.setArtist(arist); mediaItems.add(mediaItem); } cursor.close(); } handler.sendEmptyMessage(0); } }.start(); }MediaItem类的实现,定义五个量:
private String name; private long duration; private long size; private String data; private String artist;Handler的处理
Handler handler = new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); if (mediaItems != null && mediaItems.size() > 0) { tv_nomedia.setVisibility(View.GONE); VideoPagerAdpater adpater = new VideoPagerAdpater(mContext, mediaItems); listview.setAdapter(adpater); listview.setOnItemClickListener(new MyOnItemClickListener()); } else { //没有数据 tv_nomedia.setVisibility(View.VISIBLE); } pb_loading.setVisibility(View.GONE); } };视频点击事件:
class MyOnItemClickListener implements AdapterView.OnItemClickListener { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { MediaItem mediaItem = mediaItems.get(position); Toast.makeText(mContext, "mediaItem==" + mediaItem.toString(), Toast.LENGTH_LONG).show(); /* Intent intent = new Intent(); intent.setDataAndType(Uri.parse(mediaItem.getData()), "video*//*"); mContext.startActivity(intent);*/ Intent intent = new Intent(mContext,SystemVideoPlayer.class); intent.setDataAndType(Uri.parse(mediaItem.getData()), "video/*"); mContext.startActivity(intent); } }播放器的完成:
public class SystemVideoPlayer extends Activity{ private VideoView videoview; private Uri uri; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test_videoplayer); videoview= (VideoView) findViewById(R.id.videoview); uri = getIntent().getData(); if(uri !=null){ videoview.setVideoURI(uri); } videoview.setMediaController(new MediaController(this)); videoview.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { videoview.start();//开始播放 } }); videoview.setOnErrorListener(new MediaPlayer.OnErrorListener() { @Override public boolean onError(MediaPlayer mp, int what, int extra) { Toast.makeText(SystemVideoPlayer.this,"播放错误",Toast.LENGTH_LONG).show(); return false; } }); videoview.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { Toast.makeText(SystemVideoPlayer.this,"播放完成",Toast.LENGTH_LONG).show(); } }); } }