Android 8.1失去了响应能力

时间:2018-12-14 21:40:28

标签: android android-8.1-oreo android-mediascanner android-drm

当我从android 7升级到8.1后启动应用程序时,我注意到它失去了很多响应能力。

当我尝试从设备内存中获取歌曲时,出现很多错误,例如:

  

E / SEC_DRM_PLUGIN_Omafl:OmaPlugin :: onOpenDecryptSession(fd):: Drm2IsDrmFileByExtFd :: file不是扩展名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 :(得分:0)

在尝试从内存中获取每首歌曲时,我不得不删除导致错误的一行代码:

mediaMetadataRetriver.setDataSource(pathOfSong);

希望它会对您有所帮助。