Call Acivity.class
loudSpk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (isSpkOn) {
CallManager.speakerCall(false);
Toast.makeText(CallActivity.this, "SPK OFF", Toast.LENGTH_SHORT).show();
isSpkOn = false;
}
else{
CallManager.speakerCall(true);
Toast.makeText(CallActivity.this, "SPK ON", Toast.LENGTH_SHORT).show();
isSpkOn = true;
}
}
});
Call Manager.class
import android.telecom.InCallService;
@SuppressLint("StaticFieldLeak")
public static InCallService inCallService;
public static void speakerCall(boolean isSpeakerOn) {
if (isSpeakerOn){
inCallService.setAudioRoute(CallAudioState.ROUTE_SPEAKER);
Toast.makeText(inCallService, "Speaker on", Toast.LENGTH_SHORT).show();
}
else {
inCallService.setAudioRoute(CallAudioState.ROUTE_EARPIECE);
Toast.makeText(inCallService, "Speaker off", Toast.LENGTH_SHORT).show();
}
I create a default custom dialer, but as I tap on mute button during an active call, my call controls move from my default custom dialer to system default dialer.