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 1c25cc7..dc06a66 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java @@ -2,7 +2,6 @@ package com.tianrun.sipcall.call; import android.annotation.SuppressLint; -import android.app.Activity; import android.app.KeyguardManager; import android.content.Context; import android.content.DialogInterface; @@ -39,10 +38,8 @@ import com.qmuiteam.qmui.widget.tab.QMUITabIndicator; import com.qmuiteam.qmui.widget.tab.QMUITabSegment; import com.tianrun.sipcall.R; import com.tianrun.sipcall.SipEngine; -import com.tianrun.sipcall.db.DBGroup; import com.tianrun.sipcall.db.DBUser; import com.tianrun.sipcall.db.UserMeetingViews; -import com.tianrun.sipcall.db.UserViews; import com.tianrun.sipcall.net.Net; import com.tianrun.sipcall.ui.TrAdapter; import com.tianrun.sipcall.ui.TrBaseActivity; @@ -70,6 +67,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList private SMPercentFrameLayout remoteRenderLayout; private ImageButton incall_answer, incall_hangup; private View imageButtonAddUser; + ImageButton incall_mute; + ImageButton incall_muteVideo; private TextView show; GridView gridUser; QMUITabSegment mTabSegment; @@ -166,6 +165,13 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList remoteRenderLayout = (SMPercentFrameLayout) findViewById(R.id.remote_video_layout); engineServer = new EngineServer(localRender, remoteRender, localRenderLayout, remoteRenderLayout, true); + incall_mute = findViewById(R.id.incall_mute); + incall_mute.setOnClickListener(this); + incall_muteVideo = findViewById(R.id.incall_muteVideo); + incall_muteVideo.setOnClickListener(this); + incall_mute.setVisibility(View.INVISIBLE); + incall_muteVideo.setVisibility(View.INVISIBLE); + mTabSegment = findViewById(R.id.ScreenType); mContentViewPager = findViewById(R.id.contentViewPager); imageButtonAddUser = findViewById(R.id.imageButtonAddUser); @@ -253,6 +259,8 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } else { views = (UserMeetingViews) (prefabView.getTag()); } + + views.memberStatus3.setVisibility(View.GONE); DBUser d = (DBUser) data; views.textViewName.setText(d.name); views.textViewNum.setText(d.phone); @@ -272,6 +280,22 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList views.imageViewPhoneIcon.setVisibility(View.VISIBLE); views.imageViewAddflag.setVisibility(View.INVISIBLE); } + + if (d.isMute) { + views.memberStatus1.setImageResource(R.drawable.mute); + } else { + views.memberStatus1.setImageResource(R.drawable.unmute); + } + if (VIDEOSTATE) { + views.memberStatus2.setVisibility(View.VISIBLE); + if (d.isVMute) { + views.memberStatus2.setImageResource(R.drawable.unvideo); + } else { + views.memberStatus2.setImageResource(R.drawable.video); + } + } else { + views.memberStatus2.setVisibility(View.GONE); + } } @Override @@ -289,7 +313,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); if (DBUser.mySelf.isManager) { if (d.isMute) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("取消禁言").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("取消禁言").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -308,7 +332,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } )); } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("禁言").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.mute).text("禁言").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -330,7 +354,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList if (VIDEOSTATE) { if (d.isVMute) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("回复视频").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.video).text("恢复视频").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -349,7 +373,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } )); } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("停止视频").onClick( + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unvideo).text("停止视频").onClick( new QMUIQuickAction.OnClickListener() { @Override public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { @@ -369,45 +393,24 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList )); } - if (d.isLayout) { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("恢复布局").onClick( - new QMUIQuickAction.OnClickListener() { - @Override - public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { - quickAction.dismiss(); - Net.vidlayoutMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - getMembers(); - } + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.fullscreen).text("切到主界面").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } - @Override - public void onRequestError(int cmd, String result, Object orgs) { - } - }, null); - } + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); } - )); - } else { - qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("切换布局").onClick( - new QMUIQuickAction.OnClickListener() { - @Override - public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { - quickAction.dismiss(); - Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - getMembers(); - } - - @Override - public void onRequestError(int cmd, String result, Object orgs) { - } - }, null); - } - } - )); - } + } + )); } qa.addAction(new QMUIQuickAction.Action().icon(android.R.drawable.ic_delete).text("移除").onClick( @@ -454,8 +457,18 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList super.onResume(); if (callstate.equals("来电")) { incall_answer.setVisibility(View.VISIBLE); + incall_mute.setVisibility(View.GONE); + incall_muteVideo.setVisibility(View.GONE); } else { incall_answer.setVisibility(View.GONE); + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + if (VIDEOSTATE) { + incall_muteVideo.setVisibility(View.VISIBLE); + } else { + incall_muteVideo.setVisibility(View.GONE); + } + } } show.setText(callnumber + callstate); //控件显示号码,来电,去电,通话中... @@ -585,6 +598,11 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList */ engineServer.startVideoStream(this, server, rport, lport, payload, BitRate, FrameRate, w, h, c, true); VIDEOSTATE = true; + + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + incall_muteVideo.setVisibility(View.VISIBLE); + } } } @@ -600,11 +618,113 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList break; case R.id.incall_answer: incall_answer.setVisibility(View.GONE); + if (DBUser.mySelf.isManager) { + incall_mute.setVisibility(View.VISIBLE); + } SipEngine.getInstance().answer(callid); break; + case R.id.incall_mute: + muteAll(v); + break; + case R.id.incall_muteVideo: + videomuteAll(v); + break; } } + public void muteAll(View view) { + QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this, + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56), + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56)) + .shadow(true) + .dimAmount(0.5f) + .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) + .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.mute).text("全部禁言").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.muteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("全部取消禁言").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.unmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.show(view); + } + + public void videomuteAll(View view) { + QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this, + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56), + QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56)) + .shadow(true) + .dimAmount(0.5f) + .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) + .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unvideo).text("全部关闭视频").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.vmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.video).text("全部恢复视频").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + Net.unvmuteMember4Group(callnumber, "all", new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + getMembers(); + } + + @Override + public void onRequestError(int cmd, String result, Object orgs) { + } + }, null); + } + } + )); + qa.show(view); + } public void ShowVideoView(boolean show) { if (show) { diff --git a/app/src/main/java/com/tianrun/sipcall/db/DBUser.java b/app/src/main/java/com/tianrun/sipcall/db/DBUser.java index 56aa42b..1dbff53 100644 --- a/app/src/main/java/com/tianrun/sipcall/db/DBUser.java +++ b/app/src/main/java/com/tianrun/sipcall/db/DBUser.java @@ -36,11 +36,15 @@ public class DBUser { this.phone = d.getString("extn"); this.status = d.getString("sip_state"); String weight = d.getString("weight"); - if(weight != null) { + if (weight != null) { this.isManager = weight.equals("1"); } else { this.isManager = false; } + String ifMute = d.getString("ifMute"); + this.isMute = ifMute != null ? ifMute.equals("true") : false; + String ifVMute = d.getString("ifVMute"); + this.isVMute = ifVMute != null ? ifVMute.equals("true") : false; } public boolean isBusy() { diff --git a/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java b/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java index 60986b7..7828081 100644 --- a/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/login/LoginActivity.java @@ -344,17 +344,17 @@ public class LoginActivity extends TrBaseActivity { } public void exit2(View view) { - Net.login(this.name, this.pw, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - ActivityMgr.sendMsg(CONS.LOGIN, null); - } - - @Override - public void onRequestError(int cmd, String result, Object orgs) { - UIUtl.toastI("取得token失败"); - } - }, null); +// Net.login(this.name, this.pw, new HttpUtl.CallBack() { +// @Override +// public void onRequestComplete(int cmd, String result, Object orgs) { +// ActivityMgr.sendMsg(CONS.LOGIN, null); +// } +// +// @Override +// public void onRequestError(int cmd, String result, Object orgs) { +// UIUtl.toastI("取得token失败"); +// } +// }, null); } } diff --git a/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java b/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java index 3033fb4..bd8db94 100644 --- a/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java @@ -404,7 +404,7 @@ public class MainActivity extends TrBaseActivity { public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { quickAction.dismiss(); QMUITipDialog dialog = UIUtl.toastLoading(""); - Net.kickMember4Group(currSelectData.id, d.phone, new HttpUtl.CallBack() { + Net.kickMember4Group(currSelectData.audio_code, d.phone, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { UIUtl.toastS("移除分机成功"); @@ -478,7 +478,7 @@ public class MainActivity extends TrBaseActivity { members = members + phNum + ","; } - Net.addMember2Group(currSelectData.id, members, new HttpUtl.CallBack() { + Net.addMember2Group(currSelectData.audio_code, members, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { Net.getGroupMenbers(currSelectData.id, null, currSelectData.id); diff --git a/app/src/main/java/com/tianrun/sipcall/net/Net.java b/app/src/main/java/com/tianrun/sipcall/net/Net.java index be989f3..b72a9f7 100644 --- a/app/src/main/java/com/tianrun/sipcall/net/Net.java +++ b/app/src/main/java/com/tianrun/sipcall/net/Net.java @@ -128,7 +128,6 @@ public class Net { HttpUtl.doPostAsyn(url, _params, _callback, CMD_deleteGroup, params); } - //TODO:确认下参数 public static void addMember2Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) { String url = "http://" + ip + ":" + port + "/api/conferences/conference/add"; String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members; @@ -136,7 +135,6 @@ public class Net { HttpUtl.doPostAsyn(url, _params, _callback, CMD_addUser2Group, params); } - //TODO:确认下参数 public static void kickMember4Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) { String url = "http://" + ip + ":" + port + "/api/conferences/conference/update"; String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=kick"; diff --git a/app/src/main/res/drawable-hdpi/fullscreen.png b/app/src/main/res/drawable-hdpi/fullscreen.png new file mode 100644 index 0000000..a0b3f21 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/fullscreen.png differ diff --git a/app/src/main/res/drawable-hdpi/kick.png b/app/src/main/res/drawable-hdpi/kick.png new file mode 100644 index 0000000..3619f0d Binary files /dev/null and b/app/src/main/res/drawable-hdpi/kick.png differ diff --git a/app/src/main/res/drawable-hdpi/mute.png b/app/src/main/res/drawable-hdpi/mute.png new file mode 100644 index 0000000..cccb336 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/mute.png differ diff --git a/app/src/main/res/drawable-hdpi/unmute.png b/app/src/main/res/drawable-hdpi/unmute.png new file mode 100644 index 0000000..2dd6e10 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/unmute.png differ diff --git a/app/src/main/res/drawable-hdpi/unvideo.png b/app/src/main/res/drawable-hdpi/unvideo.png new file mode 100644 index 0000000..d66af94 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/unvideo.png differ diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2621c5f..1fdefe8 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -91,7 +91,7 @@ android:textSize="20sp" />