Exoplayer устанавливает mediaSource, используя ContentResolver # openFileDescriptor (Uri, String) вместо Uri.parse (MediaStore.Audio.Media.DATA) - PullRequest
0 голосов
/ 11 февраля 2020

Как передать uri в mediaSource в Android Q, поскольку MediaStore.Audio.Media.DATA устарело

Ранее (ниже Api 29 / Android 10 / Q) Это то, что я использовал

mediaSource = new ProgressiveMediaSource. Factory(dataSourceFactory).createMediaSource(Uri.parse(SongsForQueue.get(i)._path)); simpleExoPlayer.prepare(mediaSource); simpleExoPlayer.setPlayWhenReady(true);

Где SongsForQueue.get (i) ._ путь - это путь к файлу, который мы получили из MediaStore.Audio.Media.DATA, поскольку Android Q устарела MediaStore.Audio.Media. ДАННЫЕ Что мы можем использовать

Android предлагает

{ ссылка }

использовать

ContentResolver # openFileDescriptor (Uri, String ).

как мы можем сделать, чтобы любая помощь была бы полезной

1 Ответ

0 голосов
/ 01 апреля 2020

Я решил это:

long mediaId = //composition id in media store
Uri uri = ContentUris.withAppendedId(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, mediaId);

DataSpec dataSpec = new DataSpec(uri);
ContentDataSource dataSource = new ContentDataSource(context);
dataSource.open(dataSpec);

DataSource.Factory factory = () -> dataSource;
MediaSource mediaSource = new ProgressiveMediaSource.Factory(factory).createMediaSource(uri);
player.prepare(mediaSource);//your player

Версия Exoplayer: 2.11.3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...