summaryrefslogtreecommitdiffstats
path: root/src/org/codeaurora/gallery3d/video/ScreenModeManager.java
diff options
context:
space:
mode:
authorLikai Ding <likaid@codeaurora.org>2013-08-20 16:21:57 +0800
committerXiaojing Zhang <zhangx@codeaurora.org>2014-11-04 20:38:08 -0800
commit253ebbd3baff765d034adcd960bdaf40e949a44f (patch)
treef0f5c2396db8f1990a1e999f6cff066eaf1d803e /src/org/codeaurora/gallery3d/video/ScreenModeManager.java
parent5a4edcd17ea886d29c3d6bc97bba4e1f2b0d0e40 (diff)
downloadandroid_packages_apps_Gallery2-253ebbd3baff765d034adcd960bdaf40e949a44f.tar.gz
android_packages_apps_Gallery2-253ebbd3baff765d034adcd960bdaf40e949a44f.tar.bz2
android_packages_apps_Gallery2-253ebbd3baff765d034adcd960bdaf40e949a44f.zip
Gallery2: add some video features
including: previous/next video play mode, screen mode, fast forward/rewind button, step settings. Change-Id: I3f4890c4dd95956e0eca889a5fd8b8d83b8d542e
Diffstat (limited to 'src/org/codeaurora/gallery3d/video/ScreenModeManager.java')
-rw-r--r--src/org/codeaurora/gallery3d/video/ScreenModeManager.java117
1 files changed, 117 insertions, 0 deletions
diff --git a/src/org/codeaurora/gallery3d/video/ScreenModeManager.java b/src/org/codeaurora/gallery3d/video/ScreenModeManager.java
new file mode 100644
index 000000000..3dbba68d8
--- /dev/null
+++ b/src/org/codeaurora/gallery3d/video/ScreenModeManager.java
@@ -0,0 +1,117 @@
+package org.codeaurora.gallery3d.video;
+
+import android.util.Log;
+
+import java.util.ArrayList;
+
+public class ScreenModeManager {
+ private static final String TAG = "ScreenModeManager";
+ private static final boolean LOG = true;
+ //support screen mode.
+ public static final int SCREENMODE_BIGSCREEN = 1;
+ public static final int SCREENMODE_FULLSCREEN = 2;
+ public static final int SCREENMODE_CROPSCREEN = 4;
+ public static final int SCREENMODE_ALL = 7;
+
+ private int mScreenMode = SCREENMODE_BIGSCREEN;
+ private int mScreenModes = SCREENMODE_ALL;
+
+ /**
+ * Enable specified screen mode list.
+ * The screen mode's value determines the order of being shown.
+ * <br>you can enable three screen modes by setting screenModes =
+ * {@link #SCREENMODE_BIGSCREEN} |
+ * {@link #SCREENMODE_FULLSCREEN} |
+ * {@link #SCREENMODE_CROPSCREEN} or
+ * just enable two screen modes by setting screenModes =
+ * {@link #SCREENMODE_BIGSCREEN} |
+ * {@link #SCREENMODE_CROPSCREEN}.
+ * <br>If current screen mode is the last one of the ordered list,
+ * then the next screen mode will be the first one of the ordered list.
+ * @param screenModes enabled screen mode list.
+ */
+ public void setScreenModes(final int screenModes) {
+ mScreenModes = (SCREENMODE_BIGSCREEN & screenModes)
+ | (SCREENMODE_FULLSCREEN & screenModes)
+ | (SCREENMODE_CROPSCREEN & screenModes);
+ if ((screenModes & SCREENMODE_ALL) == 0) {
+ mScreenModes = SCREENMODE_ALL;
+ Log.w(TAG, "wrong screenModes=" + screenModes + ". use default value " + SCREENMODE_ALL);
+ }
+ if (LOG) {
+ Log.v(TAG, "enableScreenMode(" + screenModes + ") mScreenModes=" + mScreenModes);
+ }
+ }
+
+ /**
+ * Get the all screen modes of media controller.
+ * <br><b>Note:</b> it is not the video's current screen mode.
+ * @return the current screen modes.
+ */
+ public int getScreenModes() {
+ return mScreenModes;
+ }
+
+ public void setScreenMode(final int curScreenMode) {
+ if (LOG) {
+ Log.v(TAG, "setScreenMode(" + curScreenMode + ")");
+ }
+ mScreenMode = curScreenMode;
+ for (final ScreenModeListener listener : mListeners) {
+ listener.onScreenModeChanged(curScreenMode);
+ }
+ }
+
+ public int getScreenMode() {
+ if (LOG) {
+ Log.v(TAG, "getScreenMode() return " + mScreenMode);
+ }
+ return mScreenMode;
+ }
+
+ public int getNextScreenMode() {
+ int mode = getScreenMode();
+ mode <<= 1;
+ if ((mode & mScreenModes) == 0) {
+ //not exist, find the right one
+ if (mode > mScreenModes) {
+ mode = 1;
+ }
+ while ((mode & mScreenModes) == 0) {
+ mode <<= 1;
+ if (mode > mScreenModes) {
+ throw new RuntimeException("wrong screen mode = " + mScreenModes);
+ }
+ }
+ }
+ if (LOG) {
+ Log.v(TAG, "getNextScreenMode() = " + mode);
+ }
+ return mode;
+ }
+
+ private final ArrayList<ScreenModeListener> mListeners = new ArrayList<ScreenModeListener>();
+ public void addListener(final ScreenModeListener l) {
+ if (!mListeners.contains(l)) {
+ mListeners.add(l);
+ }
+ if (LOG) {
+ Log.v(TAG, "addListener(" + l + ")");
+ }
+ }
+
+ public void removeListener(final ScreenModeListener l) {
+ mListeners.remove(l);
+ if (LOG) {
+ Log.v(TAG, "removeListener(" + l + ")");
+ }
+ }
+
+ public void clear() {
+ mListeners.clear();
+ }
+
+ public interface ScreenModeListener {
+ void onScreenModeChanged(int newMode);
+ }
+}