代码之家  ›  专栏  ›  技术社区  ›  Oktawian

Android 8.1失去响应能力

  •  0
  • Oktawian  · 技术社区  · 7 年前

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

    当我试图从设备内存中获取歌曲时,我会收到很多错误,比如:

    E/sec_drm_plugin_omafl:omaplugin::onOpenedCryptSession(fd)::drm2isdrmfilebyextfd::file不是drm by extension

    这比安卓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 回复  |  直到 7 年前
        1
  •  0
  •   Oktawian    7 年前

    在试图从内存中获取每首歌时,我必须删除导致错误的一行代码:

    mediaMetadataRetriver.setDataSource(pathOfSong);
    

    希望它能帮助你。

    推荐文章