TEST - Added media cache in exoplayer

This commit is contained in:
CappielloAntonio 2021-08-10 14:05:07 +02:00
parent 1c6b8024b9
commit 0b57cd3176
4 changed files with 30 additions and 2 deletions

View file

@ -32,8 +32,8 @@ public class MultiPlayer implements Playback {
private final Context context; private final Context context;
private final SimpleExoPlayer exoPlayer; private final SimpleExoPlayer exoPlayer;
private final SimpleCache simpleCache;
private SimpleCache simpleCache;
private PlaybackCallbacks callbacks; private PlaybackCallbacks callbacks;
private final ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() { private final ExoPlayer.EventListener eventListener = new ExoPlayer.EventListener() {
@ -94,9 +94,11 @@ public class MultiPlayer implements Playback {
public MultiPlayer(Context context) { public MultiPlayer(Context context) {
this.context = context; this.context = context;
setSimpleCache(context);
// Create a read-only cache data source factory using the download cache. // Create a read-only cache data source factory using the download cache.
DataSource.Factory cacheDataSourceFactory = new CacheDataSource.Factory() DataSource.Factory cacheDataSourceFactory = new CacheDataSource.Factory()
.setCache(simpleCache)
.setCache(DownloadUtil.getDownloadCache(context)) .setCache(DownloadUtil.getDownloadCache(context))
.setUpstreamDataSourceFactory(DownloadUtil.getHttpDataSourceFactory(context)) .setUpstreamDataSourceFactory(DownloadUtil.getHttpDataSourceFactory(context))
.setCacheWriteDataSinkFactory(null); // Disable writing. .setCacheWriteDataSinkFactory(null); // Disable writing.
@ -115,7 +117,9 @@ public class MultiPlayer implements Playback {
exoPlayer.addListener(eventListener); exoPlayer.addListener(eventListener);
exoPlayer.prepare(); exoPlayer.prepare();
}
private void setSimpleCache(Context context) {
long cacheSize = PreferenceUtil.getInstance(context).getMediaCacheSize(); long cacheSize = PreferenceUtil.getInstance(context).getMediaCacheSize();
LeastRecentlyUsedCacheEvictor recentlyUsedCache = new LeastRecentlyUsedCacheEvictor(cacheSize); LeastRecentlyUsedCacheEvictor recentlyUsedCache = new LeastRecentlyUsedCacheEvictor(cacheSize);
ExoDatabaseProvider databaseProvider = new ExoDatabaseProvider(context); ExoDatabaseProvider databaseProvider = new ExoDatabaseProvider(context);
@ -168,7 +172,6 @@ public class MultiPlayer implements Playback {
@Override @Override
public boolean isPlaying() { public boolean isPlaying() {
return exoPlayer.getPlayWhenReady() && exoPlayer.getPlaybackSuppressionReason() == Player.PLAYBACK_SUPPRESSION_REASON_NONE; return exoPlayer.getPlayWhenReady() && exoPlayer.getPlaybackSuppressionReason() == Player.PLAYBACK_SUPPRESSION_REASON_NONE;
} }
@Override @Override

View file

@ -29,4 +29,19 @@
<item>200000000</item> <item>200000000</item>
</string-array> </string-array>
<string-array name="pref_media_cache_size_titles">
<item>Unlimited</item>
<item>2GB</item>
<item>1GB</item>
<item>400MB</item>
<item>200MB</item>
</string-array>
<string-array name="pref_media_cache_size_values">
<item>4000000000</item>
<item>2000000000</item>
<item>1000000000</item>
<item>400000000</item>
<item>200000000</item>
</string-array>
</resources> </resources>

View file

@ -5,6 +5,7 @@
<string name="search_hint">Search title, artists or albums</string> <string name="search_hint">Search title, artists or albums</string>
<string name="theme_selection">Choose theme</string> <string name="theme_selection">Choose theme</string>
<string name="covers_cache">Covers cache</string> <string name="covers_cache">Covers cache</string>
<string name="media_cache">Media cache</string>
<string name="library_menu_label">Library</string> <string name="library_menu_label">Library</string>
<string name="home_menu_label">Home</string> <string name="home_menu_label">Home</string>
<string name="search_menu_label">Search</string> <string name="search_menu_label">Search</string>

View file

@ -10,6 +10,15 @@
app:title="@string/covers_cache" app:title="@string/covers_cache"
app:useSimpleSummaryProvider="true" /> app:useSimpleSummaryProvider="true" />
<ListPreference
app:defaultValue="400000000"
app:dialogTitle="@string/media_cache"
app:entries="@array/pref_media_cache_size_titles"
app:entryValues="@array/pref_media_cache_size_values"
app:key="media_cache_size"
app:title="@string/media_cache"
app:useSimpleSummaryProvider="true" />
<ListPreference <ListPreference
app:defaultValue="default" app:defaultValue="default"
app:dialogTitle="@string/theme_selection" app:dialogTitle="@string/theme_selection"