Java 类android.provider.MediaStore.Files.FileColumns 实例源码

项目:easyfilemanager    文件:NonMediaDocumentsProvider.java   
private boolean isEmpty(Uri uri, String type) {
    final ContentResolver resolver = getContext().getContentResolver();
    final long token = Binder.clearCallingIdentity();
    Cursor cursor = null;
    try {
        String[] mimeType;
        if (TYPE_DOCUMENT_ROOT.equals(type)) {
            mimeType = DOCUMENT_MIMES;
        } else if (TYPE_ARCHIVE_ROOT.equals(type)) {
            mimeType = ARCHIVE_MIMES;
        } else if (TYPE_APK_ROOT.equals(type)) {
            mimeType = APK_MIMES;
        } else {
            return true;
        }
        cursor = resolver.query(FILE_URI,
                FileQuery.PROJECTION,
                FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null, null);
        return (cursor == null) || (cursor.getCount() == 0);
    } finally {
        IoUtils.closeQuietly(cursor);
        Binder.restoreCallingIdentity(token);
    }
}
项目:FireFiles    文件:NonMediaDocumentsProvider.java   
private boolean isEmpty(Uri uri, String type) {
    final ContentResolver resolver = getContext().getContentResolver();
    final long token = Binder.clearCallingIdentity();
    Cursor cursor = null;
    try {
        String[] mimeType;
        if (TYPE_DOCUMENT_ROOT.equals(type)) {
            mimeType = DOCUMENT_MIMES;
        } else if (TYPE_ARCHIVE_ROOT.equals(type)) {
            mimeType = ARCHIVE_MIMES;
        } else if (TYPE_APK_ROOT.equals(type)) {
            mimeType = APK_MIMES;
        } else {
            return true;
        }
        cursor = resolver.query(FILE_URI,
                FileQuery.PROJECTION,
                FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null, null);
        return (cursor == null) || (cursor.getCount() == 0);
    } finally {
        IoUtils.closeQuietly(cursor);
        Binder.restoreCallingIdentity(token);
    }
}
项目:simple-share-android    文件:NonMediaDocumentsProvider.java   
private boolean isEmpty(Uri uri, String type) {
    final ContentResolver resolver = getContext().getContentResolver();
    final long token = Binder.clearCallingIdentity();
    Cursor cursor = null;
    try {
        String[] mimeType;
        if (TYPE_DOCUMENT_ROOT.equals(type)) {
            mimeType = DOCUMENT_MIMES;
        } else if (TYPE_ARCHIVE_ROOT.equals(type)) {
            mimeType = ARCHIVE_MIMES;
        } else if (TYPE_APK_ROOT.equals(type)) {
            mimeType = APK_MIMES;
        } else {
            return true;
        }
        cursor = resolver.query(FILE_URI,
                FileQuery.PROJECTION,
                FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null, null);
        return (cursor == null) || (cursor.getCount() == 0);
    } finally {
        IoUtils.closeQuietly(cursor);
        Binder.restoreCallingIdentity(token);
    }
}
项目:easyfilemanager    文件:MediaDocumentsProvider.java   
/**
 * When inserting the first item of each type, we need to trigger a roots
 * refresh to clear a previously reported {@link Root#FLAG_EMPTY}.
 */
static void onMediaStoreInsert(Context context, String volumeName, int type, long id) {
    if (!"external".equals(volumeName)) return;

    if (type == FileColumns.MEDIA_TYPE_IMAGE && sReturnedImagesEmpty) {
        sReturnedImagesEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_VIDEO && sReturnedVideosEmpty) {
        sReturnedVideosEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_AUDIO && sReturnedAudioEmpty) {
        sReturnedAudioEmpty = false;
        notifyRootsChanged(context);
    }
}
项目:easyfilemanager    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType, String like) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION,
            FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")"
            + " OR " + FileColumns.MIME_TYPE + " LIKE "+ "'"+like+"%'",
            null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:easyfilemanager    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:easyfilemanager    文件:NonMediaDocumentsProvider.java   
private void queryRecentFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            FileQuery.DATE_MODIFIED + " DESC");
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext() && result.getCount() < 64) {
        includeFile(result, cursor);
    }
}
项目:medialibrary    文件:BucketHelper.java   
private static BucketEntry[] loadBucketEntriesFromFilesTable(
        ThreadPool.JobContext jc, ContentResolver resolver, int type) {
    Uri uri = getFilesContentUri();
    Cursor cursor = resolver.query(uri,
            PROJECTION_BUCKET, BUCKET_GROUP_BY,
            null, BUCKET_ORDER_BY);
    if (cursor == null) {
        Log.w(TAG, "cannot open local database: " + uri);
        return new BucketEntry[0];
    }
    ArrayList<BucketEntry> buffer = new ArrayList<BucketEntry>();
    int typeBits = 0;
    if ((type & MediaObject.MEDIA_TYPE_IMAGE) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_IMAGE);
    }
    if ((type & MediaObject.MEDIA_TYPE_VIDEO) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_VIDEO);
    }
    try {
        while (cursor.moveToNext()) {
            if ((typeBits & (1 << cursor.getInt(INDEX_MEDIA_TYPE))) != 0) {
                BucketEntry entry = new BucketEntry(
                        cursor.getInt(INDEX_BUCKET_ID),
                        cursor.getString(INDEX_BUCKET_NAME));
                if (!buffer.contains(entry)) {
                    buffer.add(entry);
                }
            }
            if (jc.isCancelled()) return null;
        }
    } finally {
        Utils.closeSilently(cursor);
    }
    return buffer.toArray(new BucketEntry[buffer.size()]);
}
项目:medialibrary    文件:BucketHelper.java   
public static  BucketEntry[] loadBucketEntries(Path path, ThreadPool.JobContext jc, Context mContext) {
    Uri uri = mBaseUri;
    Log.v("DebugLoadingTime", "start quering media provider");
    Cursor cursor = mContext.getContentResolver().query(
            uri, PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY);
    if (cursor == null) {
        Log.w(TAG, "cannot open local database: " + uri);
        return new BucketEntry[0];
    }
    ArrayList<BucketEntry> buffer = new ArrayList<BucketEntry>();
    int typeBits = 0;
    int mType = getTypeFromPath(path);
    if ((mType & MediaObject.MEDIA_TYPE_IMAGE) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_IMAGE);
    }
    if ((mType & MediaObject.MEDIA_TYPE_VIDEO) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_VIDEO);
    }
    try {
        while (cursor.moveToNext()) {
            if ((typeBits & (1 << cursor.getInt(INDEX_MEDIA_TYPE))) != 0) {
                BucketEntry entry = new BucketEntry(
                        cursor.getInt(INDEX_BUCKET_ID),
                        cursor.getString(INDEX_BUCKET_NAME));
                if (!buffer.contains(entry)) {
                    buffer.add(entry);
                }
            }
            if (jc.isCancelled()) return null;
        }
        Log.v("DebugLoadingTime", "got " + buffer.size() + " buckets");
    } finally {
        cursor.close();
    }
    return buffer.toArray(new BucketEntry[buffer.size()]);
}
项目:FireFiles    文件:MediaDocumentsProvider.java   
/**
 * When inserting the first item of each type, we need to trigger a roots
 * refresh to clear a previously reported {@link Root#FLAG_EMPTY}.
 */
static void onMediaStoreInsert(Context context, String volumeName, int type, long id) {
    if (!"external".equals(volumeName)) return;

    if (type == FileColumns.MEDIA_TYPE_IMAGE && sReturnedImagesEmpty) {
        sReturnedImagesEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_VIDEO && sReturnedVideosEmpty) {
        sReturnedVideosEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_AUDIO && sReturnedAudioEmpty) {
        sReturnedAudioEmpty = false;
        notifyRootsChanged(context);
    }
}
项目:FireFiles    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType, String like) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION,
            FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")"
            + " OR " + FileColumns.MIME_TYPE + " LIKE "+ "'"+like+"%'",
            null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:FireFiles    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:FireFiles    文件:NonMediaDocumentsProvider.java   
private void queryRecentFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            FileQuery.DATE_MODIFIED + " DESC");
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext() && result.getCount() < 64) {
        includeFile(result, cursor);
    }
}
项目:simple-share-android    文件:MediaDocumentsProvider.java   
/**
 * When inserting the first item of each type, we need to trigger a roots
 * refresh to clear a previously reported {@link Root#FLAG_EMPTY}.
 */
static void onMediaStoreInsert(Context context, String volumeName, int type, long id) {
    if (!"external".equals(volumeName)) return;

    if (type == FileColumns.MEDIA_TYPE_IMAGE && sReturnedImagesEmpty) {
        sReturnedImagesEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_VIDEO && sReturnedVideosEmpty) {
        sReturnedVideosEmpty = false;
        notifyRootsChanged(context);
    } else if (type == FileColumns.MEDIA_TYPE_AUDIO && sReturnedAudioEmpty) {
        sReturnedAudioEmpty = false;
        notifyRootsChanged(context);
    }
}
项目:simple-share-android    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType, String like) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION,
            FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")"
            + " OR " + FileColumns.MIME_TYPE + " LIKE "+ "'"+like+"%'",
            null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:simple-share-android    文件:NonMediaDocumentsProvider.java   
private void queryFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            null);
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext()) {
        includeFile(result, cursor);
    }
}
项目:simple-share-android    文件:NonMediaDocumentsProvider.java   
private void queryRecentFile(ContentResolver resolver, Cursor cursor, MatrixCursor result, String[] mimeType) {
    // single file
    cursor = resolver.query(FILE_URI,
            FileQuery.PROJECTION, FileColumns.MIME_TYPE + " IN "+ "("+toString(mimeType)+")" , null,
            FileQuery.DATE_MODIFIED + " DESC");
    copyNotificationUri(result, FILE_URI);
    while (cursor.moveToNext() && result.getCount() < 64) {
        includeFile(result, cursor);
    }
}
项目:aos-MediaLib    文件:MusicStoreImportImpl.java   
public Job(String path, String id) {
    mPath = path;
    mId = id;
    mMft = ArchosMediaFile.getFileType(path);
    // default mime type / media type
    int mediaType = FileColumns.MEDIA_TYPE_NONE;
    String mimeType = "application/octet-stream";
    boolean retrieve = false;
    if (mMft != null) {
        mimeType = mMft.mimeType;
        if (!isNoMediaPath(path)) {
            if (ArchosMediaFile.isAudioFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_AUDIO;
                retrieve = true;
            } else if (ArchosMediaFile.isVideoFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_VIDEO;
            }  else if (ArchosMediaFile.isImageFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_IMAGE;
            } else if (ArchosMediaFile.isPlayListFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_PLAYLIST;
            }
        }
    }
    mMimeType = mimeType;
    mMediaType = mediaType;
    mRetrieve = retrieve;
}
项目:aos-MediaLib    文件:VideoOpenHelper.java   
private void processVideoNamesInDB(SQLiteDatabase db) {
    Cursor c = db.query(FILES_TABLE_NAME, new String[] {MediaColumns.DATA, "_id"}, "media_type like " + FileColumns.MEDIA_TYPE_VIDEO, null, null, null, null);
    if (c == null) {
        return;
    }

    while (c.moveToNext()) {
        String path = c.getString(0);
        long id = c.getLong(1);
        ContentValues cvExtra = VideoNameProcessor.extractValuesFromPath(path);
        db.update(FILES_TABLE_NAME, cvExtra, SELECTION_ID, new String[] { String.valueOf(id) });
    }
}
项目:aos-MediaLib    文件:VideoStoreImportImpl.java   
public Job(String path, String id, Blacklist blacklist) {
    mPath = Uri.parse(path);
    mId = id;
    mMft = ArchosMediaFile.getFileType(path);
    // default mime type / media type
    int mediaType = FileColumns.MEDIA_TYPE_NONE;
    String mimeType = "application/octet-stream";
    boolean retrieve = false;
    if (mMft != null) {
        mimeType = mMft.mimeType;
        if (!isNoMediaPath(path) && !blacklist.isBlacklisted(mPath)) {
            if (ArchosMediaFile.isAudioFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_AUDIO;
            } else if (ArchosMediaFile.isVideoFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_VIDEO;
                retrieve = true;
            }  else if (ArchosMediaFile.isImageFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_IMAGE;
            } else if (ArchosMediaFile.isPlayListFileType(mMft.fileType)) {
                mediaType = FileColumns.MEDIA_TYPE_PLAYLIST;
            }
        }
    }
    mMimeType = mimeType;
    mMediaType = mediaType;
    mRetrieve = retrieve;
}
项目:Chit-Chat    文件:MessageUtils.java   
private static String getPath(Context context, Uri uri) {
    String path = null;
    String[] projection = {FileColumns.DATA};
    Cursor cursor = context.getContentResolver().query(uri, projection, null, null, null);
    if (cursor == null) path = uri.getPath();
    else {
        cursor.moveToFirst();
        int column_index = cursor.getColumnIndexOrThrow(projection[0]);
        path = cursor.getString(column_index);
        cursor.close();
    }
    return path == null || path.isEmpty() ? uri.getPath() : path;
}
项目:yun2win-sdk-android    文件:RefreshData.java   
private String buildDocSelection() {
    StringBuilder selection = new StringBuilder();
    Iterator<String> iter = PreparedResource.sDocMimeTypesSet.iterator();
    while (iter.hasNext()) {
        /*
         * selection.append("(" + FileColumns.MIME_TYPE + "=='" +
         * iter.next() + "') OR ");
         */
        selection.append("(" + FileColumns.DATA + " LIKE '" + iter.next()
                + "') OR ");
    }
    Log.e("hejie", selection.toString());
    return selection.substring(0, selection.lastIndexOf(")") + 1);
}
项目:nexus-gallery    文件:MultiChoiceManager.java   
private String getItemMimetype(Object item) {
    int type = mDelegate.getItemMediaType(item);
    if (type == FileColumns.MEDIA_TYPE_IMAGE) {
        return GalleryUtils.MIME_TYPE_IMAGE;
    } else if (type == FileColumns.MEDIA_TYPE_VIDEO) {
        return GalleryUtils.MIME_TYPE_VIDEO;
    } else {
        return GalleryUtils.MIME_TYPE_ALL;
    }
}
项目:nexus-gallery    文件:MediaItemsLoader.java   
@Override
public Cursor loadInBackground() {
    // TODO: This probably doesn't work
    mMediaSet.reload();
    final MatrixCursor cursor = new MatrixCursor(PhotoSetLoader.PROJECTION);
    final Object[] row = new Object[PhotoSetLoader.PROJECTION.length];
    final SparseArray<MediaItem> mediaItems = new SparseArray<MediaItem>();
    mMediaSet.enumerateTotalMediaItems(new ItemConsumer() {
        @Override
        public void consume(int index, MediaItem item) {
            row[PhotoSetLoader.INDEX_ID] = index;
            row[PhotoSetLoader.INDEX_DATA] = item.getContentUri().toString();
            row[PhotoSetLoader.INDEX_DATE_ADDED] = item.getDateInMs();
            row[PhotoSetLoader.INDEX_HEIGHT] = item.getHeight();
            row[PhotoSetLoader.INDEX_WIDTH] = item.getWidth();
            row[PhotoSetLoader.INDEX_WIDTH] = item.getWidth();
            int rawMediaType = item.getMediaType();
            int mappedMediaType = FileColumns.MEDIA_TYPE_NONE;
            if (rawMediaType == MediaItem.MEDIA_TYPE_IMAGE) {
                mappedMediaType = FileColumns.MEDIA_TYPE_IMAGE;
            } else if (rawMediaType == MediaItem.MEDIA_TYPE_VIDEO) {
                mappedMediaType = FileColumns.MEDIA_TYPE_VIDEO;
            }
            row[PhotoSetLoader.INDEX_MEDIA_TYPE] = mappedMediaType;
            row[PhotoSetLoader.INDEX_SUPPORTED_OPERATIONS] =
                    item.getSupportedOperations();
            cursor.addRow(row);
            mediaItems.append(index, item);
        }
    });
    synchronized (mMediaSet) {
        mMediaItems = mediaItems;
    }
    return cursor;
}
项目:nexus-gallery    文件:BucketHelper.java   
private static BucketEntry[] loadBucketEntriesFromFilesTable(
        JobContext jc, ContentResolver resolver, int type) {
    Uri uri = getFilesContentUri();

    Cursor cursor = resolver.query(uri,
            PROJECTION_BUCKET, BUCKET_GROUP_BY,
            null, BUCKET_ORDER_BY);
    if (cursor == null) {
        Log.w(TAG, "cannot open local database: " + uri);
        return new BucketEntry[0];
    }
    ArrayList<BucketEntry> buffer = new ArrayList<BucketEntry>();
    int typeBits = 0;
    if ((type & MediaObject.MEDIA_TYPE_IMAGE) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_IMAGE);
    }
    if ((type & MediaObject.MEDIA_TYPE_VIDEO) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_VIDEO);
    }
    try {
        while (cursor.moveToNext()) {
            if ((typeBits & (1 << cursor.getInt(INDEX_MEDIA_TYPE))) != 0) {
                BucketEntry entry = new BucketEntry(
                        cursor.getInt(INDEX_BUCKET_ID),
                        cursor.getString(INDEX_BUCKET_NAME));
                if (!buffer.contains(entry)) {
                    buffer.add(entry);
                }
            }
            if (jc.isCancelled()) return null;
        }
    } finally {
        Utils.closeSilently(cursor);
    }
    return buffer.toArray(new BucketEntry[buffer.size()]);
}
项目:WoTu    文件:LocalAlbumSet.java   
private BucketEntry[] loadBucketEntries(JobContext jc) {
    Uri uri = mBaseUri;

    Log.v("DebugLoadingTime", "start quering media provider");
    Cursor cursor = mApplication.getContentResolver().query(uri,
            PROJECTION_BUCKET, BUCKET_GROUP_BY, null, BUCKET_ORDER_BY);
    if (cursor == null) {
        Log.w(TAG, "cannot open local database: " + uri);
        return new BucketEntry[0];
    }
    ArrayList<BucketEntry> buffer = new ArrayList<BucketEntry>();
    int typeBits = 0;
    if ((mType & MEDIA_TYPE_IMAGE) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_IMAGE);
    }
    if ((mType & MEDIA_TYPE_VIDEO) != 0) {
        typeBits |= (1 << FileColumns.MEDIA_TYPE_VIDEO);
    }
    try {
        while (cursor.moveToNext()) {
            if ((typeBits & (1 << cursor.getInt(INDEX_MEDIA_TYPE))) != 0) {
                BucketEntry entry = new BucketEntry(
                        cursor.getInt(INDEX_BUCKET_ID),
                        cursor.getString(INDEX_BUCKET_NAME));
                if (!buffer.contains(entry)) {
                    buffer.add(entry);
                }
            }
            if (jc.isCancelled())
                return null;
        }
        Log.v("DebugLoadingTime", "got " + buffer.size() + " buckets");
    } finally {
        cursor.close();
    }
    return buffer.toArray(new BucketEntry[buffer.size()]);
}
项目:aos-MediaLib    文件:MusicStoreImportImpl.java   
/** creates ContentValues via MediaRetrieverService, can't be null */
private ContentValues fromRetrieverService(Job job, String timeString)  throws InterruptedException, MediaRetrieverServiceClient.ServiceManagementException {
    ContentValues cv = new ContentValues();
    String path = job.mPath;
    // tell mediaprovider that this update originates from here.
    cv.put(MusicStoreInternal.KEY_SCANNER, "1");
    // also put the path here so MediaProvider knows which file it is
    cv.put(MediaColumns.DATA, path);
    cv.put(BaseColumns._ID, job.mId);

    String defaultTitle = getDefaultTitle(path);
    cv.put(FileColumns.TITLE, defaultTitle);
    cv.put(MediaColumns.MIME_TYPE, job.mMimeType);
    cv.put(FileColumns.MEDIA_TYPE, String.valueOf(job.mMediaType));
    cv.put(MusicStoreInternal.FILES_EXTRA_COLUMN_SCAN_STATE, timeString);

    // try to get metadata if file is a mediafile
    MediaMetadata metadata = null;
    if (job.mRetrieve) {
        try {
            metadata = getMetadata(path);
        } catch (RemoteException e) {
            Log.w(TAG, "Blacklisting file because it killed metadata service:" + path);
            cv.put(MusicStoreInternal.FILES_EXTRA_COLUMN_SCAN_STATE, String.valueOf(MusicStoreInternal.SCAN_STATE_SCAN_FAILED));
            return cv;
        }
        if (metadata == null) {
            // file didn't kill the service but still failed to give metadata
            Log.d(TAG, "Failed to get metadata for file:" + path);
            return cv;
        }
    }

    // if we don't need to scan further also end here.
    if (!job.mRetrieve)
        return cv;

    if (DBG) Log.d(TAG, "Scanning metadata of: " + path);
    switch (job.mMediaType) {
        case FileColumns.MEDIA_TYPE_AUDIO:
            extract(cv, metadata, AudioColumns.ALBUM, IMediaMetadataRetriever.METADATA_KEY_ALBUM, null);
            extract(cv, metadata, AudioColumns.ALBUM_ARTIST, IMediaMetadataRetriever.METADATA_KEY_ALBUMARTIST, null);
            extract(cv, metadata, AudioColumns.ARTIST, IMediaMetadataRetriever.METADATA_KEY_ARTIST, null);
            extract(cv, metadata, AudioColumns.COMPILATION, IMediaMetadataRetriever.METADATA_KEY_COMPILATION, null);
            extract(cv, metadata, AudioColumns.GENRE, IMediaMetadataRetriever.METADATA_KEY_GENRE, null);
            extract(cv, metadata, AudioColumns.ARCHOS_SAMPLERATE, IMediaMetadataRetriever.METADATA_KEY_SAMPLE_RATE, "0");
            extract(cv, metadata, AudioColumns.ARCHOS_NUMBER_OF_CHANNELS, IMediaMetadataRetriever.METADATA_KEY_NUMBER_OF_CHANNELS, "0");
            extract(cv, metadata, AudioColumns.ARCHOS_AUDIO_WAVE_CODEC, IMediaMetadataRetriever.METADATA_KEY_AUDIO_WAVE_CODEC, "0");
            extract(cv, metadata, AudioColumns.ARCHOS_AUDIO_BITRATE, IMediaMetadataRetriever.METADATA_KEY_AUDIO_BITRATE, "0");
            extract(cv, metadata, AudioColumns.COMPOSER, IMediaMetadataRetriever.METADATA_KEY_COMPOSER, null);
            extract(cv, metadata, "is_drm", IMediaMetadataRetriever.METADATA_KEY_IS_DRM, null);
            extract(cv, metadata, AudioColumns.DURATION, IMediaMetadataRetriever.METADATA_KEY_DURATION, null);
            extract(cv, metadata, AudioColumns.TRACK, IMediaMetadataRetriever.METADATA_KEY_CD_TRACK_NUMBER, null);
            extract(cv, metadata, AudioColumns.YEAR, IMediaMetadataRetriever.METADATA_KEY_DATE, null, true);
            extract(cv, metadata, FileColumns.TITLE, IMediaMetadataRetriever.METADATA_KEY_TITLE, defaultTitle);
            break;
    }
    return cv;
}
项目:aos-MediaLib    文件:VideoStoreImportImpl.java   
/** creates ContentValues via MediaRetrieverService, can't be null */
private ContentValues fromRetrieverService(Job job, String timeString) throws InterruptedException, MediaRetrieverServiceClient.ServiceManagementException {
    ContentValues cv = new ContentValues();
    String path = job.mPath.toString();
    // tell mediaprovider that this update originates from here.
    cv.put(VideoStoreInternal.KEY_SCANNER, "1");
    // also put the path here so MediaProvider knows which file it is
    cv.put(MediaColumns.DATA, path);
    cv.put(BaseColumns._ID, job.mId);

    String defaultTitle = getDefaultTitle(path);
    cv.put(FileColumns.TITLE, defaultTitle);
    cv.put(MediaColumns.MIME_TYPE, job.mMimeType);
    cv.put(FileColumns.MEDIA_TYPE, String.valueOf(job.mMediaType));
    cv.put(VideoStoreInternal.FILES_EXTRA_COLUMN_SCAN_STATE, timeString);

    // try to get metadata if file is a mediafile
    MediaMetadata metadata = null;
    if (job.mRetrieve) {
        try {
            metadata = getMetadata(path);
        } catch (RemoteException e) {
            Log.w(TAG, "Blacklisting file because it killed metadata service:" + path);
            cv.put(VideoStoreInternal.FILES_EXTRA_COLUMN_SCAN_STATE, String.valueOf(VideoStoreInternal.SCAN_STATE_SCAN_FAILED));
            return cv;
        }
        if (metadata == null) {
            // file didn't kill the service but still failed to give metadata
            Log.d(TAG, "Failed to get metadata for file:" + path);
            return cv;
        }
    }

    // if we don't need to scan further also end here.
    if (!job.mRetrieve)
        return cv;

    if (DBG) Log.d(TAG, "Scanning metadata of: " + path);
    switch (job.mMediaType) {
        case FileColumns.MEDIA_TYPE_VIDEO:
            extract(cv, metadata, VideoColumns.ARCHOS_ENCODING_PROFILE, IMediaMetadataRetriever.METADATA_KEY_ENCODING_PROFILE, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_FRAMES_PER_THOUSAND_SECONDS, IMediaMetadataRetriever.METADATA_KEY_FRAMES_PER_THOUSAND_SECONDS, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_NUMBER_OF_AUDIO_TRACKS, IMediaMetadataRetriever.METADATA_KEY_NB_AUDIO_TRACK, "-1");
            extract(cv, metadata, VideoColumns.ARCHOS_NUMBER_OF_SUBTITLE_TRACKS, IMediaMetadataRetriever.METADATA_KEY_NB_SUBTITLE_TRACK, "-1");
            extract(cv, metadata, VideoColumns.ARCHOS_VIDEO_BITRATE, IMediaMetadataRetriever.METADATA_KEY_VIDEO_BITRATE, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_VIDEO_FOURCC_CODEC, IMediaMetadataRetriever.METADATA_KEY_VIDEO_FOURCC_CODEC, "0");
            extract(cv, metadata, MediaColumns.HEIGHT, IMediaMetadataRetriever.METADATA_KEY_VIDEO_HEIGHT, "0");
            extract(cv, metadata, MediaColumns.WIDTH, IMediaMetadataRetriever.METADATA_KEY_VIDEO_WIDTH, "0");
            extract(cv, metadata, VideoColumns.DURATION, IMediaMetadataRetriever.METADATA_KEY_DURATION, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_SAMPLERATE, IMediaMetadataRetriever.METADATA_KEY_SAMPLE_RATE, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_NUMBER_OF_CHANNELS, IMediaMetadataRetriever.METADATA_KEY_NUMBER_OF_CHANNELS, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_AUDIO_WAVE_CODEC, IMediaMetadataRetriever.METADATA_KEY_AUDIO_WAVE_CODEC, "0");
            extract(cv, metadata, VideoColumns.ARCHOS_AUDIO_BITRATE, IMediaMetadataRetriever.METADATA_KEY_AUDIO_BITRATE, "0");
            extract(cv, metadata, FileColumns.TITLE, IMediaMetadataRetriever.METADATA_KEY_TITLE, defaultTitle);
            break;
    }
    return cv;
}
项目:nexus-gallery    文件:SelectionManager.java   
public void onItemSelectedStateChanged(ShareActionProvider share,
        int itemType, int itemSupportedOperations, boolean selected) {
    int increment = selected ? 1 : -1;

    mSelectedTotalCount += increment;
    mCachedShareableUris = null;

    if ((itemSupportedOperations & MediaObject.SUPPORT_DELETE) > 0) {
        mSelectedDeletableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_EDIT) > 0) {
        mSelectedEditableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_CROP) > 0) {
        mSelectedCroppableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_SETAS) > 0) {
        mSelectedSetableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_TRIM) > 0) {
        mSelectedTrimmableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_MUTE) > 0) {
        mSelectedMuteableCount += increment;
    }
    if ((itemSupportedOperations & MediaObject.SUPPORT_SHARE) > 0) {
        mSelectedShareableCount += increment;
        if (itemType == FileColumns.MEDIA_TYPE_IMAGE) {
            mSelectedShareableImageCount += increment;
        } else if (itemType == FileColumns.MEDIA_TYPE_VIDEO) {
            mSelectedShareableVideoCount += increment;
        }
    }

    mShareIntent.removeExtra(Intent.EXTRA_STREAM);
    if (mSelectedShareableCount == 0) {
        mShareIntent.setAction(null).setType(null);
    } else if (mSelectedShareableCount >= 1) {
        mCachedShareableUris = mUriSource.getSelectedShareableUris();
        if (mCachedShareableUris.size() == 0) {
            mShareIntent.setAction(null).setType(null);
        } else {
            if (mSelectedShareableImageCount == mSelectedShareableCount) {
                mShareIntent.setType(GalleryUtils.MIME_TYPE_IMAGE);
            } else if (mSelectedShareableVideoCount == mSelectedShareableCount) {
                mShareIntent.setType(GalleryUtils.MIME_TYPE_VIDEO);
            } else {
                mShareIntent.setType(GalleryUtils.MIME_TYPE_ALL);
            }
            if (mCachedShareableUris.size() == 1) {
                mShareIntent.setAction(Intent.ACTION_SEND);
                mShareIntent.putExtra(Intent.EXTRA_STREAM, mCachedShareableUris.get(0));
            } else {
                mShareIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
                mShareIntent.putExtra(Intent.EXTRA_STREAM, mCachedShareableUris);
            }
        }
    }
    share.setShareIntent(mShareIntent);
}
项目:nexus-gallery    文件:AlbumSetFragment.java   
@Override
public int getItemMediaType(Object item) {
    return FileColumns.MEDIA_TYPE_NONE;
}