From b0704fee965b4253df2d69f73316596c098f320c Mon Sep 17 00:00:00 2001 From: chenbin Date: Tue, 22 Sep 2020 11:15:45 +0800 Subject: [PATCH] mm --- .../sipcall/call/InCallMeetingActivity.java | 169 ++++++++++-------- .../java/com/tianrun/sipcall/db/DBRoot.java | 1 + .../java/com/tianrun/sipcall/db/DBUser.java | 23 +++ .../tianrun/sipcall/login/MainActivity.java | 17 +- .../java/com/tianrun/sipcall/net/Net.java | 5 +- .../java/com/tianrun/sipcall/ui/UIUtl.java | 22 +++ .../com/tianrun/sipcall/utils/HttpUtl.java | 25 +-- app/src/main/res/layout/activity_login.xml | 2 +- 8 files changed, 164 insertions(+), 100 deletions(-) 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 6b47dce..a1b9c17 100644 --- a/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/call/InCallMeetingActivity.java @@ -324,54 +324,14 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); if (DBUser.mySelf.isManager) { - if (d.isMute) { - 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, 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); - } - } - )); - } else { - 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, 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); - } - } - )); - } - - if (VIDEOSTATE) { - if (d.isVMute) { - qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.video).text("恢复视频").onClick( + if(d.isBusy()) { + if (d.isMute) { + 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.unvmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { + Net.unmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { getMembers(); @@ -385,12 +345,12 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList } )); } else { - qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unvideo).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) { quickAction.dismiss(); - Net.vmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { + Net.muteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { getMembers(); @@ -405,48 +365,115 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList )); } - qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.fullscreen).text("主界面").onClick( + if (VIDEOSTATE) { + if (d.isVMute) { + 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, 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); + } + } + )); + } else { + 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, 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(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); + } + } + )); + } + + 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() { + QMUITipDialog dialog = UIUtl.toastLoading(""); + Net.kickMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { @Override public void onRequestComplete(int cmd, String result, Object orgs) { + UIUtl.toastS("移除分机成功"); getMembers(); + dialog.dismiss(); } @Override public void onRequestError(int cmd, String result, Object orgs) { + dialog.dismiss(); } }, null); } } )); - } + } else if (d.isOnline()) { + //空闲的可以加入进来 + qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.add).text("加入会议").onClick( + new QMUIQuickAction.OnClickListener() { + @Override + public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { + quickAction.dismiss(); + QMUITipDialog dialog = UIUtl.toastLoading(""); + Net.addMember2Group(callnumber, d.phone, new HttpUtl.CallBack() { + @Override + public void onRequestComplete(int cmd, String result, Object orgs) { + UIUtl.toastS("加入会议成功"); + getMembers(); + dialog.dismiss(); + } - 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(); - QMUITipDialog dialog = UIUtl.toastLoading(""); - Net.kickMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { - @Override - public void onRequestComplete(int cmd, String result, Object orgs) { - UIUtl.toastS("移除分机成功"); - getMembers(); - dialog.dismiss(); - } - - @Override - public void onRequestError(int cmd, String result, Object orgs) { - dialog.dismiss(); - } - }, null); + @Override + public void onRequestError(int cmd, String result, Object orgs) { + dialog.dismiss(); + } + }, null); + } } - } - )); + )); + + } } qa.show(view); } @@ -770,7 +797,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList List list = new ArrayList<>(); List listPhone = new ArrayList<>(); for (DBUser u : DBUser.allUser) { - if (!containMember(u.phone)) { + if (!containMember(u.phone) || u.isOnline()) { listPhone.add(u.phone); list.add(u.phone + " | " + u.name); } diff --git a/app/src/main/java/com/tianrun/sipcall/db/DBRoot.java b/app/src/main/java/com/tianrun/sipcall/db/DBRoot.java index 8aaaacf..912bc3b 100644 --- a/app/src/main/java/com/tianrun/sipcall/db/DBRoot.java +++ b/app/src/main/java/com/tianrun/sipcall/db/DBRoot.java @@ -19,6 +19,7 @@ public class DBRoot { case Net.CMD_getGroupMenbers: JSONObject o = JSONObject.parseObject(content); DBGroup.onGetGroupMembers(o); + DBUser.onGetGroupMembers(o); break; default: break; 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 3c142f8..c596599 100644 --- a/app/src/main/java/com/tianrun/sipcall/db/DBUser.java +++ b/app/src/main/java/com/tianrun/sipcall/db/DBUser.java @@ -72,6 +72,29 @@ public class DBUser { } } + public static void refreshUser(DBUser user) { + for(int i=0; i < allUser.size();i++) { + DBUser u = allUser.get(i); + if(u.phone.equals(user.phone)) { + allUser.set(i, user); + mapUsers.put(user.phone, user); + return; + } + } + allUser.add(user); + mapUsers.put(user.phone, user); + } + + public static void onGetGroupMembers(JSONObject content) { + DBGroup group = new DBGroup(); + group.head = new DBHead(content); + JSONArray array = content.getJSONArray("members_msg"); + for (Object o : array) { + DBUser u = new DBUser((JSONObject) o); + refreshUser(u); + } + } + public static DBUser getUser(String phoneNo) { return mapUsers.get(phoneNo); } 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 98ff0d1..cbff21d 100644 --- a/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java +++ b/app/src/main/java/com/tianrun/sipcall/login/MainActivity.java @@ -4,11 +4,13 @@ import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.graphics.Color; +import android.graphics.drawable.Drawable; import android.media.AudioManager; import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.os.Message; +import android.os.ParcelUuid; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; @@ -19,6 +21,7 @@ import android.widget.TextView; import androidx.annotation.NonNull; import androidx.annotation.RequiresApi; +import androidx.core.content.ContextCompat; import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.ViewPager; @@ -213,6 +216,7 @@ public class MainActivity extends TrBaseActivity { mTabSegment.notifyDataChanged(); } + @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP) private void initTabAndPager() { mContentViewPager.setAdapter(mPagerAdapter); // mContentViewPager.setCurrentItem(mDestPage.getPosition(), false); @@ -220,7 +224,7 @@ public class MainActivity extends TrBaseActivity { for (int i = 0; i < headers.size(); i++) { mTabSegment.addTab(tabBuilder.setText(headers.get(i).name).build(this)); } - int space = QMUIDisplayHelper.dp2px(this, 16); + int space = QMUIDisplayHelper.dp2px(this, 17); mTabSegment.setIndicator(new QMUITabIndicator( QMUIDisplayHelper.dp2px(this, 2), false, true)); mTabSegment.setMode(QMUITabSegment.MODE_SCROLLABLE); @@ -615,16 +619,7 @@ public class MainActivity extends TrBaseActivity { } public void logout(View v) { - SipEngine.getInstance().onLine = false; - SipEngine.getInstance().isRelogin = true; -// SipEngine.getInstance().Unregister(); -// SipEngine.getInstance().stop(); - Intent intent = new Intent(App.getContext(), LoginActivity.class); - Bundle bundle = new Bundle(); - bundle.putBoolean("donotAutoLogin", true); - intent.putExtras(bundle); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - startActivity(intent); + UIUtl.doLogout(); finish(); } 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 c95a5b4..c6cb373 100644 --- a/app/src/main/java/com/tianrun/sipcall/net/Net.java +++ b/app/src/main/java/com/tianrun/sipcall/net/Net.java @@ -72,7 +72,10 @@ public class Net { } }); } - UIUtl.toastI(result); +// UIUtl.toastI(result); + if(cmd == CMD_getUsers) { + UIUtl.doLogout(); + } } }; diff --git a/app/src/main/java/com/tianrun/sipcall/ui/UIUtl.java b/app/src/main/java/com/tianrun/sipcall/ui/UIUtl.java index 7eefc23..bd09828 100644 --- a/app/src/main/java/com/tianrun/sipcall/ui/UIUtl.java +++ b/app/src/main/java/com/tianrun/sipcall/ui/UIUtl.java @@ -1,6 +1,8 @@ package com.tianrun.sipcall.ui; import android.content.Context; +import android.content.Intent; +import android.os.Bundle; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; @@ -12,6 +14,9 @@ import com.qmuiteam.qmui.skin.QMUISkinManager; import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.tianrun.sipcall.App; +import com.tianrun.sipcall.SipEngine; +import com.tianrun.sipcall.login.LoginActivity; +import com.tianrun.sipcall.utils.HttpUtl; import java.util.List; @@ -168,4 +173,21 @@ public class UIUtl { } builder.build().show(); } + + public static void doLogout() { + UIUtl.toastI("Token 失效"); + HttpUtl.token = null; + ActivityMgr.hideAll(); + SipEngine.getInstance().onLine = false; + SipEngine.getInstance().isRelogin = true; +// SipEngine.getInstance().Unregister(); +// SipEngine.getInstance().stop(); + Intent intent = new Intent(App.getContext(), LoginActivity.class); + Bundle bundle = new Bundle(); + bundle.putBoolean("donotAutoLogin", true); + intent.putExtras(bundle); + intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); +// ActivityMgr.topActivity.startActivity(intent); + App.getInstance().startActivity(intent); + } } diff --git a/app/src/main/java/com/tianrun/sipcall/utils/HttpUtl.java b/app/src/main/java/com/tianrun/sipcall/utils/HttpUtl.java index 8af8213..e89f3af 100644 --- a/app/src/main/java/com/tianrun/sipcall/utils/HttpUtl.java +++ b/app/src/main/java/com/tianrun/sipcall/utils/HttpUtl.java @@ -160,6 +160,7 @@ public class HttpUtl { checkTokenFailed(retCode); return ""; } else { + UIUtl.toastI("内部错误"); throw new RuntimeException(" responseCode :" + retCode); } @@ -184,20 +185,7 @@ public class HttpUtl { static void checkTokenFailed(int code) { if (code == 401) { - UIUtl.toastI("Token 失效"); - token = null; - ActivityMgr.hideAll(); - SipEngine.getInstance().onLine = false; - SipEngine.getInstance().isRelogin = true; -// SipEngine.getInstance().Unregister(); -// SipEngine.getInstance().stop(); - Intent intent = new Intent(App.getContext(), LoginActivity.class); - Bundle bundle = new Bundle(); - bundle.putBoolean("donotAutoLogin", true); - intent.putExtras(bundle); - intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); -// ActivityMgr.topActivity.startActivity(intent); - App.getInstance().startActivity(intent); + UIUtl.doLogout(); } } @@ -209,7 +197,7 @@ public class HttpUtl { * @return 所代表远程资源的响应结果 * @throws Exception */ - public static String doPost(String url, String param) { + public static String doPost(String url, String param) throws Exception { PrintWriter out = null; BufferedReader in = null; String result = ""; @@ -252,7 +240,12 @@ public class HttpUtl { } int retCode = conn.getResponseCode(); - checkTokenFailed(retCode); + if(retCode == 401) { + checkTokenFailed(retCode); + } else { + UIUtl.toastI("内部错误"); + throw new RuntimeException(" responseCode :" + retCode); + } } catch (Exception e) { e.printStackTrace(); Log.i("http", e.toString()); diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index 2a07051..9826982 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -269,7 +269,7 @@ android:text="退出" android:textColor="#FFFFFF" android:textSize="20sp" - android:visibility="invisible" /> + android:visibility="visible" />