[Android] [PATCH] libvlc: move ext regex and folder blacklist outside libvlc
Thomas Guillem
thomas at gllm.fr
Wed Dec 31 10:24:25 CET 2014
---
libvlc/src/org/videolan/libvlc/Media.java | 35 ++--------------------
vlc-android/src/org/videolan/vlc/MediaLibrary.java | 21 ++++++++++++-
.../src/org/videolan/vlc/gui/BrowserActivity.java | 4 +--
.../src/org/videolan/vlc/gui/DirectoryAdapter.java | 18 ++++++++++-
4 files changed, 41 insertions(+), 37 deletions(-)
diff --git a/libvlc/src/org/videolan/libvlc/Media.java b/libvlc/src/org/videolan/libvlc/Media.java
index 2875022..9423ab7 100644
--- a/libvlc/src/org/videolan/libvlc/Media.java
+++ b/libvlc/src/org/videolan/libvlc/Media.java
@@ -32,11 +32,9 @@ public class Media implements Comparable<Media> {
public final static HashSet<String> VIDEO_EXTENSIONS;
public final static HashSet<String> AUDIO_EXTENSIONS;
- public final static String EXTENSIONS_REGEX;
- public final static HashSet<String> FOLDER_BLACKLIST;
static {
- String[] video_extensions = {
+ final String[] video_extensions = {
".3g2", ".3gp", ".3gp2", ".3gpp", ".amv", ".asf", ".avi", ".divx", ".drc", ".dv",
".f4v", ".flv", ".gvi", ".gxf", ".ismv", ".iso", ".m1v", ".m2v", ".m2t", ".m2ts",
".m4v", ".mkv", ".mov", ".mp2", ".mp2v", ".mp4", ".mp4v", ".mpe", ".mpeg",
@@ -44,48 +42,19 @@ public class Media implements Comparable<Media> {
".nsv", ".nut", ".nuv", ".ogm", ".ogv", ".ogx", ".ps", ".rec", ".rm", ".rmvb",
".tod", ".ts", ".tts", ".vob", ".vro", ".webm", ".wm", ".wmv", ".wtv", ".xesc" };
- String[] audio_extensions = {
+ final String[] audio_extensions = {
".3ga", ".a52", ".aac", ".ac3", ".adt", ".adts", ".aif", ".aifc", ".aiff", ".amr",
".aob", ".ape", ".awb", ".caf", ".dts", ".flac", ".it", ".m4a", ".m4b", ".m4p",
".mid", ".mka", ".mlp", ".mod", ".mpa", ".mp1", ".mp2", ".mp3", ".mpc", ".mpga",
".oga", ".ogg", ".oma", ".opus", ".ra", ".ram", ".rmi", ".s3m", ".spx", ".tta",
".voc", ".vqf", ".w64", ".wav", ".wma", ".wv", ".xa", ".xm" };
- String[] folder_blacklist = {
- "/alarms",
- "/notifications",
- "/ringtones",
- "/media/alarms",
- "/media/notifications",
- "/media/ringtones",
- "/media/audio/alarms",
- "/media/audio/notifications",
- "/media/audio/ringtones",
- "/Android/data/" };
-
VIDEO_EXTENSIONS = new HashSet<String>();
for (String item : video_extensions)
VIDEO_EXTENSIONS.add(item);
AUDIO_EXTENSIONS = new HashSet<String>();
for (String item : audio_extensions)
AUDIO_EXTENSIONS.add(item);
-
- StringBuilder sb = new StringBuilder(115);
- sb.append(".+(\\.)((?i)(");
- sb.append(video_extensions[0].substring(1));
- for(int i = 1; i < video_extensions.length; i++) {
- sb.append('|');
- sb.append(video_extensions[i].substring(1));
- }
- for(int i = 0; i < audio_extensions.length; i++) {
- sb.append('|');
- sb.append(audio_extensions[i].substring(1));
- }
- sb.append("))");
- EXTENSIONS_REGEX = sb.toString();
- FOLDER_BLACKLIST = new HashSet<String>();
- for (String item : folder_blacklist)
- FOLDER_BLACKLIST.add(android.os.Environment.getExternalStorageDirectory().getPath() + item);
}
public final static int TYPE_ALL = -1;
diff --git a/vlc-android/src/org/videolan/vlc/MediaLibrary.java b/vlc-android/src/org/videolan/vlc/MediaLibrary.java
index dce7540..15c8ad3 100644
--- a/vlc-android/src/org/videolan/vlc/MediaLibrary.java
+++ b/vlc-android/src/org/videolan/vlc/MediaLibrary.java
@@ -61,6 +61,25 @@ public class MediaLibrary {
private boolean mRestart = false;
protected Thread mLoadingThread;
+ public final static HashSet<String> FOLDER_BLACKLIST;
+ static {
+ final String[] folder_blacklist = {
+ "/alarms",
+ "/notifications",
+ "/ringtones",
+ "/media/alarms",
+ "/media/notifications",
+ "/media/ringtones",
+ "/media/audio/alarms",
+ "/media/audio/notifications",
+ "/media/audio/ringtones",
+ "/Android/data/" };
+
+ FOLDER_BLACKLIST = new HashSet<String>();
+ for (String item : folder_blacklist)
+ FOLDER_BLACKLIST.add(android.os.Environment.getExternalStorageDirectory().getPath() + item);
+ }
+
private MediaLibrary() {
mInstance = this;
mItemList = new ArrayList<Media>();
@@ -370,7 +389,7 @@ public class MediaLibrary {
public boolean accept(File f) {
boolean accepted = false;
if (!f.isHidden()) {
- if (f.isDirectory() && !Media.FOLDER_BLACKLIST.contains(f.getPath().toLowerCase(Locale.ENGLISH))) {
+ if (f.isDirectory() && !FOLDER_BLACKLIST.contains(f.getPath().toLowerCase(Locale.ENGLISH))) {
accepted = true;
} else {
String fileName = f.getName().toLowerCase(Locale.ENGLISH);
diff --git a/vlc-android/src/org/videolan/vlc/gui/BrowserActivity.java b/vlc-android/src/org/videolan/vlc/gui/BrowserActivity.java
index 50d96a4..89983ae 100644
--- a/vlc-android/src/org/videolan/vlc/gui/BrowserActivity.java
+++ b/vlc-android/src/org/videolan/vlc/gui/BrowserActivity.java
@@ -27,8 +27,8 @@ import java.util.Arrays;
import java.util.Locale;
import java.util.Stack;
-import org.videolan.libvlc.Media;
import org.videolan.vlc.MediaDatabase;
+import org.videolan.vlc.MediaLibrary;
import org.videolan.vlc.R;
import org.videolan.vlc.util.AndroidDevices;
import org.videolan.vlc.util.CustomDirectories;
@@ -284,7 +284,7 @@ public class BrowserActivity extends ListActivity {
@Override
public boolean accept(File f) {
- return f.isDirectory() && !Media.FOLDER_BLACKLIST.contains(f.getPath().toLowerCase(Locale.ENGLISH));
+ return f.isDirectory() && !MediaLibrary.FOLDER_BLACKLIST.contains(f.getPath().toLowerCase(Locale.ENGLISH));
}
}
diff --git a/vlc-android/src/org/videolan/vlc/gui/DirectoryAdapter.java b/vlc-android/src/org/videolan/vlc/gui/DirectoryAdapter.java
index bd5ffbf..a499db8 100644
--- a/vlc-android/src/org/videolan/vlc/gui/DirectoryAdapter.java
+++ b/vlc-android/src/org/videolan/vlc/gui/DirectoryAdapter.java
@@ -56,7 +56,23 @@ public class DirectoryAdapter extends BaseAdapter {
private ContextPopupMenuListener mContextPopupMenuListener;
public static boolean acceptedPath(String f) {
- return Pattern.compile(Media.EXTENSIONS_REGEX, Pattern.CASE_INSENSITIVE).matcher(f).matches();
+ final StringBuilder sb = new StringBuilder();
+ sb.append(".+(\\.)((?i)(");
+ boolean first = true;
+ for (String ext : Media.VIDEO_EXTENSIONS) {
+ if (!first)
+ sb.append('|');
+ else
+ first = false;
+ sb.append(ext.substring(1));
+ }
+ for (String ext : Media.AUDIO_EXTENSIONS) {
+ sb.append('|');
+ sb.append(ext.substring(1));
+ }
+ sb.append("))");
+
+ return Pattern.compile(sb.toString(), Pattern.CASE_INSENSITIVE).matcher(f).matches();
}
/**
--
2.1.3
More information about the Android
mailing list