从外部存储中检索音频列表时转义特殊字符

时间:2018-02-05 06:52:22

标签: android android-mediaplayer media-player android-audiomanager

我正在尝试使用音乐播放器应用。我能够检索所有歌曲,包括艺术家,歌曲名称,专辑名称,专辑封面图片。但我的问题是,从网站下载音频zip文件后,解压后,文件夹名称将自动保存。示例文件名 ROBO_2(2018)[djmaza.info] 。我只能检索歌曲如果我删除hiphen( - )或下划线(_)和.info然后保存。这是代码。

  public void loadAudio() {
    ContentResolver contentResolver = HomeActivity.this.getContentResolver();

    Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
    String selection = MediaStore.Audio.Media.IS_MUSIC + "!= 0";
    String sortOrder = MediaStore.Audio.Media.TITLE + " ASC";
    Cursor cursor = contentResolver.query(uri, null, selection, null, sortOrder);

    MediaMetadataRetriever retriever = new MediaMetadataRetriever();
    Bitmap albumcover;

    if (cursor != null && cursor.getCount() > 0) {
        audioList = new ArrayList<>();
        while (cursor.moveToNext()) {
            String data = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DATA));
            String title = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.TITLE));
            String album = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ALBUM));
            String artist = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.ARTIST));
            String duration = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.DURATION));
            String image = cursor.getString(cursor.getColumnIndex(MediaStore.Audio.Media.MIME_TYPE));

            retriever.setDataSource(data);
            byte[] cover_pic = retriever.getEmbeddedPicture();
            String album_cover;
            if (cover_pic != null) {
                albumcover = BitmapFactory.decodeByteArray(cover_pic, 0, cover_pic.length);
                album_cover = String.valueOf(albumcover);
            } else {
                albumcover = null;
                album_cover = null;
            }

            if (data.equals("") && title.equals("") && album.equals("") && artist.equals("") && duration.equals("") ||
                    data == null && title == null && album == null && artist == null && duration == null) {

                Toast.makeText(this, "You don't have any playlists", Toast.LENGTH_SHORT).show();
            } else {
                // Save to audioList
                audioList.add(new AudioList(data, title, album, artist, duration, albumcover));
            }

        }
    }
    cursor.close();
}

帮我解决这个问题。

0 个答案:

没有答案