0
当我看到使用视频,照片,歌曲等文件的Android应用时,这些内容在打开时已经显示出来。我试图在我的应用程序中查询所有这些,即使只有100首歌曲,我也必须等待几百毫秒。当我想要获取图片或视频时,大概需要同一时间。 Google Play上看到的应用程序如何实现这种加载速度?他们还能够(例如)在加载应用程序和查找文件之前使用此信息(音乐播放器小部件)创建小部件。如何立即获取文件资源?
我如何加载歌曲的一个例子:
final String[] mediaProjection = {
MediaStore.Audio.Media._ID,
MediaStore.Audio.Media.ALBUM_ID,
MediaStore.Audio.Media.ARTIST_ID,
MediaStore.Audio.Media.TITLE,
MediaStore.Audio.Media.ALBUM,
MediaStore.Audio.Media.ARTIST,
MediaStore.Audio.Media.DURATION,
MediaStore.Audio.Media.YEAR,
MediaStore.Audio.Media.DATE_ADDED,
MediaStore.Audio.Media.DATE_MODIFIED,
MediaStore.Audio.Media.DATA,};
ContentResolver songResolver = getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = songResolver.query(musicUri, mediaProjection, null, null, null);
if (musicCursor != null && musicCursor.moveToFirst()) {
int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
int albumIdColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM_ID);
int artistIdColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST_ID);
int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int albumColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ALBUM);
int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int durationColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int yearColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.YEAR);
int dateAddedColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATE_ADDED);
int dateModifiedColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATE_MODIFIED);
int pathColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
do {
long songId = musicCursor.getLong(idColumn);
long songAlbumId = musicCursor.getLong(albumIdColumn);
long songArtistId = musicCursor.getLong(artistIdColumn);
String songTitle = musicCursor.getString(titleColumn);
String songAlbum = musicCursor.getString(albumColumn);
String songArtist = musicCursor.getString(artistColumn);
long songDuration = musicCursor.getLong(durationColumn);
int songYear = musicCursor.getInt(yearColumn);
int songDateAdded = musicCursor.getInt(dateAddedColumn);
int songDateModified = musicCursor.getInt(dateModifiedColumn);
String songPath = musicCursor.getString(pathColumn);
// Add these things into a list
// ...
}
} while (musicCursor.moveToNext());
}
if (musicCursor != null) {
musicCursor.close();
}
return true;
当你“......在我的应用程序中查询所有这些...”时,你可以发布代码的示例代码片段吗? –