从 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 纪元以来的秒数表示。您应该能够从 TimeUnit
(TimeUnit.SECONDS.convert(7, TimeUnit.DAYS)
?)中获得 7*60*60*24
计算,但我还没有尝试过,我对 the TimeUnit
documentation 有点困惑。
经过一些研究,我仍然不太明白如何查询最近 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 纪元以来的秒数表示。您应该能够从 TimeUnit
(TimeUnit.SECONDS.convert(7, TimeUnit.DAYS)
?)中获得 7*60*60*24
计算,但我还没有尝试过,我对 the TimeUnit
documentation 有点困惑。