summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLikai Ding <likaid@codeaurora.org>2013-08-14 17:39:49 +0800
committerXiaojing Zhang <zhangx@codeaurora.org>2014-11-04 20:37:53 -0800
commit3d1a38b32c8508c916ec333db16e393c5d5ca96b (patch)
treee3eab92d653e789e4181f694c62552d55581b7ba
parent85963d969c149b9ba5e5681524e520b8b8afba08 (diff)
downloadandroid_packages_apps_Gallery2-3d1a38b32c8508c916ec333db16e393c5d5ca96b.tar.gz
android_packages_apps_Gallery2-3d1a38b32c8508c916ec333db16e393c5d5ca96b.tar.bz2
android_packages_apps_Gallery2-3d1a38b32c8508c916ec333db16e393c5d5ca96b.zip
Gallery2: support stereo/single track play mode
(cherry picked new files from commit id 990c6d43ea7c184846e19d41bef0d93aee4e581b) Change-Id: I2d7d523ca586a031c3fb139eda321d5073b30589
-rwxr-xr-xres/drawable-mdpi/ic_menu_single_track.pngbin0 -> 5307 bytes
-rwxr-xr-xres/drawable-mdpi/ic_menu_stereo.pngbin0 -> 4334 bytes
-rwxr-xr-xsrc/com/qcom/gallery3d/video/StereoAudioHooker.java118
3 files changed, 118 insertions, 0 deletions
diff --git a/res/drawable-mdpi/ic_menu_single_track.png b/res/drawable-mdpi/ic_menu_single_track.png
new file mode 100755
index 000000000..b11c2e434
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_single_track.png
Binary files differ
diff --git a/res/drawable-mdpi/ic_menu_stereo.png b/res/drawable-mdpi/ic_menu_stereo.png
new file mode 100755
index 000000000..ef3ee9fe3
--- /dev/null
+++ b/res/drawable-mdpi/ic_menu_stereo.png
Binary files differ
diff --git a/src/com/qcom/gallery3d/video/StereoAudioHooker.java b/src/com/qcom/gallery3d/video/StereoAudioHooker.java
new file mode 100755
index 000000000..72f3cb255
--- /dev/null
+++ b/src/com/qcom/gallery3d/video/StereoAudioHooker.java
@@ -0,0 +1,118 @@
+package com.qcom.gallery3d.video;
+
+import android.content.Context;
+import android.media.AudioManager;
+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);
+ 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;
+ }
+ }
+
+ private boolean getStereoAudio() {
+ boolean isstereo = false;
+ if (mAudioManager == null) {
+ mAudioManager = (AudioManager)getContext().getSystemService(Context.AUDIO_SERVICE);
+ }
+ final String stereo = mAudioManager.getParameters(KEY_STEREO);
+ final String key = KEY_STEREO + "=1";
+ if (stereo != null && stereo.indexOf(key) > -1) {
+ isstereo = true;
+ } else {
+ isstereo = false;
+ }
+ if (LOG) {
+ QcomLog.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.setParameters(value);
+ if (LOG) {
+ QcomLog.v(TAG, "setStereoAudio(" + flag + ") value=" + value);
+ }
+ }
+
+ private void updateStereoAudioIcon() {
+ if (mMenuStereoAudio != null) {
+ if (mCurrentStereoAudio) {
+ mMenuStereoAudio.setTitle(R.string.single_track);
+ } else {
+ mMenuStereoAudio.setTitle(R.string.stereo);
+ }
+ }
+ }
+
+ private void enableStereoAudio() {
+ if (LOG) {
+ QcomLog.v(TAG, "enableStereoAudio() mIsInitedStereoAudio=" + mIsInitedStereoAudio
+ + ", mCurrentStereoAudio=" + mCurrentStereoAudio);
+ }
+ mSystemStereoAudio = getStereoAudio();
+ if (!mIsInitedStereoAudio) {
+ mCurrentStereoAudio = mSystemStereoAudio;
+ mIsInitedStereoAudio = true;
+ } else {
+ //if activity is not from onCreate()
+ //restore old stereo type
+ setStereoAudio(mCurrentStereoAudio);
+ }
+ updateStereoAudioIcon();
+ }
+
+ private void restoreStereoAudio() {
+ setStereoAudio(mSystemStereoAudio);
+ }
+}