new class AudioRouter manages audio routing for the phone call

This CL only has support between bluetooth/earpiece

Of Note:
- New shared class AudioMode defines different modes for audio routing
- New class AudioRouter manages between EARPIECE and Bluetooth modes.
- Add function in CallCommandService and CallHandlerService for audio
  mode

Change-Id: I52ff70e53868c45e5202b757cc80a13af3abe5f8
diff --git a/src/com/android/phone/CallCommandService.java b/src/com/android/phone/CallCommandService.java
index 560e78c..35c507a 100644
--- a/src/com/android/phone/CallCommandService.java
+++ b/src/com/android/phone/CallCommandService.java
@@ -21,6 +21,7 @@
 
 import com.android.internal.telephony.CallManager;
 import com.android.phone.CallModeler.CallResult;
+import com.android.services.telephony.common.AudioMode;
 import com.android.services.telephony.common.Call;
 import com.android.services.telephony.common.ICallCommandService;
 
@@ -36,13 +37,15 @@
     private final CallManager mCallManager;
     private final CallModeler mCallModeler;
     private final DTMFTonePlayer mDtmfTonePlayer;
+    private final AudioRouter mAudioRouter;
 
     public CallCommandService(Context context, CallManager callManager, CallModeler callModeler,
-            DTMFTonePlayer dtmfTonePlayer) {
+            DTMFTonePlayer dtmfTonePlayer, AudioRouter audioRouter) {
         mContext = context;
         mCallManager = callManager;
         mCallModeler = callModeler;
         mDtmfTonePlayer = dtmfTonePlayer;
+        mAudioRouter = audioRouter;
     }
 
     /**
@@ -110,7 +113,8 @@
     @Override
     public void mute(boolean onOff) {
         try {
-            PhoneUtils.setMute(onOff);
+            //PhoneUtils.setMute(onOff);
+            mAudioRouter.setAudioMode(onOff ? AudioMode.BLUETOOTH : AudioMode.EARPIECE);
         } catch (Exception e) {
             Log.e(TAG, "Error during mute().", e);
         }
@@ -143,4 +147,13 @@
             Log.e(TAG, "Error stopping DTMF tone.", e);
         }
     }
+
+    @Override
+    public void setAudioMode(int mode) {
+        try {
+            mAudioRouter.setAudioMode(mode);
+        } catch (Exception e) {
+            Log.e(TAG, "Error setting the audio mode.", e);
+        }
+    }
 }