diff options
author | Likai Ding <likaid@codeaurora.org> | 2013-08-14 17:39:49 +0800 |
---|---|---|
committer | Xiaojing Zhang <zhangx@codeaurora.org> | 2014-11-04 20:37:53 -0800 |
commit | 3d1a38b32c8508c916ec333db16e393c5d5ca96b (patch) | |
tree | e3eab92d653e789e4181f694c62552d55581b7ba | |
parent | 85963d969c149b9ba5e5681524e520b8b8afba08 (diff) | |
download | android_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-x | res/drawable-mdpi/ic_menu_single_track.png | bin | 0 -> 5307 bytes | |||
-rwxr-xr-x | res/drawable-mdpi/ic_menu_stereo.png | bin | 0 -> 4334 bytes | |||
-rwxr-xr-x | src/com/qcom/gallery3d/video/StereoAudioHooker.java | 118 |
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 Binary files differnew file mode 100755 index 000000000..b11c2e434 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_single_track.png diff --git a/res/drawable-mdpi/ic_menu_stereo.png b/res/drawable-mdpi/ic_menu_stereo.png Binary files differnew file mode 100755 index 000000000..ef3ee9fe3 --- /dev/null +++ b/res/drawable-mdpi/ic_menu_stereo.png 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); + } +} |