From 3b28584e4c875c5202253b04df457e017398d963 Mon Sep 17 00:00:00 2001 From: chenbin <> Date: Thu, 6 May 2021 17:28:15 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E4=B8=8D=E5=B8=A6=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E6=8E=A5=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/tianrun/sipcall/SipEngine.java | 14 +++++++++----- .../com/tianrun/sipcall/call/InCallActivity.java | 13 +++++++++---- .../sipcall/call/InCallMeetingActivity.java | 14 ++++++++++---- 3 files changed, 28 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/tianrun/sipcall/SipEngine.java b/app/src/main/java/com/tianrun/sipcall/SipEngine.java index 1dfdb81..fa41607 100644 --- a/app/src/main/java/com/tianrun/sipcall/SipEngine.java +++ b/app/src/main/java/com/tianrun/sipcall/SipEngine.java @@ -336,14 +336,18 @@ public class SipEngine implements BluetelInterface { * * @throws Exception */ - public void PlaydefaultCallMediaPlayer(Context context) { + public Ringtone PlaydefaultCallMediaPlayer(Context context) { Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); Ringtone r = RingtoneManager.getRingtone(context, notification); r.play(); + return r; } - public void StopdefaultCallMediaPlayer(Context context) { - Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); - Ringtone r = RingtoneManager.getRingtone(context, notification); - r.stop(); + public void StopdefaultCallMediaPlayer(Ringtone r) { +// Uri notification = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_RINGTONE); +// Ringtone r = RingtoneManager.getRingtone(context, notification); +// r.stop(); + if(r != null) { + r.stop(); + } } } diff --git a/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java b/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java index 4a9f095..839048a 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java @@ -6,6 +6,7 @@ import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; import android.content.Intent; +import android.media.Ringtone; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -63,6 +64,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { private boolean selfCall = false; private boolean VIDEOSTATE = false; public static Intent incallIntent; + private Ringtone ringtone; public String[] screenTyps = {"经典模式", "均分模式", "远程全屏", "本地全屏"}; @@ -186,6 +188,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { super.onResume(); if (callstate.equals("来电")) { incall_answer.setVisibility(View.VISIBLE); + ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this); } else { incall_answer.setVisibility(View.GONE); } @@ -193,9 +196,8 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { if (incall_answer.getVisibility() == View.VISIBLE && selfCall) { incall_answer.setVisibility(View.GONE); SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(this); - } else { - SipEngine.getInstance().PlaydefaultCallMediaPlayer(this); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; } } @@ -210,6 +212,8 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { protected void onDestroy() { stopVideoStream(true); super.onDestroy(); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; SipEngine.getInstance().hangup(callid); handler_CallActivity = null; if (wakeLock != null) { @@ -336,7 +340,8 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { case R.id.incall_answer: incall_answer.setVisibility(View.GONE); SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(this); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; break; } } diff --git a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java index a46038e..03ab22c 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java @@ -7,6 +7,7 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; +import android.media.Ringtone; import android.os.Bundle; import android.os.Handler; import android.os.Message; @@ -85,6 +86,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList private boolean selfCall = false; private boolean VIDEOSTATE = false; public static Intent incallIntent; + private Ringtone ringtone; + private boolean isinited = false; @@ -512,6 +515,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList incall_answer.setVisibility(View.VISIBLE); incall_mute.setVisibility(View.GONE); incall_muteVideo.setVisibility(View.GONE); + ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this); } else { incall_answer.setVisibility(View.GONE); if (DBUser.mySelf != null && DBUser.mySelf.isManager) { @@ -527,10 +531,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList //控件显示号码,来电,去电,通话中... if (incall_answer.getVisibility() == View.VISIBLE && selfCall) { incall_answer.setVisibility(View.GONE); - SipEngine.getInstance().StopdefaultCallMediaPlayer(this); SipEngine.getInstance().answer(callid); - } else { - SipEngine.getInstance().PlaydefaultCallMediaPlayer(this); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; } } @@ -545,6 +548,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList protected void onDestroy() { stopVideoStream(true); super.onDestroy(); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; SipEngine.getInstance().hangup(callid); handler_CallActivity.removeCallbacks(getMemberRunner); handler_CallActivity = null; @@ -690,7 +695,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList incall_mute.setVisibility(View.VISIBLE); } SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(this); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; break; case R.id.incall_mute: muteAll(v); From 7961a6b4629d182f701d5e36190e6b2e9bc10ee4 Mon Sep 17 00:00:00 2001 From: chenbin <> Date: Thu, 6 May 2021 17:47:20 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=B8=A6=E8=87=AA=E5=8A=A8=E6=8E=A5?= =?UTF-8?q?=E5=90=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tianrun/sipcall/call/InCallActivity.java | 46 +++++++++++++++---- .../sipcall/call/InCallMeetingActivity.java | 46 ++++++++++++++----- 2 files changed, 71 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java b/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java index 839048a..6c61984 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallActivity.java @@ -193,15 +193,30 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { incall_answer.setVisibility(View.GONE); } show.setText(callnumber + callstate); - if (incall_answer.getVisibility() == View.VISIBLE && selfCall) { - incall_answer.setVisibility(View.GONE); - SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); - ringtone = null; + if (incall_answer.getVisibility() == View.VISIBLE){ + if(selfCall) { +// incall_answer.setVisibility(View.GONE); +// SipEngine.getInstance().answer(callid); +// SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); +// ringtone = null; + answer(); + } else { + AutoAnwser(); + } } } + static void AutoAnwser() { + handler_CallActivity.postDelayed(doAutoAnwser, 5000); + } + static Runnable doAutoAnwser = new Runnable() { + @Override + public void run() { + CONS.SENDMESSAGETO(handler_CallActivity, -2, null); + } + }; + @Override protected void onPause() { super.onPause(); @@ -215,6 +230,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); ringtone = null; SipEngine.getInstance().hangup(callid); + handler_CallActivity.removeCallbacks(doAutoAnwser); handler_CallActivity = null; if (wakeLock != null) { wakeLock.release(); @@ -279,6 +295,9 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { stopVideoStream(true); finish(); break; + case -2: + answer(); + break; } return true; } @@ -338,14 +357,23 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener { } break; case R.id.incall_answer: - incall_answer.setVisibility(View.GONE); - SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); - ringtone = null; +// incall_answer.setVisibility(View.GONE); +// SipEngine.getInstance().answer(callid); +// SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); +// ringtone = null; + answer(); break; } } + public void answer() { + incall_answer.setVisibility(View.GONE); + SipEngine.getInstance().answer(callid); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; + handler_CallActivity.removeCallbacks(doAutoAnwser); + } + public void ShowVideoView(boolean show) { if (show) { diff --git a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java index 03ab22c..1c8461c 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java @@ -529,14 +529,28 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } show.setText(callnumber + callstate); //控件显示号码,来电,去电,通话中... - if (incall_answer.getVisibility() == View.VISIBLE && selfCall) { - incall_answer.setVisibility(View.GONE); - SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); - ringtone = null; + if (incall_answer.getVisibility() == View.VISIBLE ) { + if(selfCall) { +// incall_answer.setVisibility(View.GONE); +// SipEngine.getInstance().answer(callid); +// SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); +// ringtone = null; + answer(); + } else { + AutoAnwser(); + } } } + static void AutoAnwser() { + handler_CallActivity.postDelayed(doAutoAnwser, 5000); + } + static Runnable doAutoAnwser = new Runnable() { + @Override + public void run() { + CONS.SENDMESSAGETO(handler_CallActivity, -2, null); + } + }; @Override protected void onPause() { @@ -552,6 +566,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList ringtone = null; SipEngine.getInstance().hangup(callid); handler_CallActivity.removeCallbacks(getMemberRunner); + handler_CallActivity.removeCallbacks(doAutoAnwser); handler_CallActivity = null; if (wakeLock != null) { wakeLock.release(); @@ -626,6 +641,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList case -1: getMembers(); break; + case -2: + answer(); + break; } return true; } @@ -690,13 +708,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } break; case R.id.incall_answer: - incall_answer.setVisibility(View.GONE); - if (DBUser.mySelf != null && DBUser.mySelf.isManager) { - incall_mute.setVisibility(View.VISIBLE); - } - SipEngine.getInstance().answer(callid); - SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); - ringtone = null; + answer(); break; case R.id.incall_mute: muteAll(v); @@ -706,6 +718,16 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList break; } } + public void answer() { + incall_answer.setVisibility(View.GONE); + if (DBUser.mySelf != null && DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + } + SipEngine.getInstance().answer(callid); + SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone); + ringtone = null; + handler_CallActivity.removeCallbacks(doAutoAnwser); + } public void muteAll(View view) { QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,