diff options
| author | wjiang <wjiang@codeaurora.org> | 2013-08-08 18:49:41 +0800 |
|---|---|---|
| committer | Steve Kondik <shade@chemlab.org> | 2013-08-18 16:46:39 -0700 |
| commit | feb365184f1b020278849fb171095d3e95f44a9c (patch) | |
| tree | 7b5c632453bab0be8788f5704668157cb11851e8 /src | |
| parent | 6e7d9a0e461440b6d51546de137040a40d20d034 (diff) | |
| download | android_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.tar.gz android_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.tar.bz2 android_packages_apps_Gallery2-feb365184f1b020278849fb171095d3e95f44a9c.zip | |
Gallery2: Recycle effect instance when MovieActivity pauses
VideoView will deallocate audio track for local video playback when
MovieActivity being paused, which causes audio effect being released
twice when onDestroy() is called.
To avoid such special case, we should ensure effect be
deallocated/allocated when video view call pause/resume.
Change-Id: I571f9f3126be747ebe4e65a01f6880941d00d25d
CRs-Fixed: 522349, 523853, 524557
Diffstat (limited to 'src')
| -rw-r--r-- | src/com/android/gallery3d/app/MovieActivity.java | 78 |
1 files changed, 47 insertions, 31 deletions
diff --git a/src/com/android/gallery3d/app/MovieActivity.java b/src/com/android/gallery3d/app/MovieActivity.java index fc712964e..40f845efb 100644 --- a/src/com/android/gallery3d/app/MovieActivity.java +++ b/src/com/android/gallery3d/app/MovieActivity.java @@ -198,27 +198,7 @@ public class MovieActivity extends Activity { mPlayer.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override public void onPrepared(MediaPlayer mp) { - int sessionId = mp.getAudioSessionId(); - if (mBassBoostSupported) { - mBassBoostEffect = new BassBoost(0, sessionId); - } - if (mVirtualizerSupported) { - mVirtualizerEffect = new Virtualizer(0, sessionId); - } - if (mIsHeadsetOn) { - if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) { - if (mBassBoostSupported) { - mBassBoostEffect.setStrength((short) - mPrefs.getInt(Key.bb_strength.toString(), 0)); - mBassBoostEffect.setEnabled(true); - } - if (mVirtualizerSupported) { - mVirtualizerEffect.setStrength((short) - mPrefs.getInt(Key.virt_strength.toString(), 0)); - mVirtualizerEffect.setEnabled(true); - } - } - } + initEffects(mp.getAudioSessionId()); } }); } @@ -409,6 +389,46 @@ public class MovieActivity extends Activity { } } + private void initEffects(int sessionId) { + // Singleton instance + if ((mBassBoostEffect == null) && mBassBoostSupported) { + mBassBoostEffect = new BassBoost(0, sessionId); + } + + if ((mVirtualizerEffect == null) && mVirtualizerSupported) { + mVirtualizerEffect = new Virtualizer(0, sessionId); + } + + if (mIsHeadsetOn) { + if (mPrefs.getBoolean(Key.global_enabled.toString(), false)) { + if (mBassBoostSupported) { + mBassBoostEffect.setStrength((short) + mPrefs.getInt(Key.bb_strength.toString(), 0)); + mBassBoostEffect.setEnabled(true); + } + if (mVirtualizerSupported) { + mVirtualizerEffect.setStrength((short) + mPrefs.getInt(Key.virt_strength.toString(), 0)); + mVirtualizerEffect.setEnabled(true); + } + } + } + + } + + private void releaseEffects() { + if (mBassBoostEffect != null) { + mBassBoostEffect.setEnabled(false); + mBassBoostEffect.release(); + mBassBoostEffect = null; + } + if (mVirtualizerEffect != null) { + mVirtualizerEffect.setEnabled(false); + mVirtualizerEffect.release(); + mVirtualizerEffect = null; + } + } + private Intent createShareIntent() { Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("video/*"); @@ -455,6 +475,9 @@ public class MovieActivity extends Activity { @Override public void onPause() { + // Audio track will be deallocated for local video playback, + // thus recycle effect here. + releaseEffects(); mPlayer.onPause(); try { unregisterReceiver(mReceiver); @@ -474,6 +497,8 @@ public class MovieActivity extends Activity { intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY); registerReceiver(mReceiver, intentFilter); } + + initEffects(mPlayer.getAudioSessionId()); super.onResume(); } @@ -485,17 +510,8 @@ public class MovieActivity extends Activity { @Override public void onDestroy() { + releaseEffects(); mPlayer.onDestroy(); - if (mBassBoostEffect != null) { - mBassBoostEffect.setEnabled(false); - mBassBoostEffect.release(); - mBassBoostEffect = null; - } - if (mVirtualizerEffect != null) { - mVirtualizerEffect.setEnabled(false); - mVirtualizerEffect.release(); - mVirtualizerEffect = null; - } super.onDestroy(); } |
