diff options
author | Steve Kondik <steve@cyngn.com> | 2016-04-25 11:22:46 -0700 |
---|---|---|
committer | Gerrit Code Review <gerrit@cyngn.com> | 2016-04-28 06:38:02 +0000 |
commit | e5570ef58e12d645122cabef41c4f97099ace0af (patch) | |
tree | 93be42277fe41160bfa1269cc548c4c54e1af2ca /src/com/cyngn/audiofx/service/SessionManager.java | |
parent | a3a728ce783185ed9d30aa80405e48f7718649e1 (diff) | |
download | android_packages_apps_AudioFX-e5570ef58e12d645122cabef41c4f97099ace0af.tar.gz android_packages_apps_AudioFX-e5570ef58e12d645122cabef41c4f97099ace0af.tar.bz2 android_packages_apps_AudioFX-e5570ef58e12d645122cabef41c4f97099ace0af.zip |
audiofx: Fix the QS tile
* And clean up device tracking.
Change-Id: I4dc935c6a1e17b7dd346b1197876089c3436c7a5
Diffstat (limited to 'src/com/cyngn/audiofx/service/SessionManager.java')
-rw-r--r-- | src/com/cyngn/audiofx/service/SessionManager.java | 64 |
1 files changed, 19 insertions, 45 deletions
diff --git a/src/com/cyngn/audiofx/service/SessionManager.java b/src/com/cyngn/audiofx/service/SessionManager.java index ade6eb4..a05d5d4 100644 --- a/src/com/cyngn/audiofx/service/SessionManager.java +++ b/src/com/cyngn/audiofx/service/SessionManager.java @@ -12,7 +12,6 @@ import static com.cyngn.audiofx.Constants.DEVICE_AUDIOFX_VIRTUALIZER_ENABLE; import static com.cyngn.audiofx.Constants.DEVICE_AUDIOFX_VIRTUALIZER_STRENGTH; import static com.cyngn.audiofx.Constants.DEVICE_DEFAULT_GLOBAL_ENABLE; import static com.cyngn.audiofx.activity.MasterConfigControl.getDeviceIdentifierString; -import static com.cyngn.audiofx.service.AudioFxService.ACTION_DEVICE_OUTPUT_CHANGED; import static com.cyngn.audiofx.service.AudioFxService.ALL_CHANGED; import static com.cyngn.audiofx.service.AudioFxService.BASS_BOOST_CHANGED; import static com.cyngn.audiofx.service.AudioFxService.ENABLE_REVERB; @@ -23,7 +22,6 @@ import static com.cyngn.audiofx.service.AudioFxService.VIRTUALIZER_CHANGED; import static com.cyngn.audiofx.service.AudioFxService.VOLUME_BOOST_CHANGED; import android.content.Context; -import android.content.Intent; import android.content.SharedPreferences; import android.media.AudioDeviceInfo; import android.media.AudioManager; @@ -32,7 +30,6 @@ import android.media.audiofx.PresetReverb; import android.os.Handler; import android.os.Looper; import android.os.Message; -import android.support.v4.content.LocalBroadcastManager; import android.util.Log; import android.util.SparseArray; @@ -43,23 +40,23 @@ import com.cyngn.audiofx.eq.EqUtils; import cyanogenmod.media.AudioSessionInfo; import cyanogenmod.media.CMAudioManager; -class SessionManager extends AudioOutputChangeListener { +class SessionManager implements AudioOutputChangeListener.AudioOutputChangedCallback { private static final String TAG = AudioFxService.TAG; private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG); private final Context mContext; + private final Handler mHandler; + private final DevicePreferenceManager mDevicePrefs; + private final CMAudioManager mCMAudio; /** * All fields ending with L should be locked on {@link #mAudioSessionsL} */ private final SparseArray<EffectSet> mAudioSessionsL = new SparseArray<EffectSet>(); - private Handler mHandler; - private final CMAudioManager mCMAudio; - private AudioDeviceInfo mCurrentDevice; - private AudioDeviceInfo mPreviousDevice; + private AudioDeviceInfo mCurrentDevice = null; // audio priority handler messages private static final int MSG_UPDATE_DSP = 100; @@ -68,25 +65,17 @@ class SessionManager extends AudioOutputChangeListener { private static final int MSG_UPDATE_FOR_SESSION = 103; private static final int MSG_UPDATE_EQ_OVERRIDE = 104; - public SessionManager(Context context, Handler handler) { - super (context, handler); + public SessionManager(Context context, Handler handler, DevicePreferenceManager devicePrefs) { mContext = context; - mCMAudio = CMAudioManager.getInstance(context); - + mDevicePrefs = devicePrefs; mHandler = new Handler(handler.getLooper(), new AudioServiceHandler()); - register(); } public void onDestroy() { synchronized (mAudioSessionsL) { - unregister(); - - if (mHandler != null) { - mHandler.removeCallbacksAndMessages(null); - mHandler.getLooper().quit(); - mHandler = null; - } + mHandler.removeCallbacksAndMessages(null); + mHandler.getLooper().quit(); } } @@ -101,10 +90,6 @@ class SessionManager extends AudioOutputChangeListener { mHandler.obtainMessage(MSG_UPDATE_EQ_OVERRIDE, band, 0, level).sendToTarget(); } - public AudioDeviceInfo getPreviousDevice() { - return mPreviousDevice; - } - /** * Callback which listens for session updates from AudioPolicyManager. This is a * feature added by CM which notifies when sessions are created or @@ -148,7 +133,7 @@ class SessionManager extends AudioOutputChangeListener { } public String getCurrentDeviceIdentifier() { - return getDeviceIdentifierString(getCurrentDevice()); + return getDeviceIdentifierString(mCurrentDevice); } public boolean hasActiveSessions() { @@ -173,7 +158,7 @@ class SessionManager extends AudioOutputChangeListener { throw new IllegalStateException("updateBackend must not be called on the UI thread!"); } - final SharedPreferences prefs = mContext.getSharedPreferences(getCurrentDeviceIdentifier(), 0); + final SharedPreferences prefs = mDevicePrefs.getCurrentDevicePrefs(); if (DEBUG) { Log.i(TAG, "+++ updateBackend() called with flags=[" + flags + "], session=[" + session + "]"); @@ -286,10 +271,11 @@ class SessionManager extends AudioOutputChangeListener { @Override public boolean handleMessage(Message msg) { - EffectSet session = null; - Integer sessionId = 0; - int flags = 0; synchronized (mAudioSessionsL) { + EffectSet session = null; + Integer sessionId = 0; + int flags = 0; + switch (msg.what) { case MSG_ADD_SESSION: /** @@ -393,33 +379,21 @@ class SessionManager extends AudioOutputChangeListener { @Override public void onAudioOutputChanged(boolean firstChange, AudioDeviceInfo outputDevice) { synchronized (mAudioSessionsL) { - mPreviousDevice = mCurrentDevice; - mCurrentDevice = outputDevice; + if (mCurrentDevice == null || + (outputDevice != null && mCurrentDevice.getId() != outputDevice.getId())) { + mCurrentDevice = outputDevice; + } - int sessionId = 0; EffectSet session = null; // Update all the sessions for this output which are moving final int N = mAudioSessionsL.size(); for (int i = 0; i < N; i++) { - sessionId = mAudioSessionsL.keyAt(i); session = mAudioSessionsL.valueAt(i); - if (DEBUG) Log.d(TAG, "UPDATE_DEVICE prev=" + - (mPreviousDevice == null ? "none" : mPreviousDevice.getType()) + - " new=" + (mCurrentDevice == null ? "none" : mCurrentDevice.getType() + - " session=" + sessionId + " session-device=" + - (session.getDevice() == null ? "none" : session.getDevice().getType()))); session.setDevice(mCurrentDevice); updateBackendLocked(ALL_CHANGED, session); } } - - if (DEBUG) Log.d(TAG, "Broadcasting device changed event"); - - Intent intent = new Intent(ACTION_DEVICE_OUTPUT_CHANGED); - intent.putExtra("device", mCurrentDevice.getId()); - LocalBroadcastManager.getInstance(mContext).sendBroadcast(intent); } - } |