This commit is contained in:
2020-09-22 11:15:45 +08:00
parent 124518a570
commit b0704fee96
8 changed files with 164 additions and 100 deletions

View File

@@ -324,54 +324,14 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
.skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this)) .skinManager(QMUISkinManager.defaultInstance(InCallMeetingActivity.this))
.edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20)); .edgeProtection(QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 20));
if (DBUser.mySelf.isManager) { if (DBUser.mySelf.isManager) {
if (d.isMute) { if(d.isBusy()) {
qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("取消禁言").onClick( if (d.isMute) {
new QMUIQuickAction.OnClickListener() { qa.addAction(new QMUIQuickAction.Action().icon(R.drawable.unmute).text("取消禁言").onClick(
@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(
new QMUIQuickAction.OnClickListener() { new QMUIQuickAction.OnClickListener() {
@Override @Override
public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
quickAction.dismiss(); quickAction.dismiss();
Net.unvmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { Net.unmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
@Override @Override
public void onRequestComplete(int cmd, String result, Object orgs) { public void onRequestComplete(int cmd, String result, Object orgs) {
getMembers(); getMembers();
@@ -385,12 +345,12 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
} }
)); ));
} else { } 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() { new QMUIQuickAction.OnClickListener() {
@Override @Override
public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
quickAction.dismiss(); quickAction.dismiss();
Net.vmuteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { Net.muteMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
@Override @Override
public void onRequestComplete(int cmd, String result, Object orgs) { public void onRequestComplete(int cmd, String result, Object orgs) {
getMembers(); 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() { new QMUIQuickAction.OnClickListener() {
@Override @Override
public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) {
quickAction.dismiss(); quickAction.dismiss();
Net.vidfloorMember4Group(callnumber, d.phone, new HttpUtl.CallBack() { QMUITipDialog dialog = UIUtl.toastLoading("");
Net.kickMember4Group(callnumber, d.phone, new HttpUtl.CallBack() {
@Override @Override
public void onRequestComplete(int cmd, String result, Object orgs) { public void onRequestComplete(int cmd, String result, Object orgs) {
UIUtl.toastS("移除分机成功");
getMembers(); getMembers();
dialog.dismiss();
} }
@Override @Override
public void onRequestError(int cmd, String result, Object orgs) { public void onRequestError(int cmd, String result, Object orgs) {
dialog.dismiss();
} }
}, null); }, 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( @Override
new QMUIQuickAction.OnClickListener() { public void onRequestError(int cmd, String result, Object orgs) {
@Override dialog.dismiss();
public void onClick(QMUIQuickAction quickAction, QMUIQuickAction.Action action, int position) { }
quickAction.dismiss(); }, null);
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);
} }
} ));
));
}
} }
qa.show(view); qa.show(view);
} }
@@ -770,7 +797,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
List<String> list = new ArrayList<>(); List<String> list = new ArrayList<>();
List<String> listPhone = new ArrayList<>(); List<String> listPhone = new ArrayList<>();
for (DBUser u : DBUser.allUser) { for (DBUser u : DBUser.allUser) {
if (!containMember(u.phone)) { if (!containMember(u.phone) || u.isOnline()) {
listPhone.add(u.phone); listPhone.add(u.phone);
list.add(u.phone + " | " + u.name); list.add(u.phone + " | " + u.name);
} }

View File

@@ -19,6 +19,7 @@ public class DBRoot {
case Net.CMD_getGroupMenbers: case Net.CMD_getGroupMenbers:
JSONObject o = JSONObject.parseObject(content); JSONObject o = JSONObject.parseObject(content);
DBGroup.onGetGroupMembers(o); DBGroup.onGetGroupMembers(o);
DBUser.onGetGroupMembers(o);
break; break;
default: default:
break; break;

View File

@@ -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) { public static DBUser getUser(String phoneNo) {
return mapUsers.get(phoneNo); return mapUsers.get(phoneNo);
} }

View File

@@ -4,11 +4,13 @@ import android.content.Context;
import android.content.DialogInterface; import android.content.DialogInterface;
import android.content.Intent; import android.content.Intent;
import android.graphics.Color; import android.graphics.Color;
import android.graphics.drawable.Drawable;
import android.media.AudioManager; import android.media.AudioManager;
import android.os.Build; import android.os.Build;
import android.os.Bundle; import android.os.Bundle;
import android.os.Handler; import android.os.Handler;
import android.os.Message; import android.os.Message;
import android.os.ParcelUuid;
import android.view.View; import android.view.View;
import android.view.ViewGroup; import android.view.ViewGroup;
import android.widget.AdapterView; import android.widget.AdapterView;
@@ -19,6 +21,7 @@ import android.widget.TextView;
import androidx.annotation.NonNull; import androidx.annotation.NonNull;
import androidx.annotation.RequiresApi; import androidx.annotation.RequiresApi;
import androidx.core.content.ContextCompat;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
@@ -213,6 +216,7 @@ public class MainActivity extends TrBaseActivity {
mTabSegment.notifyDataChanged(); mTabSegment.notifyDataChanged();
} }
@RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
private void initTabAndPager() { private void initTabAndPager() {
mContentViewPager.setAdapter(mPagerAdapter); mContentViewPager.setAdapter(mPagerAdapter);
// mContentViewPager.setCurrentItem(mDestPage.getPosition(), false); // mContentViewPager.setCurrentItem(mDestPage.getPosition(), false);
@@ -220,7 +224,7 @@ public class MainActivity extends TrBaseActivity {
for (int i = 0; i < headers.size(); i++) { for (int i = 0; i < headers.size(); i++) {
mTabSegment.addTab(tabBuilder.setText(headers.get(i).name).build(this)); 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( mTabSegment.setIndicator(new QMUITabIndicator(
QMUIDisplayHelper.dp2px(this, 2), false, true)); QMUIDisplayHelper.dp2px(this, 2), false, true));
mTabSegment.setMode(QMUITabSegment.MODE_SCROLLABLE); mTabSegment.setMode(QMUITabSegment.MODE_SCROLLABLE);
@@ -615,16 +619,7 @@ public class MainActivity extends TrBaseActivity {
} }
public void logout(View v) { public void logout(View v) {
SipEngine.getInstance().onLine = false; UIUtl.doLogout();
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);
finish(); finish();
} }

View File

@@ -72,7 +72,10 @@ public class Net {
} }
}); });
} }
UIUtl.toastI(result); // UIUtl.toastI(result);
if(cmd == CMD_getUsers) {
UIUtl.doLogout();
}
} }
}; };

View File

@@ -1,6 +1,8 @@
package com.tianrun.sipcall.ui; package com.tianrun.sipcall.ui;
import android.content.Context; import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.view.View; import android.view.View;
import android.widget.AdapterView; import android.widget.AdapterView;
import android.widget.GridView; 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.QMUIBottomSheet;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog; import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.tianrun.sipcall.App; 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; import java.util.List;
@@ -168,4 +173,21 @@ public class UIUtl {
} }
builder.build().show(); 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);
}
} }

View File

@@ -160,6 +160,7 @@ public class HttpUtl {
checkTokenFailed(retCode); checkTokenFailed(retCode);
return ""; return "";
} else { } else {
UIUtl.toastI("内部错误");
throw new RuntimeException(" responseCode :" + retCode); throw new RuntimeException(" responseCode :" + retCode);
} }
@@ -184,20 +185,7 @@ public class HttpUtl {
static void checkTokenFailed(int code) { static void checkTokenFailed(int code) {
if (code == 401) { if (code == 401) {
UIUtl.toastI("Token 失效"); UIUtl.doLogout();
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);
} }
} }
@@ -209,7 +197,7 @@ public class HttpUtl {
* @return 所代表远程资源的响应结果 * @return 所代表远程资源的响应结果
* @throws Exception * @throws Exception
*/ */
public static String doPost(String url, String param) { public static String doPost(String url, String param) throws Exception {
PrintWriter out = null; PrintWriter out = null;
BufferedReader in = null; BufferedReader in = null;
String result = ""; String result = "";
@@ -252,7 +240,12 @@ public class HttpUtl {
} }
int retCode = conn.getResponseCode(); int retCode = conn.getResponseCode();
checkTokenFailed(retCode); if(retCode == 401) {
checkTokenFailed(retCode);
} else {
UIUtl.toastI("内部错误");
throw new RuntimeException(" responseCode :" + retCode);
}
} catch (Exception e) { } catch (Exception e) {
e.printStackTrace(); e.printStackTrace();
Log.i("http", e.toString()); Log.i("http", e.toString());

View File

@@ -269,7 +269,7 @@
android:text="退出" android:text="退出"
android:textColor="#FFFFFF" android:textColor="#FFFFFF"
android:textSize="20sp" android:textSize="20sp"
android:visibility="invisible" /> android:visibility="visible" />
</LinearLayout> </LinearLayout>
</ScrollView> </ScrollView>