diff --git a/src/org/linphone/DialerActivity.java b/src/org/linphone/DialerActivity.java index 19416a8..658e778 --- a/src/org/linphone/DialerActivity.java +++ b/src/org/linphone/DialerActivity.java @@ -181,6 +181,7 @@ public class DialerActivity extends Activity implements LinphoneCoreListener { mCall = (ImageButton) findViewById(R.id.Call); mCall.setOnClickListener(new OnClickListener() { public void onClick(View v) { + LinphoneService.instance().set_audio_mode_incall(); LinphoneCore lLinphoneCore = LinphoneService.instance().getLinphoneCore(); if (lLinphoneCore.isInComingInvitePending()) { try { diff --git a/src/org/linphone/LinphoneService.java b/src/org/linphone/LinphoneService.java index bb7a21f..7ee5b9c --- a/src/org/linphone/LinphoneService.java +++ b/src/org/linphone/LinphoneService.java @@ -290,6 +290,7 @@ public class LinphoneService extends Service implements LinphoneCoreListener { lIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); lIntent.setClass(this, LinphoneActivity.class); startActivity(lIntent); + mAudioManager.setMode(AudioManager.MODE_RINGTONE); startRinging(); } if (mCurrentCallState == LinphoneCall.State.IncomingReceived) { @@ -297,6 +298,10 @@ public class LinphoneService extends Service implements LinphoneCoreListener { stopRinging(); //routeAudioToReceiver(); } + if (state == LinphoneCall.State.CallEnd || + state == LinphoneCall.State.Error) { + mAudioManager.setMode(AudioManager.MODE_NORMAL); + } mCurrentCallState=state; } public void show(LinphoneCore lc) { @@ -540,5 +545,15 @@ public class LinphoneService extends Service implements LinphoneCoreListener { } }); } + public void set_audio_mode_incall() { + try { + stopRinging(); + Thread.sleep(100); + mAudioManager.setMode(AudioManager.MODE_IN_CALL); + Thread.sleep(100); + } catch (InterruptedException e) { + /* ops */ + } + } }