如何掃描出Android系統媒體庫中視頻檔案

來源:互聯網
上載者:User

標籤:

Android系統啟動時會去掃描系統檔案,並將系統支援的視頻檔案(mp4,3gp,wmv)掃描到媒體庫(MediaStore)中,下面代碼示範如何獲得這些檔案的資訊:



publicstatic List<VideoInfo> sysVideoList = null;// 視頻資訊集合 
sysVideoList = new ArrayList<VideoInfo>();   
setVideoList();   

privatevoid 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, nullnullnull);   

if(cursor==null){   
            Toast.makeText(SystemVideoChooseActivity.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, nullnull);   
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)));  
                LogUtil.log(TAG, "DisplayName:"+info.getDisplayName());   
                info.setMimeType(cursor   
                        .getString(cursor   
                                .getColumnIndexOrThrow(MediaStore.Video.Media.MIME_TYPE)));  

                sysVideoList.add(info);   
            } while (cursor.moveToNext());   
        }   
    }  

  有一點需要注意的是:系統的媒體庫並不會在我們添加視頻檔案後自動更新,我們如何去手動掃描媒體庫,或者重啟系統才能從媒體庫中得到更新的視頻檔案:

  sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://"

  + Environment.getExternalStorageDirectory())));

如何掃描出Android系統媒體庫中視頻檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.