通過路徑擷取媒體檔案資訊

來源:互聯網
上載者:User
方法一:解析媒體檔案(具體參考:http://hi.baidu.com/luodaijun/blog/item/b487abaf8b0475c17dd92afd.html
http://blog.sina.com.cn/s/blog_77dab8e20100skb7.html)
方法二:讀取媒體檔案資料庫:
建立工具包:com.sky_dreaming.tools.media.provider
編寫媒體資訊封裝類:MediaInfo.java
package com.sky_dreaming.tools.media.provider;import java.io.UnsupportedEncodingException;import android.graphics.Bitmap;/*** Media info beans***/public class MediaInfo {        /**         * play total time         */        private int playDuration = 0;               /**         * song name         */        private String mediaName = "";        /**         * album name         */        private String mediaAlbum = "";               /**         * artist name         */        private String mediaArtist = "";        /**         * mYear         */        private String mediaYear = "";        /**         * fileName         */        private String mFileName = "";               /**         * mFileType         */        private String mFileType = "";        /**         * mFileSize         */        private String mFileSize = "";        /**         * mFilePath         */        private String mFilePath = "";                      public Bitmap getmBitmap() {                return mBitmap;        }        public void setmBitmap(Bitmap mBitmap) {                this.mBitmap = mBitmap;        }        private Bitmap mBitmap = null;        /**         * getPlayDuration         *         * @return         */        public int getPlayDuration() {                return playDuration;        }        /**         * setPlayDuration         *         * @param playDuration         */        public void setPlayDuration(int playDuration) {                this.playDuration = playDuration;        }        /**         * getMediaName         *         * @param playDuration         */        public String getMediaName() {                return mediaName;        }        /**         * setMediaName         *         * @param playDuration         */        public void setMediaName(String mediaName) {                try {                        mediaName =new String (mediaName.getBytes("ISO-8859-1"),"GBK");                } catch (UnsupportedEncodingException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }                this.mediaName = mediaName;        }        /**         * getMediaAlbum         *         * @param playDuration         */        public String getMediaAlbum() {                return mediaAlbum;        }        /**         * setMediaAlbum         *         * @param playDuration         */        public void setMediaAlbum(String mediaAlbum) {                try {                        mediaAlbum =new String (mediaAlbum.getBytes("ISO-8859-1"),"GBK");                } catch (UnsupportedEncodingException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }                this.mediaAlbum = mediaAlbum;        }        /**         * getMediaArtist         *         * @param playDuration         */        public String getMediaArtist() {                return mediaArtist;        }        /**         * setMediaArtist         *         * @param playDuration         */        public void setMediaArtist(String mediaArtist) {                try {                        mediaArtist =new String (mediaArtist.getBytes("ISO-8859-1"),"GBK");                } catch (UnsupportedEncodingException e) {                        // TODO Auto-generated catch block                        e.printStackTrace();                }                this.mediaArtist = mediaArtist;        }        /**         * getMediaYear         *         * @param playDuration         */        public String getMediaYear() {                return mediaYear;        }        /**         * setMediaYear         *         * @param playDuration         */        public void setMediaYear(String mediaYear) {                this.mediaYear = mediaYear;        }        /**         * getmFileName         *         * @param playDuration         */        public String getmFileName() {                return mFileName;        }        /**         * setmFileName         *         * @param playDuration         */        public void setmFileName(String mFileName) {                this.mFileName = mFileName;        }        /**         * getmFileType         *         * @param playDuration         */        public String getmFileType() {                return mFileType;        }        /**         * setmFileType         *         * @param playDuration         */        public void setmFileType(String mFileType) {                this.mFileType = mFileType;        }        /**         * getmFileSize         *         * @param playDuration         */        public String getmFileSize() {                return mFileSize;        }        /**         * setmFileSize         *         * @param playDuration         */        public void setmFileSize(String mFileSize) {                this.mFileSize = mFileSize;        }        /**         * getmFilePath         *         * @param playDuration         */        public String getmFilePath() {                return mFilePath;        }        /**         * setmFilePath         *         * @param playDuration         */        public void setmFilePath(String mFilePath) {                this.mFilePath = mFilePath;        }}

編寫資料提供工具類:MediaInfoProvider

package com.sky_dreaming.tools.media.provider;import java.io.File;import android.content.Context;import android.database.Cursor;import android.net.Uri;import android.provider.MediaStore;import android.provider.MediaStore.MediaColumns;import android.util.Log;import android.widget.Toast;/*** tools to get media file info***/public class MediaInfoProvider {        /**         * context         */        private Context mContext = null;        /**         * data path         */        private static final String dataPath = "/mnt";               /**         * query column         */        private static final String[] mCursorCols = new String[] {                        MediaStore.Audio.Media._ID, MediaStore.Audio.Media.DISPLAY_NAME,                        MediaStore.Audio.Media.TITLE, MediaStore.Audio.Media.DURATION,                        MediaStore.Audio.Media.ARTIST, MediaStore.Audio.Media.ALBUM,                        MediaStore.Audio.Media.YEAR, MediaStore.Audio.Media.MIME_TYPE,                        MediaStore.Audio.Media.SIZE, MediaStore.Audio.Media.DATA };        /**         * MediaInfoProvider         * @param context         */        public MediaInfoProvider(Context context) {                this.mContext = context;        }        /**         * get the media file info by path         * @param filePath         * @return         */        public MediaInfo getMediaInfo(String filePath) {                /* check a exit file */                File file = new File(filePath);                if (file.exists()) {                        Toast.makeText(mContext, "sorry, the file is not exit!",                                        Toast.LENGTH_SHORT);                }                               /* create the query URI, where, selectionArgs */                Uri Media_URI = null;                String where = null;                String selectionArgs[] = null;                               if (filePath.startsWith("content://media/")) {                        /* content type path */                        Media_URI = Uri.parse(filePath);                        where = null;                        selectionArgs = null;                } else {                        /* external file path */                        if(filePath.indexOf(dataPath) < 0) {                                filePath = dataPath + filePath;                        }                        Media_URI = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;                        where = MediaColumns.DATA + "=?";                        selectionArgs = new String[] { filePath };                }                               /* query */                Cursor cursor = mContext.getContentResolver().query(Media_URI,                                mCursorCols, where, selectionArgs, null);                if (cursor == null || cursor.getCount() == 0) {                        return null;                } else {                        cursor.moveToFirst();                        MediaInfo info = getInfoFromCursor(cursor);                        printInfo(info);                        return info;                }        }        /**         * get the media info beans from cursor         * @param cursor         * @return         */        private MediaInfo getInfoFromCursor(Cursor cursor) {                MediaInfo info = new MediaInfo();                               /* file name */                if(cursor.getString(1) != null) {                        info.setmFileName(cursor.getString(1));                }                /* media name */                if(cursor.getString(2) != null) {                        info.setMediaName(cursor.getString(2));                }                /* play duration */                if(cursor.getString(3) != null) {                        info.setPlayDuration(cursor.getInt(3));                }                /* artist */                if(cursor.getString(4) != null) {                        info.setMediaArtist(cursor.getString(4));                }                /* album */                if(cursor.getString(5) != null) {                        info.setMediaAlbum(cursor.getString(5));                }                /* media year */                if (cursor.getString(6) != null) {                        info.setMediaYear(cursor.getString(6));                } else {                        info.setMediaYear("undefine");                }                /* media type */                if(cursor.getString(7) != null) {                        info.setmFileType(cursor.getString(7).trim());                }                /* media size */                if (cursor.getString(8) != null) {                        float temp = cursor.getInt(8) / 1024f / 1024f;                        String sizeStr = (temp + "").substring(0, 4);                        info.setmFileSize(sizeStr + "M");                } else {                        info.setmFileSize("undefine");                }                /* media file path */                if (cursor.getString(9) != null) {                        info.setmFilePath(cursor.getString(9));                }                return info;        }               /**         * print media info         * @param info         */        private void printInfo(MediaInfo info) {                // TODO Auto-generated method stub                Log.i("playDuration","" + info.getPlayDuration());                Log.i("mediaName","" + info.getMediaName());                Log.i("mediaAlbum","" + info.getMediaAlbum());                Log.i("mediaArtist","" + info.getMediaArtist());                Log.i("mediaYear","" + info.getMediaYear());                Log.i("fileName","" + info.getmFileName());                Log.i("fileType","" + info.getmFileType());                Log.i("fileSize","" + info.getmFileSize());                Log.i("filePath","" + info.getmFilePath());        }}
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.