获得手机内的视频信息集合

本文介绍了一个用于Android设备的视频读取程序,通过MediaStore获取外部存储中所有视频的元数据,包括视频路径、标题、缩略图等信息,并将这些信息存储到一个列表中。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package com.sms.read;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

import android.app.Activity;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Environment;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.Toast;

import com.database.facade.VideoInfo;
/**
 * 
 * @author timfeng
 *
 */
public class VideoTest extends Activity{
	public static List<VideoInfo> sysVideoList ;// 视频信息集合
	
	Cursor cursor;
	String TAG ="VideoTest";
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		sysVideoList = new ArrayList<VideoInfo>();
		setVideoList();
		//getId();
	}
	
	

		private void setVideoList() {
			// MediaStore.Video.Thumbnails.DATA:视频缩略图的文件路径
			String[] thumbColumns = { MediaStore.Video.Thumbnails.DATA,
					MediaStore.Video.Thumbnails.VIDEO_ID };

			// MediaStore.Video.Media.DATA:视频文件路径;
			// MediaStore.Video.Media.DISPLAY_NAME : 视频文件名,如 testVideo.mp4
			// MediaStore.Video.Media.TITLE: 视频标题 : testVideo
			String[] mediaColumns = { MediaStore.Video.Media._ID,
					MediaStore.Video.Media.DATA, MediaStore.Video.Media.TITLE,
					MediaStore.Video.Media.MIME_TYPE,
					MediaStore.Video.Media.DISPLAY_NAME };

			cursor = managedQuery(MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
					mediaColumns, null, null, null);
			
			if(cursor==null){
				Toast.makeText(this, "没有找到可播放视频文件", 1).show();
				return;
			}
			if (cursor.moveToFirst()) {
				do {
					VideoInfo info = new VideoInfo();
					int id = cursor.getInt(cursor
							.getColumnIndex(MediaStore.Video.Media._ID));
					Cursor thumbCursor = managedQuery(
							MediaStore.Video.Thumbnails.EXTERNAL_CONTENT_URI,
							thumbColumns, MediaStore.Video.Thumbnails.VIDEO_ID
									+ "=" + id, null, null);
					if (thumbCursor.moveToFirst()) {
						info.setThumbPath(thumbCursor.getString(thumbCursor
								.getColumnIndex(MediaStore.Video.Thumbnails.DATA)));
					}
					info.setPath(cursor.getString(cursor
							.getColumnIndexOrThrow(MediaStore.Video.Media.DATA)));
					info.setTitle(cursor.getString(cursor
							.getColumnIndexOrThrow(MediaStore.Video.Media.TITLE)));
					
					info.setDisplayName(cursor.getString(cursor
							.getColumnIndexOrThrow(MediaStore.Video.Media.DISPLAY_NAME)));
					Log.i(TAG, "DisplayName:"+info.getDisplayName());
					if(info.getDisplayName().equals("video.3gp")){
						 int i = cursor.getInt(0);
						 Log.i("id-->", i+"");
					}
					info.setMimeType(cursor
							.getString(cursor
									.getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));
					
					sysVideoList.add(info);
				} while (cursor.moveToNext());
			}
		}

	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值