簡體   English   中英

Exoplayer 使用 ContentResolver#openFileDescriptor(Uri, String) 設置 mediaSource ,而不是 Uri.parse(MediaStore.Audio.Media.DATA)

[英]Exoplayer set mediaSource using ContentResolver#openFileDescriptor(Uri, String) , instead of Uri.parse(MediaStore.Audio.Media.DATA)

由於MediaStore.Audio.Media.DATA已棄用,如何在 Android Q 中將 uri 傳遞給 mediaSource

早些時候(低於 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)._path 是我們從MediaStore.Audio.Media.DATA獲得的文件的路徑,因為 Android Q 棄用了 MediaStore.Audio.Media.DATA 我們可以使用什么

安卓建議

https://stackoverflow.com/a/59037794

ContentResolver#openFileDescriptor(Uri, String)。

我們怎樣才能做到任何幫助都會有用

我解決了這個問題:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM