简单的实现播放视频

获取本地视频

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值