From 4fb8174a191b5a33f18b3d63c79423cd229bc559 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Mon, 11 Jul 2016 18:00:54 -0700 Subject: Fix UI behavior for virtualizer effect Set default virtualizer strength at 0 (effect is created but not applied). For "is headphone only" behavior: do not use the hardcoded GUID of the LVM implementation, query the effect to check whether the transaural mode is supported. Bug 29229872 Change-Id: I2479e9051ccad4dae9e37bf1f30cb38b15ab66cd --- src/com/android/musicfx/ActivityMusic.java | 22 +++++++++++++++++++--- src/com/android/musicfx/ControlPanelEffect.java | 2 +- 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/src/com/android/musicfx/ActivityMusic.java b/src/com/android/musicfx/ActivityMusic.java index 328a923..8498747 100644 --- a/src/com/android/musicfx/ActivityMusic.java +++ b/src/com/android/musicfx/ActivityMusic.java @@ -30,9 +30,11 @@ import android.content.DialogInterface; import android.content.DialogInterface.OnCancelListener; import android.content.Intent; import android.content.IntentFilter; +import android.media.AudioFormat; import android.media.AudioManager; import android.media.audiofx.AudioEffect; import android.media.audiofx.AudioEffect.Descriptor; +import android.media.audiofx.Virtualizer; import android.os.Bundle; import android.util.Log; import android.view.Gravity; @@ -260,9 +262,7 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener { if (effect.type.equals(AudioEffect.EFFECT_TYPE_VIRTUALIZER)) { mVirtualizerSupported = true; - if (effect.uuid.equals(UUID.fromString("1d4033c0-8557-11df-9f2d-0002a5d5c51b"))) { - mVirtualizerIsHeadphoneOnly = true; - } + mVirtualizerIsHeadphoneOnly = !isVirtualizerTransauralSupported(); } else if (effect.type.equals(AudioEffect.EFFECT_TYPE_BASS_BOOST)) { mBassBoostSupported = true; } else if (effect.type.equals(AudioEffect.EFFECT_TYPE_EQUALIZER)) { @@ -805,4 +805,20 @@ public class ActivityMusic extends Activity implements OnSeekBarChangeListener { toast.setGravity(Gravity.CENTER, toast.getXOffset() / 2, toast.getYOffset() / 2); toast.show(); } + + private static boolean isVirtualizerTransauralSupported() { + Virtualizer virt = null; + boolean transauralSupported = false; + try { + virt = new Virtualizer(0, android.media.AudioSystem.newAudioSessionId()); + transauralSupported = virt.canVirtualize(AudioFormat.CHANNEL_OUT_STEREO, + Virtualizer.VIRTUALIZATION_MODE_TRANSAURAL); + } catch (Exception e) { + } finally { + if (virt != null) { + virt.release(); + } + } + return transauralSupported; + } } diff --git a/src/com/android/musicfx/ControlPanelEffect.java b/src/com/android/musicfx/ControlPanelEffect.java index 25845b8..e3b2e6b 100644 --- a/src/com/android/musicfx/ControlPanelEffect.java +++ b/src/com/android/musicfx/ControlPanelEffect.java @@ -111,7 +111,7 @@ 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 boolean PRESET_REVERB_ENABLED_DEFAULT = false; -- cgit v1.2.3