Skip to content

Commit

Permalink
Added media scanner preference.
Browse files Browse the repository at this point in the history
  • Loading branch information
AndreyPavlenko committed Dec 11, 2020
1 parent 21b37f9 commit 8199ed1
Show file tree
Hide file tree
Showing 8 changed files with 49 additions and 12 deletions.
2 changes: 1 addition & 1 deletion build.gradle
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
ext {
def abi = project.properties['ABI']
VERSION_CODE = 79
VERSION_CODE = 80
VERSION_NAME = "1.7.3"
SDK_MIN_VERSION = 23
SDK_TARGET_VERSION = 30
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
import me.aap.utils.vfs.VirtualResource;
import me.aap.utils.vfs.content.ContentFileSystem;

import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_DEFAULT;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_SYSTEM;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_VLC;
import static me.aap.utils.async.Completed.completedEmptyMap;
import static me.aap.utils.async.Completed.completedNull;
import static me.aap.utils.async.Completed.completedVoid;
Expand Down Expand Up @@ -127,13 +130,16 @@ private MetadataBuilder load(PlayableItem item) {
}
}

MediaPlayerEngineProvider mp = mgr.mediaPlayer;
int scanner = (mgr.vlcPlayer == null) ? MEDIA_SCANNER_DEFAULT
: item.getLib().getPrefs().getMediaScannerPref();

if (!mp.getMediaMetadata(mb, item)) {
MediaEngineProvider vlc = mgr.vlcPlayer;
if ((vlc == null) || !vlc.getMediaMetadata(mb, item)) mp.getDuration(mb, item);
} else {
mp.getDuration(mb, item);
switch (scanner) {
case MEDIA_SCANNER_DEFAULT:
case MEDIA_SCANNER_SYSTEM:
if (mgr.mediaPlayer.getMediaMetadata(mb, item)) break;
if ((scanner == MEDIA_SCANNER_SYSTEM) && mgr.mediaPlayer.getDuration(mb, item)) break;
case MEDIA_SCANNER_VLC:
if (mgr.vlcPlayer != null) mgr.vlcPlayer.getMediaMetadata(mb, item);
}

try {
Expand Down
10 changes: 9 additions & 1 deletion fermata/src/main/java/me/aap/fermata/media/pref/MediaPrefs.java
Original file line number Diff line number Diff line change
Expand Up @@ -22,9 +22,13 @@ public interface MediaPrefs extends PreferenceStore {
int SCALE_ORIGINAL = 2;
int SCALE_4_3 = 3;
int SCALE_16_9 = 4;
int MEDIA_SCANNER_DEFAULT = 0;
int MEDIA_SCANNER_SYSTEM = 1;
int MEDIA_SCANNER_VLC = 2;
Pref<IntSupplier> AUDIO_ENGINE = Pref.i("AUDIO_ENGINE", MEDIA_ENG_MP);
Pref<IntSupplier> VIDEO_ENGINE = Pref.i("VIDEO_ENGINE", MEDIA_ENG_MP);
Pref<IntSupplier> VIDEO_SCALE = Pref.i("VIDEO_SCALE", SCALE_BEST);
Pref<IntSupplier> MEDIA_SCANNER = Pref.i("MEDIA_SCANNER", MEDIA_SCANNER_DEFAULT).withInheritance(false);
Pref<DoubleSupplier> SPEED = Pref.f("SPEED", 1.0f).withInheritance(false);
Pref<BooleanSupplier> AE_ENABLED = Pref.b("AE_ENABLED", false).withInheritance(false);
Pref<BooleanSupplier> EQ_ENABLED = Pref.b("EQ_ENABLED", false).withInheritance(false);
Expand Down Expand Up @@ -77,6 +81,10 @@ default void setVideoScalePref(int scale) {
}
}

default int getMediaScannerPref() {
return getIntPref(MEDIA_SCANNER);
}

default boolean getSubEnabledPref() {
return getBooleanPref(SUB_ENABLED);
}
Expand Down Expand Up @@ -121,7 +129,7 @@ static int[] getUserPresetBands(String preset) {
}

static String toUserPreset(String name, int[] bands) {
try(SharedTextBuilder tb = SharedTextBuilder.get()) {
try (SharedTextBuilder tb = SharedTextBuilder.get()) {
for (int i = 0; i < bands.length; i++) {
tb.append(bands[i]);
if (i == (bands.length - 1)) tb.append(':');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,9 @@
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_ENG_EXO;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_ENG_MP;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_ENG_VLC;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_DEFAULT;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_SYSTEM;
import static me.aap.fermata.media.pref.MediaPrefs.MEDIA_SCANNER_VLC;
import static me.aap.fermata.ui.activity.MainActivityListener.FRAGMENT_CONTENT_CHANGED;

/**
Expand Down Expand Up @@ -299,9 +302,9 @@ private PreferenceViewAdapter createAdapter() {
});
}

PrefCondition<BooleanSupplier> exoCond = PrefCondition.create(mediaPrefs, MediaLibPrefs.EXO_ENABLED);
PrefCondition<BooleanSupplier> vlcCond = PrefCondition.create(mediaPrefs, MediaLibPrefs.VLC_ENABLED);
Consumer<PreferenceView.ListOpts> initList = o -> {
PrefCondition<BooleanSupplier> exoCond = PrefCondition.create(mediaPrefs, MediaLibPrefs.EXO_ENABLED);
PrefCondition<BooleanSupplier> vlcCond = PrefCondition.create(mediaPrefs, MediaLibPrefs.VLC_ENABLED);
if (o.visibility == null) o.visibility = exoCond.or(vlcCond);

o.values = new int[]{R.string.engine_mp_name, R.string.engine_exo_name, R.string.engine_vlc_name};
Expand Down Expand Up @@ -343,6 +346,17 @@ private PreferenceViewAdapter createAdapter() {
o.formatSubtitle = true;
o.initList = initList;
});
sub1.addListPref(o -> {
o.store = mediaPrefs;
o.removeDefault = false;
o.pref = MediaLibPrefs.MEDIA_SCANNER;
o.title = R.string.preferred_media_scanner;
o.subtitle = R.string.string_format;
o.formatSubtitle = true;
o.visibility = vlcCond;
o.values = new int[]{R.string.preferred_media_scanner_default, R.string.preferred_media_scanner_system, R.string.engine_vlc_name};
o.valuesMap = new int[]{MEDIA_SCANNER_DEFAULT, MEDIA_SCANNER_SYSTEM, MEDIA_SCANNER_VLC};
});

sub1 = set.subSet(o -> o.title = R.string.video_settings);
sub1.addListPref(o -> {
Expand Down
4 changes: 4 additions & 0 deletions fermata/src/main/res/values-ru/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,10 @@
<string name="engine_installed">Медиа движок установлен: %1$s</string>
<string name="engine_uninstalled">Медиа движок удален: %1$s</string>

<string name="preferred_media_scanner">Предпочтительный медиа сканнер</string>
<string name="preferred_media_scanner_default">По умолчанию</string>
<string name="preferred_media_scanner_system">Системный</string>

<string name="module_installation">Установка модуля: %1$s</string>
<string name="install_pending">Ожидание инсталляции: %1$s</string>
<string name="downloading">Скачивание %1$s</string>
Expand Down
4 changes: 4 additions & 0 deletions fermata/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,10 @@
<string name="engine_installed">Media engine installed: %1$s</string>
<string name="engine_uninstalled">Media engine uninstalled: %1$s</string>

<string name="preferred_media_scanner">Preferred media scanner</string>
<string name="preferred_media_scanner_default">Default</string>
<string name="preferred_media_scanner_system">System</string>

<string name="module_installation">Module installation: %1$s</string>
<string name="install_pending">Installation pending: %1$s</string>
<string name="downloading">Downloading %1$s</string>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@
import me.aap.utils.security.SecurityUtils;

import static java.nio.charset.StandardCharsets.UTF_8;
import static org.videolan.libvlc.interfaces.IMedia.Parse.DoInteract;
import static org.videolan.libvlc.interfaces.IMedia.Parse.FetchLocal;
import static org.videolan.libvlc.interfaces.IMedia.Parse.FetchNetwork;
import static org.videolan.libvlc.interfaces.IMedia.Parse.ParseLocal;
Expand Down Expand Up @@ -98,7 +99,7 @@ public boolean getMediaMetadata(MetadataBuilder meta, PlayableItem item) {
media = new Media(getVlc(), uri);
}

media.parse(ParseLocal | ParseNetwork | FetchLocal | FetchNetwork);
media.parse(ParseLocal | ParseNetwork | FetchLocal | FetchNetwork | DoInteract);

String title = media.getMeta(IMedia.Meta.Title);
String artist = media.getMeta(IMedia.Meta.Artist);
Expand Down

0 comments on commit 8199ed1

Please sign in to comment.