首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从MediaStore得到所有的音轨

从MediaStore得到所有的音轨
EN

Stack Overflow用户
提问于 2014-04-03 12:15:20
回答 1查看 2.5K关注 0票数 0

我试着从MediaStore得到所有的音轨。

代码语言:javascript
运行
复制
Cursor cursor = managedQuery(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, null, null, null, null);

while (cursor.moveToNext())
{
    int id = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.AudioColumns._ID));

    String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.TITLE));

    String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ALBUM));

    String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.ARTIST));

    int duration = cursor.getInt(cursor.getColumnIndex(MediaStore.Audio.AudioColumns.DURATION));

}

cursor.close();

但是我不能从光标中读取值。当我运行这段代码时

代码语言:javascript
运行
复制
MediaStore.Audio.AudioColumns.TITLE, 
MediaStore.Audio.AudioColumns.ALBUM, 
MediaStore.Audio.AudioColumns.ARTIST and 
MediaStore.Audio.AudioColumns.DURATION 

常量为空。

我必须使用哪些常量来获得上述结果中的值?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-04-04 08:01:11

设置列和uri返回:

代码语言:javascript
运行
复制
final String track_id = MediaStore.Audio.Media._ID;
final String track_no = MediaStore.Audio.Media.TRACK;
final String track_name = MediaStore.Audio.Media.TITLE;
final String artist = MediaStore.Audio.Media.ARTIST;
final String duration = MediaStore.Audio.Media.DURATION;
final String album = MediaStore.Audio.Media.ALBUM;
final String composer = MediaStore.Audio.Media.COMPOSER;
final String year = MediaStore.Audio.Media.YEAR;
final String path = MediaStore.Audio.Media.DATA;
final String date_added = MediaStore.Audio.Media.DATE_ADDED;
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

找出所有的痕迹:

代码语言:javascript
运行
复制
public Cursor getTrackTrackcursor(Context context, Cursor cursor) {
    // gets all tracks
    ContentResolver cr = context.getContentResolver();
    final String[] columns = { track_id, track_no, artist, track_name,
            album, duration, path, year, composer };
    cursor = cr.query(uri, columns, null, null, null);
    return cursor;
}

现在循环遍历游标并根据返回的列提取字符串值。您只能提取游标返回的列,这样就会发生错误,因为我没有返回NUMBER_OF_SONGS。您必须确保游标也返回这一点,例如:

代码语言:javascript
运行
复制
        String stralbum = (c.getString(cursor
                .getColumnIndex(MediaStore.Audio.Albums.ALBUM)));
        String strartist = (cursor.getString(cursor
                .getColumnIndex(MediaStore.Audio.Albums.ARTIST)));
        String stryear = (cursor.getString(cusrsor
                .getColumnIndex(MediaStore.Audio.Albums.FIRST_YEAR)));
        String strnosongs = (cursor.getString(cursor
                .getColumnIndex(MediaStore.Audio.Albums.NUMBER_OF_SONGS)));

您是99%正确,但您的uri需要列布局。希望这能有所帮助

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22837474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档