Set default audio device based on dialler selected route

Stephen Paul Weber created

Change summary

src/cheogram/java/com/cheogram/android/ConnectionService.java | 21 +++++
1 file changed, 21 insertions(+)

Detailed changes

src/cheogram/java/com/cheogram/android/ConnectionService.java 🔗

@@ -282,12 +282,16 @@ public class ConnectionService extends android.telecom.ConnectionService {
 			switch(selectedAudioDevice) {
 				case SPEAKER_PHONE:
 					setAudioRoute(CallAudioState.ROUTE_SPEAKER);
+					break;
 				case WIRED_HEADSET:
 					setAudioRoute(CallAudioState.ROUTE_WIRED_HEADSET);
+					break;
 				case EARPIECE:
 					setAudioRoute(CallAudioState.ROUTE_EARPIECE);
+					break;
 				case BLUETOOTH:
 					setAudioRoute(CallAudioState.ROUTE_BLUETOOTH);
+					break;
 				default:
 					setAudioRoute(CallAudioState.ROUTE_WIRED_OR_EARPIECE);
 			}
@@ -301,6 +305,23 @@ public class ConnectionService extends android.telecom.ConnectionService {
 				return;
 			}
 
+			switch(state.getRoute()) {
+				case CallAudioState.ROUTE_SPEAKER:
+					rtpConnection.get().getAudioManager().setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.SPEAKER_PHONE);
+					break;
+				case CallAudioState.ROUTE_WIRED_HEADSET:
+					rtpConnection.get().getAudioManager().setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.WIRED_HEADSET);
+					break;
+				case CallAudioState.ROUTE_EARPIECE:
+					rtpConnection.get().getAudioManager().setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.EARPIECE);
+					break;
+				case CallAudioState.ROUTE_BLUETOOTH:
+					rtpConnection.get().getAudioManager().setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.BLUETOOTH);
+					break;
+				default:
+					rtpConnection.get().getAudioManager().setDefaultAudioDevice(AppRTCAudioManager.AudioDevice.NONE);
+			}
+
 			try {
 				rtpConnection.get().setMicrophoneEnabled(!state.isMuted());
 			} catch (final IllegalStateException e) {