diff options
author | Steve Kondik <shade@chemlab.org> | 2014-04-15 01:30:17 -0700 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2014-04-15 01:30:17 -0700 |
commit | d5a72be6b5c7ab290a10f079c3f133ff7adbd2d2 (patch) | |
tree | 0b82be60ea9f9a8d490e85867e1a5d109d9b6c53 /src | |
parent | 922214814a91f555aac293108e640f2297c50854 (diff) | |
download | android_packages_apps_AudioFX-d5a72be6b5c7ab290a10f079c3f133ff7adbd2d2.tar.gz android_packages_apps_AudioFX-d5a72be6b5c7ab290a10f079c3f133ff7adbd2d2.tar.bz2 android_packages_apps_AudioFX-d5a72be6b5c7ab290a10f079c3f133ff7adbd2d2.zip |
afx: Add support for standalone mode
* Allow launching from the app drawer, in which case
the most recently used audio session will be activated.
Diffstat (limited to 'src')
-rw-r--r-- | src/com/pheelicks/visualizer/VisualizerView.java | 7 | ||||
-rw-r--r-- | src/org/cyanogenmod/audiofx/ActivityMusic.java | 35 | ||||
-rw-r--r-- | src/org/cyanogenmod/audiofx/ControlPanelEffect.java | 21 |
3 files changed, 54 insertions, 9 deletions
diff --git a/src/com/pheelicks/visualizer/VisualizerView.java b/src/com/pheelicks/visualizer/VisualizerView.java index 7da1cd2..9ab5e22 100644 --- a/src/com/pheelicks/visualizer/VisualizerView.java +++ b/src/com/pheelicks/visualizer/VisualizerView.java @@ -100,7 +100,12 @@ public class VisualizerView extends View { if (mVisualizer == null) { // Create the Visualizer object and attach it to our media player. - mVisualizer = new Visualizer(audioSessionId); + try { + mVisualizer = new Visualizer(audioSessionId); + } catch (Exception e) { + Log.e(TAG, "Error enabling visualizer!", e); + return; + } mVisualizer.setEnabled(false); mVisualizer.setCaptureSize(Visualizer.getCaptureSizeRange()[1]); diff --git a/src/org/cyanogenmod/audiofx/ActivityMusic.java b/src/org/cyanogenmod/audiofx/ActivityMusic.java index a2d1e8e..97dae56 100644 --- a/src/org/cyanogenmod/audiofx/ActivityMusic.java +++ b/src/org/cyanogenmod/audiofx/ActivityMusic.java @@ -115,6 +115,8 @@ public class ActivityMusic extends Activity { private VisualizerView mVisualizer; + private boolean mStandalone = false; + // Preset Reverb fields /** * Array containing RSid of preset reverb names. @@ -167,6 +169,14 @@ public class ActivityMusic extends Activity { || (deviceClass == BluetoothClass.Device.AUDIO_VIDEO_WEARABLE_HEADSET)) { mIsHeadsetOn = audioManager.isWiredHeadsetOn(); } + } else if (action.equals(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION)) { + // handle a session change + if (mStandalone) { + mAudioSession = intent.getIntExtra(AudioEffect.EXTRA_AUDIO_SESSION, + AudioEffect.ERROR_BAD_VALUE); + mCallingPackageName = intent.getStringExtra(AudioEffect.EXTRA_PACKAGE_NAME); + updateUI(); + } } if (isHeadsetOnPrev != mIsHeadsetOn) { updateUIHeadset(true); @@ -199,10 +209,12 @@ public class ActivityMusic extends Activity { // check for errors if (mCallingPackageName == null) { - Log.e(TAG, "Package name is null"); - setResult(RESULT_CANCELED); - finish(); - return; + Log.w(TAG, "Invoked without package, using last seen package"); + mCallingPackageName = ControlPanelEffect.getMostRecentPackage(this); + mAudioSession = ControlPanelEffect.getSessionForPackage(mCallingPackageName); + mStandalone = true; + } else { + mStandalone = false; } setResult(RESULT_OK); @@ -379,8 +391,7 @@ public class ActivityMusic extends Activity { ActionBar.LayoutParams.WRAP_CONTENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_VERTICAL | Gravity.END); - ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM - | ActionBar.DISPLAY_HOME_AS_UP); + ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_CUSTOM); ab.setCustomView(mToggleSwitch, params); } @@ -427,6 +438,7 @@ public class ActivityMusic extends Activity { intentFilter.addAction(BluetoothDevice.ACTION_ACL_CONNECTED); intentFilter.addAction(BluetoothDevice.ACTION_ACL_DISCONNECTED); intentFilter.addAction(AudioManager.ACTION_AUDIO_BECOMING_NOISY); + intentFilter.addAction(AudioEffect.ACTION_OPEN_AUDIO_EFFECT_CONTROL_SESSION); registerReceiver(mReceiver, intentFilter); // Check if wired or Bluetooth headset is connected/on @@ -434,6 +446,17 @@ public class ActivityMusic extends Activity { mIsHeadsetOn = (audioManager.isWiredHeadsetOn() || audioManager.isBluetoothA2dpOn()); Log.v(TAG, "onResume: mIsHeadsetOn : " + mIsHeadsetOn); + if (mCallingPackageName == null || mAudioSession == -1) { + Log.w(TAG, "Invoked without package, using last seen package"); + mCallingPackageName = ControlPanelEffect.getMostRecentPackage(this); + mAudioSession = ControlPanelEffect.getSessionForPackage(mCallingPackageName); + mStandalone = true; + } else { + mStandalone = false; + } + + getActionBar().setDisplayHomeAsUpEnabled(!mStandalone); + // Update UI updateUI(); } diff --git a/src/org/cyanogenmod/audiofx/ControlPanelEffect.java b/src/org/cyanogenmod/audiofx/ControlPanelEffect.java index f028105..9a01e3a 100644 --- a/src/org/cyanogenmod/audiofx/ControlPanelEffect.java +++ b/src/org/cyanogenmod/audiofx/ControlPanelEffect.java @@ -112,9 +112,9 @@ public class ControlPanelEffect { // Defaults final static boolean GLOBAL_ENABLED_DEFAULT = false; private final static boolean VIRTUALIZER_ENABLED_DEFAULT = true; - private final static int VIRTUALIZER_STRENGTH_DEFAULT = 1000; + private final static int VIRTUALIZER_STRENGTH_DEFAULT = 0; private final static boolean BASS_BOOST_ENABLED_DEFAULT = true; - private final static int BASS_BOOST_STRENGTH_DEFAULT = 667; + private final static int BASS_BOOST_STRENGTH_DEFAULT = 0; private final static boolean PRESET_REVERB_ENABLED_DEFAULT = true; private final static int PRESET_REVERB_CURRENT_PRESET_DEFAULT = 0; // None private static int mPrevBassBoostStrength = 0; @@ -1026,6 +1026,10 @@ public class ControlPanelEffect { Log.v(TAG, "openSession(" + context + ", " + packageName + ", " + audioSession + ")"); final String methodTag = "openSession: "; + // store the most recent package name in the global prefs + final SharedPreferences global = context.getSharedPreferences("global", Context.MODE_PRIVATE); + global.edit().putString("current_package", packageName).commit(); + // init preferences final SharedPreferences prefs = context.getSharedPreferences(packageName, Context.MODE_PRIVATE); @@ -1487,4 +1491,17 @@ public class ControlPanelEffect { } return presetReverbEffect; } + + public static int getSessionForPackage(String packageName) { + int session = -1; + if (mPackageSessions.containsKey(packageName)) { + session = mPackageSessions.get(packageName); + } + return session; + } + + public static String getMostRecentPackage(Context context) { + SharedPreferences prefs = context.getSharedPreferences("global", Context.MODE_PRIVATE); + return prefs.getString("current_package", null); + } } |