Android 8.1 потерял отзывчивость
Когда я запускаю свое приложение после обновления с Android 7 до 8.1, я заметил, что оно потеряло отзывчивость.
Когда я пытаюсь получить песни из памяти устройства, я получаю много ошибок, таких как:
E / SEC_DRM_PLUGIN_Omafl: OmaPlugin:: onOpenDecryptSession (fd):: Drm2IsDrmFileByExtFd:: файл НЕ является DRM по расширению
Это работает намного медленнее, чем на Android 7.
Код:
public ArrayList<Song> getSongList() {
MediaMetadataRetriever metaRetriver = new MediaMetadataRetriever();
String selection = MediaStore.Audio.Media.IS_MUSIC + " != 0";
ArrayList<Song> songList = new ArrayList<>();
ContentResolver musicResolver = context.getContentResolver();
Uri musicUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Cursor musicCursor = musicResolver.query(musicUri, null, selection, null, null);
if (musicCursor != null && musicCursor.moveToFirst()) {
int titleColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.TITLE);
int idColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media._ID);
int artistColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.ARTIST);
int durationColumn = musicCursor.getColumnIndex(MediaStore.Audio.Media.DURATION);
int column_index = musicCursor.getColumnIndex(MediaStore.Audio.Media.DATA);
do {
long id = musicCursor.getLong(idColumn);
String path = musicCursor.getString(column_index);
String title = musicCursor.getString(titleColumn);
String artist = musicCursor.getString(artistColumn);
String duration = musicCursor.getString(durationColumn);
try {
metaRetriver.setDataSource(path);
songList.add(new Song(id, title, artist, path, duration));
}catch (Exception exc){}
} while (musicCursor.moveToNext());
}
return songList;
}
1 ответ
Решение
Мне пришлось удалить одну строку кода, которая вызывала ошибку при попытке получить каждую песню из памяти:
mediaMetadataRetriver.setDataSource(pathOfSong);
Надеюсь, это поможет вам.