diff options
author | Steve Kondik <shade@chemlab.org> | 2016-04-08 13:03:33 -0700 |
---|---|---|
committer | Steve Kondik <shade@chemlab.org> | 2016-04-08 13:03:33 -0700 |
commit | 846d5ed4185f16736eed1d4069957d14a69a8e41 (patch) | |
tree | 661dabd62526ec82ab7d8a0664f82e15dbe49d7e | |
parent | e4e3997e2d7df91be766c7031f5729bded78cdf4 (diff) | |
download | android_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.xml | 1 | ||||
-rw-r--r-- | src/org/cyanogenmod/audiofx/HeadsetService.java | 20 |
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]; } } |