从 MediaStore 中检索最近的歌曲

Retrieving recent songs from the MediaStore

经过一些研究,我仍然不太明白如何查询最近 7 天内的歌曲。目前,这就是我尝试检索歌曲的方式,但它似乎总是 return 空的。

public void displayRecentSongs() {

    //retrieve song info
    ContentResolver musicResolver = getActivity().getContentResolver();
    Uri musicUri = android.provider.MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String where = MediaStore.Audio.Media.DATE_ADDED + ">" + (System.currentTimeMillis() / 1000 - 7);
    Cursor musicCursor = musicResolver.query(musicUri, null, where, null, null);

    if(musicCursor!=null && musicCursor.moveToFirst()){
        //get columns
        int idColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media._ID);
        int titleColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.TITLE);
        int artistColumn = musicCursor.getColumnIndex
                (android.provider.MediaStore.Audio.Media.ARTIST);
        int pathColumn = musicCursor.getColumnIndex
                (MediaStore.Audio.Media.DATA);
        //add songs to list
        do {
            long thisId = musicCursor.getLong(idColumn);
            String thisTitle = musicCursor.getString(titleColumn);
            String thisArtist = musicCursor.getString(artistColumn);
            String thisPath = musicCursor.getString(pathColumn);
            songList.add(new Song(thisId, thisTitle, thisArtist, null, thisPath));
        }
        while (musicCursor.moveToNext());
    }
    musicCursor.close();

}

注意:我已经对其进行了测试,以仔细检查它是否会查询我在上周内下载的歌曲,但无济于事。

System.currentTimeMillis() / 1000 - 7 是现在之前的七秒,以 Unix 纪元以来的秒数表示。

System.currentTimeMillis() / 1000 - 7*60*60*24 将是现在之前的 7 天,以自 Unix 纪元以来的秒数表示。您应该能够从 TimeUnitTimeUnit.SECONDS.convert(7, TimeUnit.DAYS)?)中获得 7*60*60*24 计算,但我还没有尝试过,我对 the TimeUnit documentation 有点困惑。