Audio routing part 2

- Added WIRED_HEADSET and SPEAKER to AudioModes
- Added WiredHeadsetManager class
- AudioRouter now listens to WiredHeadsetManager and PhoneUtils for
  speakerphone
- AudioRouter maintains state across earpiece,headset,bluetooth,speaker
   - Most code copied from InCallScreen for speaker logic
- CallHandlerService listens to audioRouter for audio states
- Moved Wired headset logic from phoneglobals to wiredheadsetmanager
- Better toString for logging Call objects

Change-Id: Iebc8c83934ce5eff6f1918b0610804fadb163b43
diff --git a/src/com/android/phone/PhoneUtils.java b/src/com/android/phone/PhoneUtils.java
index f243123..93f3002 100644
--- a/src/com/android/phone/PhoneUtils.java
+++ b/src/com/android/phone/PhoneUtils.java
@@ -2460,11 +2460,15 @@
         boolean activated = false;
         if (PhoneGlobals.mDockState != Intent.EXTRA_DOCK_STATE_UNDOCKED) {
             if (DBG) log("activateSpeakerIfDocked(): In a dock -> may need to turn on speaker.");
-            PhoneGlobals app = PhoneGlobals.getInstance();
-            final BluetoothManager btManager = app.getBluetoothManager();
+            final PhoneGlobals app = PhoneGlobals.getInstance();
 
-            if (!app.isHeadsetPlugged() && !btManager.isBluetoothHeadsetAudioOn()) {
-                turnOnSpeaker(phone.getContext(), true, true);
+            // TODO(klp): This function should move to AudioRouter
+            final BluetoothManager btManager = app.getBluetoothManager();
+            final WiredHeadsetManager wiredHeadset = app.getWiredHeadsetManager();
+            final AudioRouter audioRouter = app.getAudioRouter();
+
+            if (!wiredHeadset.isHeadsetPlugged() && !btManager.isBluetoothHeadsetAudioOn()) {
+                audioRouter.setSpeaker(true);
                 activated = true;
             }
         }