2019년 3월 14일 목요일

[Android] Video query on MediaStore

Android MediaStore class supports all available media and meta data on internal/external storage devices.

Android Video information can be found in MediaStore.Video.Media


Content Provier can be access MediaStore class with query method.
Refer ContentProvider

public Cursor query (Uri uri,
                String[] projection, 
                String selection, 
                String[] selectionArgs, 
                String sortOrder)

For example, if video query on external storage, then
==========================================
void videoQuery(Context aContext) {
        String[] videocolumns = {
                MediaStore.Video.Media._ID, 
                MediaStore.Video.Media.DATA,
                MediaStore.Video.Media.RESOLUTION,
                MediaStore.Video.Media.DURATION,
                MediaStore.Video.Media.DATE_ADDED
        };
        Cursor videoCursor = aContext.getContentResolver().query(
                MediaStore.Video.Media.EXTERNAL_CONTENT_URI, 
                videocolumns,
                null,
                null,
                null);
        if(videoCursor != null && videoCursor.moveToFirst())
        {
            int videoId = 0;
            String videoPath = null;
            String videoResolution = null;
            int videoDuration = 0;
            int dateAdded = 0;
            int videoIdColumnIndex = videoCursor.getColumnIndex(MediaStore.Video.Media._ID); 
            int videoPathColumnIndex = videoCursor.getColumnIndex(MediaStore.Video.Media.DATA);
            int videoResolutionColumnIndex = videoCursor.getColumnIndex(MediaStore.Video.Media.RESOLUTION);
            int durationColumnIndex = videoCursor.getColumnIndex(MediaStore.Video.Media.DURATION);
            int dateAddedColumnIndex = videoCursor.getColumnIndex(MediaStore.Video.Media.DATE_ADDED);
            do {
                videoId = videoCursor.getInt(videoIdColumnIndex);
                videoPath = videoCursor.getString(videoPathColumnIndex);
                videoResolution = videoCursor.getString(videoResolutionColumnIndex);
                videoDuration = videoCursor.getInt(durationColumnIndex);
                dateAdded = videoCursor.getInt(dateAddedColumnIndex);
 
                // dp action.
            }
            while(videoCursor.moveToNext());        }
    }
 ==========================================

After querying videos, video columns index get from video cursor column index.
Each video information can get from current video cursor by moving video cursor index.

This example gets the video id, path, resolution, duration, added date from MediaStore.
After received video data, it can be used to load thumbnail, play video etc.

댓글 없음:

댓글 쓰기