From 3607bd1039f6dbb20a9280c7161a1a5302060506 Mon Sep 17 00:00:00 2001 From: Steve Kondik Date: Tue, 27 May 2014 15:12:00 -0700 Subject: audiofx: Add a preset for the speaker and enable it by default * Roll off the highs and lows to compensate for the Bacon's speaker * We should wrap this in a device-specific flag (TODO) Change-Id: I3fd65f73aeb997eb3487e319b2c36a81a91d30fb --- src/org/cyanogenmod/audiofx/ActivityMusic.java | 21 +++++++++++++++------ src/org/cyanogenmod/audiofx/HeadsetService.java | 19 ++++++++++++++++++- 2 files changed, 33 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/org/cyanogenmod/audiofx/ActivityMusic.java b/src/org/cyanogenmod/audiofx/ActivityMusic.java index aa3740b..8a33199 100644 --- a/src/org/cyanogenmod/audiofx/ActivityMusic.java +++ b/src/org/cyanogenmod/audiofx/ActivityMusic.java @@ -286,15 +286,16 @@ public class ActivityMusic extends Activity { // setup equalizer presets final int numPresets = Integer.parseInt(getSharedPreferences("global", 0) .getString("equalizer.number_of_presets", "0")); - mEQPresetNames = new String[numPresets + 2]; + mEQPresetNames = new String[numPresets + 3]; String[] presetNames = getSharedPreferences("global", 0).getString("equalizer.preset_names", "").split("\\|"); for (short i = 0; i < numPresets; i++) { mEQPresetNames[i] = localizePresetName(presetNames[i]); } mEQPresetNames[numPresets] = getString(R.string.ci_extreme); - mEQPresetNames[numPresets + 1] = getString(R.string.user); - mEQCustomPresetPosition = numPresets + 1; + mEQPresetNames[numPresets + 1] = getString(R.string.small_speakers); + mEQPresetNames[numPresets + 2] = getString(R.string.user); + mEQCustomPresetPosition = numPresets + 2; ArrayAdapter adapter = new ArrayAdapter(this, R.layout.equalizer_presets, mEQPresetNames); @@ -549,8 +550,10 @@ public class ActivityMusic extends Activity { getActionBar().setSelectedNavigationItem(getCurrentDeviceIndex()); } - final boolean isEnabled = getPrefs().getBoolean("audiofx.global.enable", false); - mKnobsAvailable = !mCurrentDevice.equals("speaker"); + boolean isSpeaker = mCurrentDevice.equals("speaker"); + + final boolean isEnabled = getPrefs().getBoolean("audiofx.global.enable", isSpeaker); + mKnobsAvailable = !isSpeaker; mToggleSwitch.setChecked(isEnabled); @@ -567,7 +570,13 @@ public class ActivityMusic extends Activity { mBassKnob.setVisibility(View.GONE); } if (mEqualizerSupported) { - mEQPreset = Integer.valueOf(getPrefs().getString("audiofx.eq.preset", "3")); + String preset; + if (isSpeaker) { + preset = String.valueOf(mNumberEqualizerBands + 2); + } else { + preset = "3"; + } + mEQPreset = Integer.valueOf(getPrefs().getString("audiofx.eq.preset", preset)); mEqGallery.setEnabled(isEnabled); mEqGallery.setSelection(mEQPreset); } diff --git a/src/org/cyanogenmod/audiofx/HeadsetService.java b/src/org/cyanogenmod/audiofx/HeadsetService.java index c783244..c8854f9 100644 --- a/src/org/cyanogenmod/audiofx/HeadsetService.java +++ b/src/org/cyanogenmod/audiofx/HeadsetService.java @@ -460,6 +460,23 @@ public class HeadsetService extends Service { } } prefs.edit().putString("equalizer.preset." + numPresets, ciExtremeBuilder.toString()).apply(); + + // add small-speaker + StringBuilder ssBuilder = new StringBuilder("-170;270;50;-220;200"); + if (numBands > 5) { + int extraBands = numBands - 5; + for (int i = 0; i < extraBands; i++) { + ssBuilder.insert(0, "0;"); + } + } + prefs.edit().putString("equalizer.preset." + (numPresets + 1), ssBuilder.toString()).apply(); + + // Enable for the speaker by default + if (!getSharedPrefsFile("speaker").exists()) { + SharedPreferences spk = getSharedPreferences("speaker", 0); + spk.edit().putBoolean("audiofx.global.enable", true).apply(); + spk.edit().putString("audiofx.eq.preset", String.valueOf(numPresets + 1)).apply(); + } } /** @@ -501,7 +518,7 @@ public class HeadsetService extends Service { try { session.enableEqualizer(globalEnabled); - final int customPresetPos = session.getNumEqualizerPresets() + 1; + final int customPresetPos = session.getNumEqualizerPresets() + 2; final int preset = Integer.valueOf(prefs.getString("audiofx.eq.preset", String.valueOf(customPresetPos))); final int bands = session.getNumEqualizerBands(); -- cgit v1.2.3