主界面Activity
package com.animee.day07.demo04; import android.content.ContentResolver; import android.database.Cursor; import android.net.Uri; import android.provider.MediaStore; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import com.animee.day07.R; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; /** * 获取sd卡当中的视频信息,并且通过videoview播放出来 **/ public class LocalVideoActivity extends AppCompatActivity { private RecyclerView mRv; private LinearLayoutManager manager; private List<LocalVideoBean>mDatas = new ArrayList<>(); private LocalVideoAdapter adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_video); mRv = (RecyclerView) findViewById(R.id.local_video_rv); // 设置布局管理器 manager = new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); mRv.setLayoutManager(manager); // 获取数据源 // 适配器的设置 adapter = new LocalVideoAdapter(this,mDatas); mRv.setAdapter(adapter); // 加载本地数据源 loadLocalData(); } private void loadLocalData() { // 本地数据源是sd当中的视频,所以通过contentResolver获取到 // 第一步:获取ContentResolver对象 ContentResolver resolver = getContentResolver(); // 第二部:获取uri地址 Uri uri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI; // 第三部:获取Cursor对象 Cursor cursor = resolver.query(uri, null, null, null, MediaStore.Video.Media.DISPLAY_NAME); // 第四部:进行遍历 while (cursor.moveToNext()) { // 获取视频的名称 String title = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DISPLAY_NAME)); // 获取视频的路径 String path = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.DATA)); // 获取视频的时长 :单位毫秒 long duration = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.DURATION)); // 获取视频的长度 单位:字节数 long size = cursor.getLong(cursor.getColumnIndex(MediaStore.Video.Media.SIZE)); // 获取视频的作者 String author = cursor.getString(cursor.getColumnIndex(MediaStore.Video.Media.ARTIST)); SimpleDateFormat format = new SimpleDateFormat("mm:ss"); String time = format.format(new Date(duration)); LocalVideoBean bean = new LocalVideoBean(path, title, time, size, author); mDatas.add(bean); } adapter.notifyDataSetChanged(); } }
适配器
package com.animee.day07.demo04; import android.content.Context; import android.content.Intent; import android.graphics.Bitmap; import android.media.ThumbnailUtils; import android.provider.MediaStore; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.animee.day07.R; import java.util.List; /** * Created by Administrator on 2018/1/3. */ public class LocalVideoAdapter extends RecyclerView.Adapter<LocalVideoAdapter.LocalVideoViewHolder>{ private Context context; private List<LocalVideoBean>mDatas; public LocalVideoAdapter(Context context, List<LocalVideoBean> mDatas) { this.context = context; this.mDatas = mDatas; } @Override public LocalVideoViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.item_rv_demo04,parent,false); LocalVideoViewHolder holder = new LocalVideoViewHolder(view); return holder; } @Override public void onBindViewHolder(LocalVideoViewHolder holder, int position) { final LocalVideoBean localVideoBean = mDatas.get(position); holder.titleTv.setText(localVideoBean.getTitle()); // 制作指定路径所对应的视频的缩略图 Bitmap bitmap = ThumbnailUtils.createVideoThumbnail(localVideoBean.getPath(), MediaStore.Video.Thumbnails.MINI_KIND); holder.thumbIv.setImageBitmap(bitmap); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(context,PlayVideoActivity.class); intent.putExtra("video",localVideoBean); context.startActivity(intent); } }); } @Override public int getItemCount() { return mDatas.size(); } class LocalVideoViewHolder extends RecyclerView.ViewHolder{ ImageView thumbIv; TextView titleTv; public LocalVideoViewHolder(View itemView) { super(itemView); thumbIv = (ImageView) itemView.findViewById(R.id.item_thumb_iv); titleTv = (TextView) itemView.findViewById(R.id.item_title_tv); } } }
//播放跳转的页面
package com.animee.day07.demo04; import android.content.Intent; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.widget.MediaController; import android.widget.TextView; import android.widget.VideoView; import com.animee.day07.R; public class PlayVideoActivity extends AppCompatActivity { private TextView titleTv,timeTv,pathTv,sizeTv; private VideoView videoView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_play_video2); titleTv = (TextView) findViewById(R.id.play_title_tv); timeTv = (TextView) findViewById(R.id.play_time_tv); pathTv = (TextView) findViewById(R.id.play_path_tv); sizeTv = (TextView) findViewById(R.id.play_size_tv); videoView = (VideoView) findViewById(R.id.play_video); Intent intent = getIntent(); LocalVideoBean bean = (LocalVideoBean) intent.getSerializableExtra("video"); timeTv.setText("视频时长:"+bean.getTime()); titleTv.setText("视频名称:"+bean.getTitle()); sizeTv.setText("视频大小:"+bean.getSize()/1024/1024+"MB"); String path = bean.getPath(); pathTv.setText("视频路径"+ path); videoView.setVideoPath(path); videoView.setMediaController(new MediaController(this)); videoView.start(); } }