首页 > 解决方案 > 获取媒体文件并显示在列表中

问题描述

我是android的初学者。根据文档“从共享存储访问媒体文件”。我想在列表中显示所有音频的名称,但它只显示一个音频。有人可以帮我解决这个问题吗?谢谢。这是我的代码。`

    ArrayList<audio> arrayList = new ArrayList<audio>();
    String[] projection = new String[]{
            MediaStore.Audio.Media._ID,
            MediaStore.Audio.Media.DISPLAY_NAME,
            MediaStore.Audio.Media.DURATION,
            MediaStore.Audio.Media.SIZE
    };
    String selection = MediaStore.Audio.Media.DURATION +
            " >= ?";
    String[] selectionArgs = new String[]{
            String.valueOf(TimeUnit.MILLISECONDS.convert(5, TimeUnit.MINUTES))};
    String sortOrder = MediaStore.Audio.Media.DISPLAY_NAME + " ASC";

    try (Cursor cursor = v.getContext().getContentResolver().query(
            MediaStore.Audio.Media.EXTERNAL_CONTENT_URI,
            projection,
            selection,
            selectionArgs,
            sortOrder
    )) {

        int idColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media._ID);
        int nameColumn =
                cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DISPLAY_NAME);
        int durationColumn =
                cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.DURATION);
        int sizeColumn = cursor.getColumnIndexOrThrow(MediaStore.Audio.Media.SIZE);

        while (cursor.moveToNext()) {

            long id = cursor.getLong(idColumn);
            String name = cursor.getString(nameColumn);
            int duration = cursor.getInt(durationColumn);
            int size = cursor.getInt(sizeColumn);

            Uri contentUri = ContentUris.withAppendedId(
                    MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, id);

            // Stores column values and the contentUri in a local object
            // that represents the media file.
            arrayList.add(new audio(name));
        }
    }

`

标签: androidandroid-studio

解决方案


推荐阅读