Android 8.1 потерял отзывчивость - PullRequest
0 голосов
/ 15 декабря 2018

Когда я запускаю свое приложение после обновления с 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 Ответ

0 голосов
/ 15 декабря 2018

Мне пришлось удалить одну строку кода, которая вызывала ошибку при попытке извлечь каждую отдельную песню из памяти:

mediaMetadataRetriver.setDataSource(pathOfSong);

Надеюсь, это поможет вам.

...