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/BluetoothManager.java b/src/com/android/phone/BluetoothManager.java
index a297472..8d20c25 100644
--- a/src/com/android/phone/BluetoothManager.java
+++ b/src/com/android/phone/BluetoothManager.java
@@ -221,12 +221,18 @@
         notifyListeners(mShowBluetoothIndication);
     }
 
-    /* package */ void addBluetoothIndicatorListener(BluetoothIndicatorListener listener) {
+    public void addBluetoothIndicatorListener(BluetoothIndicatorListener listener) {
         if (!mListeners.contains(listener)) {
             mListeners.add(listener);
         }
     }
 
+    public void removeBluetoothIndicatorListener(BluetoothIndicatorListener listener) {
+        if (mListeners.contains(listener)) {
+            mListeners.remove(listener);
+        }
+    }
+
     private void notifyListeners(boolean showBluetoothOn) {
         for (int i = 0; i < mListeners.size(); i++) {
             mListeners.get(i).onBluetoothIndicationChange(showBluetoothOn, this);
@@ -396,6 +402,6 @@
     }
 
     /* package */ interface BluetoothIndicatorListener {
-        public void onBluetoothIndicationChange(boolean showAsConnected, BluetoothManager manager);
+        public void onBluetoothIndicationChange(boolean isConnected, BluetoothManager manager);
     }
 }