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);
+ }
+ }
}