Android 10 / Q, MediaStore и MediaPlayer.playFromUri - PullRequest
0 голосов
/ 08 января 2020

Изменения в Android 10, связанные с MediaStore, теперь, похоже, требуют различного кода для> = 10 и <= 9 версий. В течение года я занимался другими делами, и я вернулся, чтобы обновить приложение, и у меня возникли трудности. Моя особая проблема заключается в том, что я загружаю файл musi c (все типы), сохраняю его вместе с обложками альбомов во внутреннем каталоге общего хранилища (Android / media / com.myapp / mydir). Затем я добавляю его в MediaStore с помощью ContentResolver и возвращаю Uri. Затем я бы воспроизвел его с помощью MediaPlayer.playFromUri (). </p>

Это все еще отлично работает на Android <= 9, но на 10 MediaPlayer.playFromUri () вызывает исключение ввода-вывода. Файлы есть, Uri возвращается при добавлении в MediaStore. Я прочитал несколько постов здесь, пытаясь собрать воедино решение, но просто не могу понять это. </p>

Дистиллированный код для добавления в MediaStore: ...

        ContentResolver cr = getContext().getContentResolver();
        ContentValues vtrack = new ContentValues();

        vtrack.put(MediaStore.MediaColumns.TITLE, t.getTitle());
        vtrack.put(MediaStore.MediaColumns.DATA, audiopath);
        vtrack.put(MediaStore.Audio.AudioColumns.ARTIST, t.getArtist());
        vtrack.put(MediaStore.Audio.AudioColumns.ALBUM, t.getAlbum());
        vtrack.put(MediaStore.Audio.AudioColumns.IS_MUSIC, 1);

        Uri u;
        try {
            u = cr.insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, vtrack);
        }
        catch (Exception e) {
            e.getMessage();
        }

Любая помощь с благодарностью.

1 Ответ

0 голосов
/ 09 января 2020

Относительный_путь: DCIM/MyFolder или Pictures/MyFiles.

DATA to full path of file. -

...