簡體   English   中英

Mediastore專輯和媒體專欄

[英]Mediastore albums and media columns

太檢索我使用的相冊ID:

String SONG_ALBUMID  = MediaStore.Audio.Albums.ALBUM_ID;

但是MediaStore.Audio.Albums.ALBUM_ID和MediaStore.Audio.Media.ALBUM_ID有什么區別

謝謝,

MediaStore.Audio.Albums.ALBUM_ID是專輯表中的專輯ID,MediaStore.Audio.Media.ALBUM_ID將是文件表中的“外鍵” Album_id。通常,關系數據庫的設計是在訪問文件表時,我們需要的是abum_id來訪問唱片集表並檢索所有相關的唱片集信息,例如album_title。android數據庫中的表文件包含許多詳細信息,例如

_id INTEGER
_data   TEXT
_size   INTEGER
format  INTEGER
parent  INTEGER
date_added  INTEGER
date_modified   INTEGER
mime_type   TEXT
title   TEXT
description TEXT
_display_name   TEXT
picasa_id   TEXT
orientation INTEGER
latitude    DOUBLE
longitude   DOUBLE
datetaken   INTEGER
mini_thumb_magic    INTEGER
bucket_id   TEXT
bucket_display_name TEXT
isprivate   INTEGER
title_key   TEXT
artist_id   INTEGER
album_id    INTEGER
composer    TEXT
track   INTEGER
year    INTEGER
is_ringtone INTEGER
is_music    INTEGER
is_alarm    INTEGER
is_notification INTEGER
is_podcast  INTEGER
album_artist    TEXT
duration    INTEGER
bookmark    INTEGER
artist  TEXT
album   TEXT
resolution  TEXT
tags    TEXT
category    TEXT
language    TEXT
mini_thumb_data TEXT
name    TEXT
media_type  INTEGER
old_id  INTEGER
storage_id  INTEGER
is_drm  INTEGER
width   INTEGER
height  INTEGER

這是兩種方法:(在resolver.query中包括請求的列)

     public String getalbum_id(Cursor pcursor) {
    int album_col = pcursor
            .getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID);
    String album_id = pcursor.getString(album_col);

    if (album_id.length() > 0) {
        return album_id;
    } else {
        return "";
    }
}

public String getAlbumIdfromPath(Context context, String datapath) {
    ContentResolver cr = context.getContentResolver();
    final String _id = MediaStore.Audio.Media._ID;
    final String path = MediaStore.Audio.Media.DATA;
    final String album_id = MediaStore.Audio.Media.ALBUM_ID;
    final String[] columns = {_id, album_id};
    final String[] trackpath = {"%" + datapath + "%"};
    String where = path + " LIKE ?";
    String stralbum_id = null;
    Cursor crs = cr.query(uri, columns, where, trackpath, null);
    if (crs != null && crs.moveToFirst()) {
        stralbum_id = crs.getString(crs.getColumnIndexOrThrow(album_id));
        crs.close();
    }
    return stralbum_id;
}

現在要顯示,我以前已經發布過,但是我使用的是Gilde庫。 它完成所有艱苦的工作。

            //  loading album cover using Glide library
        String artist_id = (c.getString(c
                .getColumnIndex(MediaStore.Audio.Artists._ID)));
        Cursor albs = albums.getArtistsAlbumcursor(mContext, artist_id);
        String stralbumId=null;
        if(albs!=null && albs.moveToFirst()){
           stralbumId= albs.getString(albs.getColumnIndexOrThrow(MediaStore.Audio.Media.ALBUM_ID));
        }
        Uri ImageUrl = plist.getAlbumUri(mContext, stralbumId);
        if (ImageUrl != null) {
            Glide.with(mContext)
                    .asBitmap()
                    .load(ImageUrl)
                    .into(image);
        }
    }

getAlbumuri在哪里:

     public Uri getAlbumUri(Context mContext,String album_id){
    if(mContext!=null) {
        Uri sArtworkUri = Uri.parse("content://media/external/audio/albumart");
        Uri imageUri = Uri.withAppendedPath(sArtworkUri, String.valueOf(album_id));
        return imageUri;
    }
    return null;
}

在模塊build.gradle中包含以下內容

    implementation 'com.github.bumptech.glide:glide:4.5.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.7.1'

   private final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM