package com.wistron.WiViewer; import java.io.File; import java.sql.Date; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.List; import java.util.TimeZone; import Utilities.CSStaticData; import android.R.integer; import android.content.Context; import android.database.Cursor; import android.media.MediaMetadataRetriever; import android.net.Uri; import android.os.Build; import android.provider.BaseColumns; import android.provider.MediaStore; import android.provider.MediaStore.Audio.AudioColumns; import android.provider.MediaStore.Images.ImageColumns; import android.provider.MediaStore.MediaColumns; import android.provider.MediaStore.Video.VideoColumns; import android.util.Log; import android.widget.Toast; /** * Copyright (c) 2011 Wistron SWPC * All rights reserved. * @date 2011-09-27 14:14:20 */ public class VideoProvider{ private static final String TAG = "VideoProvider"; private Context context; public VideoProvider(Context context) { this.context = context; } public VideoInfo getMediaInfo(String path) { VideoInfo info = null; return null; } public VideoInfo getVideoInfo(String videoPath) { VideoInfo info = null; String mString=null; File mFile=new File(videoPath); if(!mFile.exists()){return info;} //TimeZone.setDefault(TimeZone.getTimeZone("GMT+8:00")); Date date=new Date(mFile.lastModified()); SimpleDateFormat sdf=new SimpleDateFormat("yyyy.MM.dd/HH:MM:SS"); String dd=sdf.format(date); String[] m_filename; m_filename=mFile.getName().split("\\."); String m_nameString=""; for(int i=0;i<m_filename.length-1;i++) { m_nameString+=m_filename[i]; if(i<m_filename.length-2) m_nameString+="."; } MediaMetadataRetriever retriever = new MediaMetadataRetriever(); try { retriever.setDataSource(videoPath); String title1=retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_DURATION); String title6=retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_ARTIST); String width=retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH); String height=retriever.extractMetadata(MediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT); info=new VideoInfo(); info.setTitle(m_nameString); info.setDuration(Integer.parseInt(title1)); info.setM_date(dd); info.setM_format(m_filename[m_filename.length-1].toUpperCase()); if(width==null||height==null||width.toLowerCase().equals("null")||height.toLowerCase().equals("null")) { info.setM_videoquality("UNknown"); } else { info.setM_videoquality(width+"x"+height); } info.setSize(mFile.length()); info.setM_framerate("Unknown"); info.setM_AudioChannel("Unknown"); } catch (IllegalArgumentException ex) { // Assume this is a corrupt video file } catch (RuntimeException ex) { // Assume this is a corrupt video file. } finally { try { retriever.release(); } catch (RuntimeException ex) { // Ignore failures while cleaning up. } } return info; } /** * 获取单个文件的视频信息 * @param videoPath * @return 视频信息 */ public VideoInfo getVideoInfoDeprecated(String videoPath) { Log.w(TAG, "[getVideoInfo]传入路径: "+videoPath); VideoInfo info = null; final int sdkVersion = Integer.parseInt(Build.VERSION.SDK); if (sdkVersion < 10){ String where = MediaColumns.DATA + "=?"; String[] selectionArgs = new String[] { videoPath }; try { if(context != null){ Cursor cursor = context.getContentResolver().query( MediaStore.Video.Media.EXTERNAL_CONTENT_URI, null, where, selectionArgs, null); if (cursor != null) { cursor.moveToFirst(); String title = cursor .getString(cursor .getColumnIndexOrThrow(MediaColumns.TITLE)); String album = cursor .getString(cursor .getColumnIndexOrThrow(VideoColumns.ALBUM)); String artist = cursor .getString(cursor .getColumnIndexOrThrow(VideoColumns.ARTIST)); String displayName = cursor .getString(cursor .getColumnIndexOrThrow(MediaColumns.DISPLAY_NAME)); String mimeType = cursor .getString(cursor .getColumnIndexOrThrow(MediaColumns.MIME_TYPE)); String path = cursor .getString(cursor .getColumnIndexOrThrow(MediaColumns.DATA)); long duration = cursor .getInt(cursor .getColumnIndexOrThrow(VideoColumns.DURATION)); long size = cursor .getLong(cursor .getColumnIndexOrThrow(MediaColumns.SIZE)); } } } catch (Exception e) { // TODO: handle exception } } return info; } }