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
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.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 @@
 
             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 @@
         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 @@
     // 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;