diff options
author | Likai Ding <likaid@codeaurora.org> | 2013-08-14 17:43:38 +0800 |
---|---|---|
committer | emancebo <emancebo@cyngn.com> | 2014-09-04 10:40:18 -0700 |
commit | bce738c2b78bd4ec6dbdfc8f808059f882e59595 (patch) | |
tree | bb023a7fbc1a9d1b95d0c59abdee07ae0818826f | |
parent | 2513dbf9a594de57f40e554fd07979560406a8d7 (diff) | |
download | android_packages_apps_Gallery2-bce738c2b78bd4ec6dbdfc8f808059f882e59595.tar.gz android_packages_apps_Gallery2-bce738c2b78bd4ec6dbdfc8f808059f882e59595.tar.bz2 android_packages_apps_Gallery2-bce738c2b78bd4ec6dbdfc8f808059f882e59595.zip |
Gallery2: support stereo/single track play mode
User can select stereo/single track play mode.
Change-Id: I8225739815484f3c288823802f68478cb457725e
-rw-r--r-- | res/values-zh-rCN/codeaurora_strings.xml | 2 | ||||
-rw-r--r-- | res/values-zh-rTW/codeaurora_strings.xml | 2 | ||||
-rwxr-xr-x | res/values/bool.xml | 1 | ||||
-rw-r--r-- | res/values/codeaurora_strings.xml | 2 | ||||
-rwxr-xr-x | src/com/android/gallery3d/app/MovieActivity.java | 7 | ||||
-rw-r--r-- | src/org/codeaurora/gallery3d/ext/ActivityHooker.java | 24 | ||||
-rw-r--r-- | src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java | 48 | ||||
-rw-r--r-- | src/org/codeaurora/gallery3d/ext/IActivityHooker.java | 31 | ||||
-rwxr-xr-x | src/org/codeaurora/gallery3d/video/ExtensionHelper.java | 4 | ||||
-rw-r--r--[-rwxr-xr-x] | src/org/codeaurora/gallery3d/video/StereoAudioHooker.java (renamed from src/com/qcom/gallery3d/video/StereoAudioHooker.java) | 57 |
10 files changed, 152 insertions, 26 deletions
diff --git a/res/values-zh-rCN/codeaurora_strings.xml b/res/values-zh-rCN/codeaurora_strings.xml index 9e9b535e7..cdf3c7811 100644 --- a/res/values-zh-rCN/codeaurora_strings.xml +++ b/res/values-zh-rCN/codeaurora_strings.xml @@ -2,4 +2,6 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="loop">"循环"</string> <string name="single">"单次"</string> + <string name="stereo">"立体声"</string> + <string name="single_track">"单声道"</string> </resources> diff --git a/res/values-zh-rTW/codeaurora_strings.xml b/res/values-zh-rTW/codeaurora_strings.xml index a25ec853a..8af6493d4 100644 --- a/res/values-zh-rTW/codeaurora_strings.xml +++ b/res/values-zh-rTW/codeaurora_strings.xml @@ -2,4 +2,6 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="loop">"循環"</string> <string name="single">"單次"</string> + <string name="stereo">"立體聲"</string> + <string name="single_track">"單聲道"</string> </resources> diff --git a/res/values/bool.xml b/res/values/bool.xml index 18aade1bb..802388e94 100755 --- a/res/values/bool.xml +++ b/res/values/bool.xml @@ -16,4 +16,5 @@ <resources> <bool name="show_action_bar_title">false</bool> <bool name="loop">false</bool> + <bool name="stereo">false</bool> </resources>
\ No newline at end of file diff --git a/res/values/codeaurora_strings.xml b/res/values/codeaurora_strings.xml index e17c15492..5d918b522 100644 --- a/res/values/codeaurora_strings.xml +++ b/res/values/codeaurora_strings.xml @@ -2,4 +2,6 @@ <resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2"> <string name="loop">"Loop"</string> <string name="single">"Single"</string> + <string name="stereo">"Stereo"</string> + <string name="single_track">"Single track"</string> </resources> diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java index 061e52155..ec5f40b00 100755 --- a/src/com/android/gallery3d/app/MovieActivity.java +++ b/src/com/android/gallery3d/app/MovieActivity.java @@ -196,6 +196,8 @@ public class MovieActivity extends Activity { mMovieHooker.setParameter(null, mPlayer.getMoviePlayerExt()); mMovieHooker.setParameter(null, mMovieItem); mMovieHooker.setParameter(null, mPlayer.getVideoSurface()); + mMovieHooker.onCreate(savedInstanceState); + // Determine available/supported effects final Descriptor[] effects = AudioEffect.queryEffects(); for (final Descriptor effect : effects) { @@ -463,6 +465,7 @@ public class MovieActivity extends Activity { .requestAudioFocus(null, AudioManager.STREAM_MUSIC, AudioManager.AUDIOFOCUS_GAIN_TRANSIENT); super.onStart(); + mMovieHooker.onStart(); } @Override @@ -470,6 +473,7 @@ public class MovieActivity extends Activity { ((AudioManager) getSystemService(AUDIO_SERVICE)) .abandonAudioFocus(null); super.onStop(); + mMovieHooker.onStop(); } @Override @@ -481,6 +485,7 @@ public class MovieActivity extends Activity { // Do nothing } super.onPause(); + mMovieHooker.onPause(); } @Override @@ -494,6 +499,7 @@ public class MovieActivity extends Activity { registerReceiver(mReceiver, intentFilter); } super.onResume(); + mMovieHooker.onResume(); } @Override @@ -514,6 +520,7 @@ public class MovieActivity extends Activity { mVirtualizerEffect.release(); } super.onDestroy(); + mMovieHooker.onDestroy(); } @Override diff --git a/src/org/codeaurora/gallery3d/ext/ActivityHooker.java b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java index 039c5a04e..65761ff23 100644 --- a/src/org/codeaurora/gallery3d/ext/ActivityHooker.java +++ b/src/org/codeaurora/gallery3d/ext/ActivityHooker.java @@ -52,6 +52,30 @@ public class ActivityHooker implements IActivityHooker { } @Override + public void onCreate(Bundle savedInstanceState) { + } + + @Override + public void onStart() { + } + + @Override + public void onResume() { + } + + @Override + public void onPause() { + } + + @Override + public void onStop() { + } + + @Override + public void onDestroy() { + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { return false; } diff --git a/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java index 2e24aa688..4bf8616e7 100644 --- a/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java +++ b/src/org/codeaurora/gallery3d/ext/ActivityHookerGroup.java @@ -46,6 +46,54 @@ public class ActivityHookerGroup extends ActivityHooker { } @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + for (IActivityHooker hook : mHooks) { + hook.onCreate(savedInstanceState); + } + } + + @Override + public void onStart() { + super.onStart(); + for (IActivityHooker hook : mHooks) { + hook.onStart(); + } + } + + @Override + public void onResume() { + super.onResume(); + for (IActivityHooker hook : mHooks) { + hook.onResume(); + } + } + + @Override + public void onPause() { + super.onPause(); + for (IActivityHooker hook : mHooks) { + hook.onPause(); + } + } + + @Override + public void onStop() { + super.onStop(); + for (IActivityHooker hook : mHooks) { + hook.onStop(); + } + } + + @Override + public void onDestroy() { + super.onDestroy(); + for (IActivityHooker hook : mHooks) { + hook.onDestroy(); + } + } + + @Override public boolean onCreateOptionsMenu(Menu menu) { super.onCreateOptionsMenu(menu); boolean handle = false; diff --git a/src/org/codeaurora/gallery3d/ext/IActivityHooker.java b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java index fa1b5c0a0..a83799626 100644 --- a/src/org/codeaurora/gallery3d/ext/IActivityHooker.java +++ b/src/org/codeaurora/gallery3d/ext/IActivityHooker.java @@ -26,7 +26,36 @@ import android.view.MenuItem; * //do something return true; default: return false; } } } */ public interface IActivityHooker { - + /** + * Will be called in Host Activity.onCreate(Bundle savedInstanceState) + * @param savedInstanceState + */ + void onCreate(Bundle savedInstanceState); + /** + * Will be called in Host Activity.onStart() + */ + void onStart(); + /** + * Will be called in Host Activity.onStop() + */ + void onStop(); + /** + * Will be called in Host Activity.onPause() + */ + void onPause(); + /** + * Will be called in Host Activity.onResume() + */ + void onResume(); + /** + * Will be called in Host Activity.onDestroy() + */ + void onDestroy(); + /** + * Will be called in Host Activity.onCreateOptionsMenu(Menu menu) + * @param menu + * @return + */ /** * Will be called in Host Activity.onCreateOptionsMenu(Menu menu) * diff --git a/src/org/codeaurora/gallery3d/video/ExtensionHelper.java b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java index cef0f96d7..7694cbfff 100755 --- a/src/org/codeaurora/gallery3d/video/ExtensionHelper.java +++ b/src/org/codeaurora/gallery3d/video/ExtensionHelper.java @@ -17,10 +17,14 @@ public class ExtensionHelper { final ActivityHookerGroup group = new ActivityHookerGroup(); boolean loop = context.getResources().getBoolean(R.bool.loop); + boolean stereo = context.getResources().getBoolean(R.bool.stereo); if (loop == true) { group.addHooker(new LoopVideoHooker()); // add it for common feature. } + if (stereo == true) { + group.addHooker(new StereoAudioHooker()); // add it for common feature. + } return group; } diff --git a/src/com/qcom/gallery3d/video/StereoAudioHooker.java b/src/org/codeaurora/gallery3d/video/StereoAudioHooker.java index 72f3cb255..cb52f5972 100755..100644 --- a/src/com/qcom/gallery3d/video/StereoAudioHooker.java +++ b/src/org/codeaurora/gallery3d/video/StereoAudioHooker.java @@ -1,65 +1,70 @@ -package com.qcom.gallery3d.video; +package org.codeaurora.gallery3d.video; import android.content.Context; import android.media.AudioManager; +import android.util.Log; import android.view.Menu; import android.view.MenuItem; import com.android.gallery3d.R; -import com.qcom.gallery3d.ext.QcomLog; public class StereoAudioHooker extends MovieHooker { private static final String TAG = "StereoAudioHooker"; private static final boolean LOG = true; - + private static final int MENU_STEREO_AUDIO = 1; private MenuItem mMenuStereoAudio; - + private static final String KEY_STEREO = "EnableStereoOutput"; private boolean mSystemStereoAudio; private boolean mCurrentStereoAudio; private boolean mIsInitedStereoAudio; private AudioManager mAudioManager; - + @Override public void onStart() { super.onStart(); enableStereoAudio(); } + @Override public void onStop() { super.onStop(); restoreStereoAudio(); } + @Override public boolean onCreateOptionsMenu(final Menu menu) { super.onCreateOptionsMenu(menu); - mMenuStereoAudio = menu.add(0, getMenuActivityId(MENU_STEREO_AUDIO), 0, R.string.single_track); + mMenuStereoAudio = menu.add(0, getMenuActivityId(MENU_STEREO_AUDIO), 0, + R.string.single_track); return true; } + @Override public boolean onPrepareOptionsMenu(final Menu menu) { super.onPrepareOptionsMenu(menu); updateStereoAudioIcon(); return true; } + @Override public boolean onOptionsItemSelected(final MenuItem item) { super.onOptionsItemSelected(item); - switch(getMenuOriginalId(item.getItemId())) { - case MENU_STEREO_AUDIO: - mCurrentStereoAudio = !mCurrentStereoAudio; - setStereoAudio(mCurrentStereoAudio); - return true; - default: - return false; + switch (getMenuOriginalId(item.getItemId())) { + case MENU_STEREO_AUDIO: + mCurrentStereoAudio = !mCurrentStereoAudio; + setStereoAudio(mCurrentStereoAudio); + return true; + default: + return false; } } - + private boolean getStereoAudio() { boolean isstereo = false; if (mAudioManager == null) { - mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE); + mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); } final String stereo = mAudioManager.getParameters(KEY_STEREO); final String key = KEY_STEREO + "=1"; @@ -69,35 +74,38 @@ public class StereoAudioHooker extends MovieHooker { isstereo = false; } if (LOG) { - QcomLog.v(TAG, "getStereoAudio() isstereo=" + isstereo + ", stereo=" + stereo + ", key=" + key); + Log.v(TAG, "getStereoAudio() isstereo=" + isstereo + ", stereo=" + stereo + + ", key=" + key); } return isstereo; } - + private void setStereoAudio(final boolean flag) { final String value = KEY_STEREO + "=" + (flag ? "1" : "0"); if (mAudioManager == null) { - mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE); + mAudioManager = (AudioManager) getContext().getSystemService(Context.AUDIO_SERVICE); } mAudioManager.setParameters(value); if (LOG) { - QcomLog.v(TAG, "setStereoAudio(" + flag + ") value=" + value); + Log.v(TAG, "setStereoAudio(" + flag + ") value=" + value); } } - + private void updateStereoAudioIcon() { if (mMenuStereoAudio != null) { if (mCurrentStereoAudio) { mMenuStereoAudio.setTitle(R.string.single_track); + mMenuStereoAudio.setIcon(R.drawable.ic_menu_single_track); } else { mMenuStereoAudio.setTitle(R.string.stereo); + mMenuStereoAudio.setIcon(R.drawable.ic_menu_stereo); } } } - + private void enableStereoAudio() { if (LOG) { - QcomLog.v(TAG, "enableStereoAudio() mIsInitedStereoAudio=" + mIsInitedStereoAudio + Log.v(TAG, "enableStereoAudio() mIsInitedStereoAudio=" + mIsInitedStereoAudio + ", mCurrentStereoAudio=" + mCurrentStereoAudio); } mSystemStereoAudio = getStereoAudio(); @@ -105,13 +113,12 @@ public class StereoAudioHooker extends MovieHooker { mCurrentStereoAudio = mSystemStereoAudio; mIsInitedStereoAudio = true; } else { - //if activity is not from onCreate() - //restore old stereo type + // restore old stereo type setStereoAudio(mCurrentStereoAudio); } updateStereoAudioIcon(); } - + private void restoreStereoAudio() { setStereoAudio(mSystemStereoAudio); } |