This commit is contained in:
chenbin
2021-05-06 16:07:22 +08:00
parent de8bf0b61c
commit eb6c7ddab8
3 changed files with 70 additions and 24 deletions

View File

@@ -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();
}
}
}

View File

@@ -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;
@@ -50,6 +51,7 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
private SMPercentFrameLayout localRenderLayout;
private SMPercentFrameLayout remoteRenderLayout;
private ImageButton incall_answer, incall_hangup;
private Ringtone ringtone;
private TextView show;
QMUITabSegment mTabSegment;
ViewPager mContentViewPager;
@@ -191,15 +193,22 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
}
show.setText(callnumber + callstate);
if (incall_answer.getVisibility() == View.VISIBLE && selfCall) {
incall_answer.setVisibility(View.GONE);
SipEngine.getInstance().answer(callid);
SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
answer();
} else {
SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
AutoAnwser(); //5秒后自动接听
}
}
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();
@@ -211,11 +220,14 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
stopVideoStream(true);
super.onDestroy();
SipEngine.getInstance().hangup(callid);
handler_CallActivity.removeCallbacks(doAutoAnwser);
handler_CallActivity = null;
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
ringtone = null;
}
/**
@@ -275,6 +287,9 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
stopVideoStream(true);
finish();
break;
case -2:
answer();
break;
}
return true;
}
@@ -332,15 +347,20 @@ public class InCallActivity extends TrBaseActivity implements OnClickListener {
if (SipEngine.callPagesConfig.size() == 0) {
finish();
}
SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
break;
case R.id.incall_answer:
incall_answer.setVisibility(View.GONE);
SipEngine.getInstance().answer(callid);
SipEngine.getInstance().StopdefaultCallMediaPlayer(this);
answer();
break;
}
}
public void answer(){
incall_answer.setVisibility(View.GONE);
SipEngine.getInstance().answer(callid);
SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
handler_CallActivity.removeCallbacks(doAutoAnwser);
}
public void ShowVideoView(boolean show) {
if (show) {

View File

@@ -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;
@@ -87,6 +88,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
public static Intent incallIntent;
private boolean isinited = false;
private Ringtone ringtone;
TrAdapter adapterUser;
@@ -526,15 +528,23 @@ 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().StopdefaultCallMediaPlayer(this);
SipEngine.getInstance().answer(callid);
answer();
} else {
SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
ringtone = SipEngine.getInstance().PlaydefaultCallMediaPlayer(this);
AutoAnwser(); //5秒后自动接听
}
}
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();
@@ -547,12 +557,15 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
super.onDestroy();
SipEngine.getInstance().hangup(callid);
handler_CallActivity.removeCallbacks(getMemberRunner);
handler_CallActivity.removeCallbacks(doAutoAnwser);
handler_CallActivity = null;
if (wakeLock != null) {
wakeLock.release();
wakeLock = null;
}
SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
ringtone = null;
}
/**
@@ -621,6 +634,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
case -1:
getMembers();
break;
case -2:
answer();
break;
}
return true;
}
@@ -683,14 +699,10 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
if (SipEngine.callPagesConfig.size() == 0) {
finish();
}
SipEngine.getInstance().StopdefaultCallMediaPlayer(ringtone);
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(this);
answer();
break;
case R.id.incall_mute:
muteAll(v);
@@ -701,6 +713,16 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
}
}
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);
handler_CallActivity.removeCallbacks(doAutoAnwser);
}
public void muteAll(View view) {
QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),