【问题标题】:MediaStore - Function can't find all songsMediaStore - 功能无法找到所有歌曲
【发布时间】:2017-04-12 10:37:00
【问题描述】:

我有这个来自 developer.android 的功能,但它无法找到所有歌曲,只有少数。请给我一些线索。

public void getAllSongs() {
    ContentResolver contentResolver = getContentResolver();
    Uri uri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    Cursor cursor = contentResolver.query(uri, null, null, null, null);
    if (cursor == null) {
        // query failed, handle error.
    } else if (!cursor.moveToFirst()) {
        // no media on the device
    } else {
        int titleColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media.TITLE);
        int idColumn = cursor.getColumnIndex(android.provider.MediaStore.Audio.Media._ID);
        do {
            long thisId = cursor.getLong(idColumn);
            String thisTitle = cursor.getString(titleColumn);
            songs.add(thisId + "||"+thisTitle);// ...process entry...
        } while (cursor.moveToNext());
    }
}

【问题讨论】:

  • 看看我的一个老问题,可能会对你有所帮助stackoverflow.com/questions/32703442/…
  • 这是查找歌曲的好方法,但比我想要的要慢。不过谢谢你的回答
  • 您没有要求查询中的任何列。见下文
  • 你说得对 :D 谢谢

标签: android audio mediastore


【解决方案1】:

我使用以下方法获取所有曲目:

private final String track_id = MediaStore.Audio.Media._ID;
private final String track_no = MediaStore.Audio.Media.TRACK;
private final String track_name = MediaStore.Audio.Media.TITLE;
private final String artist = MediaStore.Audio.Media.ARTIST;
private final String artist_id = MediaStore.Audio.Media.ARTIST_ID;
private final String duration = MediaStore.Audio.Media.DURATION;
private final String album = MediaStore.Audio.Media.ALBUM;
private final String composer = MediaStore.Audio.Media.COMPOSER;
private final String year = MediaStore.Audio.Media.YEAR;
private final String path = MediaStore.Audio.Media.DATA;
private final String date_added = MediaStore.Audio.Media.DATE_ADDED;
private final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;

    public Cursor getAllTracks(Context context) {
    // gets all tracks

    ContentResolver cr = context.getContentResolver();
    final String[] columns = {track_id ,track_no, artist, track_name,
            album, duration, path, year, composer};
    return cr.query(uri, columns, null, null, null);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-22
    • 2018-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 2021-12-10
    相关资源
    最近更新 更多