summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteve Kondik <shade@chemlab.org>2016-04-08 13:03:33 -0700
committerSteve Kondik <shade@chemlab.org>2016-04-08 13:03:33 -0700
commit846d5ed4185f16736eed1d4069957d14a69a8e41 (patch)
tree661dabd62526ec82ab7d8a0664f82e15dbe49d7e
parente4e3997e2d7df91be766c7031f5729bded78cdf4 (diff)
downloadandroid_packages_apps_AudioFX-846d5ed4185f16736eed1d4069957d14a69a8e41.tar.gz
android_packages_apps_AudioFX-846d5ed4185f16736eed1d4069957d14a69a8e41.tar.bz2
android_packages_apps_AudioFX-846d5ed4185f16736eed1d4069957d14a69a8e41.zip
audiofx: Add support for line-out path
* Some devices will report line-out when high impedance is detected. Add support for a dedicated set of preferences when line-out is detected. This is useful because you'll typically want a different set of preferences on your headphones vs. your car stereo. Change-Id: If06b2b6385b1dde36c98c1bdcdc3c87857cc3229
-rw-r--r--res/values/cm_strings.xml1
-rw-r--r--src/org/cyanogenmod/audiofx/HeadsetService.java20
2 files changed, 16 insertions, 5 deletions
diff --git a/res/values/cm_strings.xml b/res/values/cm_strings.xml
index 419c49f..6f78353 100644
--- a/res/values/cm_strings.xml
+++ b/res/values/cm_strings.xml
@@ -44,6 +44,7 @@
<string name="device_headset">Headset</string>
<string name="device_speaker">Speaker</string>
+ <string name="device_line_out">Line out</string>
<string name="device_usb">USB</string>
<string name="device_bluetooth">Bluetooth</string>
<string name="device_wireless">Wireless</string>
diff --git a/src/org/cyanogenmod/audiofx/HeadsetService.java b/src/org/cyanogenmod/audiofx/HeadsetService.java
index b7b6155..bada687 100644
--- a/src/org/cyanogenmod/audiofx/HeadsetService.java
+++ b/src/org/cyanogenmod/audiofx/HeadsetService.java
@@ -51,7 +51,7 @@ public class HeadsetService extends Service {
public static final String ACTION_UPDATE_PREFERENCES = "org.cyanogenmod.audiofx.UPDATE_PREFS";
public static final String[] DEFAULT_AUDIO_DEVICES = new String[]{
- "headset", "speaker", "usb", "bluetooth", "wireless"
+ "headset", "speaker", "usb", "bluetooth", "wireless", "lineout"
};
static String getZeroedBandsString(int length) {
@@ -289,6 +289,7 @@ public class HeadsetService extends Service {
private boolean mUseUSB;
private boolean mUseWifiDisplay;
private boolean mUseSpeaker;
+ private boolean mUseLineOut;
private final Context mContext;
@@ -303,6 +304,7 @@ public class HeadsetService extends Service {
final boolean prevUseUSB = mUseUSB;
final boolean prevUseWireless = mUseWifiDisplay;
final boolean prevUseSpeaker = mUseSpeaker;
+ final boolean prevUseLineOut = mUseLineOut;
AudioManager am = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
int device = am.getDevicesForStream(AudioManager.STREAM_MUSIC);
@@ -316,6 +318,8 @@ public class HeadsetService extends Service {
mUseHeadset = (device & AudioManager.DEVICE_OUT_WIRED_HEADPHONE) != 0
|| (device & AudioManager.DEVICE_OUT_WIRED_HEADSET) != 0;
+ mUseLineOut = (device & AudioManager.DEVICE_OUT_LINE) != 0;
+
mUseUSB = (device & AudioManager.DEVICE_OUT_USB_ACCESSORY) != 0
|| (device & AudioManager.DEVICE_OUT_USB_DEVICE) != 0;
@@ -324,12 +328,15 @@ public class HeadsetService extends Service {
mUseSpeaker = (device & AudioManager.DEVICE_OUT_SPEAKER) != 0;
Log.i(TAG, "Headset=" + mUseHeadset + "; Bluetooth="
- + mUseBluetooth + " ; USB=" + mUseUSB + "; Speaker=" + mUseSpeaker);
+ + mUseBluetooth + " ; USB=" + mUseUSB + "; Speaker=" + mUseSpeaker +
+ "; Line out=" + mUseLineOut);
+
if (prevUseHeadset != mUseHeadset
|| prevUseBluetooth != mUseBluetooth
|| prevUseUSB != mUseUSB
|| prevUseWireless != mUseWifiDisplay
- || prevUseSpeaker != mUseSpeaker) {
+ || prevUseSpeaker != mUseSpeaker
+ || prevUseLineOut != mUseLineOut) {
update();
@@ -364,6 +371,9 @@ public class HeadsetService extends Service {
if (mUseWifiDisplay) {
return "wireless";
}
+ if (mUseLineOut) {
+ return "lineout";
+ }
return "speaker";
}
}
@@ -627,8 +637,8 @@ public class HeadsetService extends Service {
equalizerLevels[i] = (short) (Float.parseFloat(levels[i]));
}
} else if (mOverriddenEqualizerLevels != null) {
- equalizerLevels = new short[levels.length];
- for (int i = 0; i < levels.length; i++) {
+ equalizerLevels = new short[mOverriddenEqualizerLevels.length];
+ for (int i = 0; i < mOverriddenEqualizerLevels.length; i++) {
equalizerLevels[i] = (short) mOverriddenEqualizerLevels[i];
}
}