This commit is contained in:
2020-09-13 09:35:07 +08:00
parent 8c5c97c549
commit 56485ff0dd
9 changed files with 452 additions and 33 deletions

View File

@@ -5,6 +5,7 @@ import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.KeyguardManager;
import android.content.Context;
import android.content.DialogInterface;
import android.content.Intent;
import android.graphics.Color;
import android.os.Bundle;
@@ -28,6 +29,8 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.qmuiteam.qmui.skin.QMUISkinManager;
import com.qmuiteam.qmui.util.QMUIDisplayHelper;
import com.qmuiteam.qmui.widget.dialog.QMUIDialog;
import com.qmuiteam.qmui.widget.dialog.QMUIDialogAction;
import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
import com.qmuiteam.qmui.widget.popup.QMUIPopups;
import com.qmuiteam.qmui.widget.popup.QMUIQuickAction;
@@ -36,7 +39,9 @@ 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;
@@ -64,6 +69,7 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
private SMPercentFrameLayout localRenderLayout;
private SMPercentFrameLayout remoteRenderLayout;
private ImageButton incall_answer, incall_hangup;
private View imageButtonAddUser;
private TextView show;
GridView gridUser;
QMUITabSegment mTabSegment;
@@ -72,11 +78,13 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
private EngineServer engineServer;
private int callid = -1;//当前通话的id
private String meetingName = "";
private String callnumber = "未知";
private String callstate = "未知";
private int calltype = 0; //0音频1视频
private boolean VIDEOSTATE = false;
public static Intent incallIntent;
TrAdapter adapterUser;
List<DBUser> allUsers = new ArrayList<>();
@@ -160,6 +168,12 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
mTabSegment = findViewById(R.id.ScreenType);
mContentViewPager = findViewById(R.id.contentViewPager);
imageButtonAddUser = findViewById(R.id.imageButtonAddUser);
if (DBUser.mySelf.isManager) {
imageButtonAddUser.setVisibility(View.VISIBLE);
} else {
imageButtonAddUser.setVisibility(View.INVISIBLE);
}
}
private void initTabAndPager() {
@@ -195,18 +209,21 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
}
});
}
public void getMembers()
{
public void getMembers() {
Net.getGroupMenbers(callnumber, new HttpUtl.CallBack() {
@Override
public void onRequestComplete(int cmd, String result, Object orgs) {
JSONObject jo = JSONObject.parseObject(result);
meetingName = jo.getString("topic");
JSONArray array = jo.getJSONArray("members_msg");
allUsers.clear();
for(Object o:array) {
allUsers.add(new DBUser((JSONObject)o));
for (Object o : array) {
allUsers.add(new DBUser((JSONObject) o));
}
setUsers();
show.setText(meetingName + " " + callstate);
}
@Override
@@ -218,20 +235,23 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
public void setUsers() {
if (adapterUser == null) {
adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user, allUsers, new TrAdapter.Callback() {
adapterUser = UIUtl.setList(this, gridUser, R.layout.list_item_user_meeting, allUsers, new TrAdapter.Callback() {
@Override
public void initCallback(Object data, int position, View prefabView, ViewGroup parent) {
UserViews views = null;
UserMeetingViews views = null;
if (prefabView.getTag() == null) {
views = new UserViews();
views = new UserMeetingViews();
views.textViewName = prefabView.findViewById(R.id.textViewName);
views.textViewNum = prefabView.findViewById(R.id.textViewNum);
views.imageViewStatus = prefabView.findViewById(R.id.imageViewStatus);
views.imageViewAddflag = prefabView.findViewById(R.id.imageViewAddflag);
views.imageViewPhoneIcon = prefabView.findViewById(R.id.imageView3PhoneIcon);
views.memberStatus1 = prefabView.findViewById(R.id.memberStatus1);
views.memberStatus2 = prefabView.findViewById(R.id.memberStatus2);
views.memberStatus3 = prefabView.findViewById(R.id.memberStatus3);
prefabView.setTag(views);
} else {
views = (UserViews) (prefabView.getTag());
views = (UserMeetingViews) (prefabView.getTag());
}
DBUser d = (DBUser) data;
views.textViewName.setText(d.name);
@@ -256,6 +276,9 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
@Override
public void clickCallback(Object data, AdapterView<?> parent, View view, int position, long id) {
if (!DBUser.mySelf.isManager) {
return;
}
DBUser d = (DBUser) data;
QMUIQuickAction qa = QMUIPopups.quickAction(InCallMeetingActivity.this,
QMUIDisplayHelper.dp2px(InCallMeetingActivity.this, 56),
@@ -265,6 +288,128 @@ 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(android.R.drawable.ic_delete).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(android.R.drawable.ic_delete).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(android.R.drawable.ic_delete).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(android.R.drawable.ic_delete).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);
}
}
));
}
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();
}
@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(
new QMUIQuickAction.OnClickListener() {
@Override
@@ -471,6 +616,85 @@ public class InCallMeetingActivity extends TrBaseActivity implements OnClickList
}
}
public void addMember(View v) {
showUsersMultiChoiceDialog();
}
boolean containMember(String phone) {
for (DBUser u : allUsers) {
if (u.phone.equals(phone)) {
return true;
}
}
return false;
}
private void showUsersMultiChoiceDialog() {
List<String> list = new ArrayList<>();
List<String> listPhone = new ArrayList<>();
for (DBUser u : DBUser.allUser) {
if (!containMember(u.phone)) {
listPhone.add(u.phone);
list.add(u.phone + " | " + u.name);
}
}
if (list.size() == 0) {
UIUtl.toastI("所有分机已经添加");
return;
}
final String[] items = new String[list.size()];
list.toArray(items);
final QMUIDialog.MultiCheckableDialogBuilder builder = new QMUIDialog.MultiCheckableDialogBuilder(this)
.setTitle("选择要加入的分机号")
// .setCheckedItems(new int[]{1, 3})
.setSkinManager(QMUISkinManager.defaultInstance(this))
.addItems(items, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder.addAction("取消", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
dialog.dismiss();
}
});
builder.addAction("确定", new QMUIDialogAction.ActionListener() {
@Override
public void onClick(QMUIDialog dialog, int index) {
int[] selectIndexs = builder.getCheckedItemIndexes();
if (selectIndexs.length > 0) {
List<DBUser> list = new ArrayList<>();
String members = "";
for (int i = 0; i < selectIndexs.length; i++) {
String phNum = listPhone.get(selectIndexs[i]);
members = members + phNum + ",";
}
Net.addMember2Group(callnumber, members, 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);
}
dialog.dismiss();
}
});
int mCurrentDialogStyle = com.qmuiteam.qmui.R.style.QMUI_Dialog;
builder.create(mCurrentDialogStyle).show();
}
@SuppressLint("NewApi")
void fullScreen() {
int flag = View.SYSTEM_UI_FLAG_LAYOUT_STABLE

View File

@@ -21,6 +21,10 @@ public class DBUser {
public boolean isManager = false;
public boolean isAddFlag = false;
public boolean isMute = false;
public boolean isVMute = false;
public boolean isLayout = false;
public DBUser(String name, String phone, String status) {
this.name = name;
this.phone = phone;

View File

@@ -0,0 +1,10 @@
package com.tianrun.sipcall.db;
import android.widget.ImageView;
import android.widget.TextView;
public class UserMeetingViews extends UserViews {
public ImageView memberStatus1;
public ImageView memberStatus2;
public ImageView memberStatus3;
}

View File

@@ -478,7 +478,7 @@ public class MainActivity extends TrBaseActivity {
members = members + phNum + ",";
}
Net.addUser2Group(currSelectData.id, members, new HttpUtl.CallBack() {
Net.addMember2Group(currSelectData.id, members, new HttpUtl.CallBack() {
@Override
public void onRequestComplete(int cmd, String result, Object orgs) {
Net.getGroupMenbers(currSelectData.id, null, currSelectData.id);

View File

@@ -26,6 +26,12 @@ public class Net {
public static final int CMD_deleteGroup = 7007;
public static final int CMD_addUser2Group = 7008;
public static final int CMD_kickMember4Group = 7009;
public static final int CMD_muteMember4Group = 7010;
public static final int CMD_unmuteMember4Group = 7011;
public static final int CMD_vmuteMember4Group = 7012;
public static final int CMD_unvmuteMember4Group = 7013;
public static final int CMD_vidlayoutMember4Group = 7014;
public static final int CMD_vidfloorMember4Group = 7015;
static HttpUtl.CallBack _callback = new HttpUtl.CallBack() {
@Override
@@ -123,9 +129,9 @@ public class Net {
}
//TODO:确认下参数
public static void addUser2Group(String task_uuid, String members, HttpUtl.CallBack callBack, Object orgs) {
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;
String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members;
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_addUser2Group, params);
}
@@ -133,15 +139,51 @@ public class Net {
//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";
String _params = "opr_nbr=" + task_uuid + "&opr_member=" + members + "&opr_action=kick";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_kickMember4Group, params);
}
// public static void updateGroup(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;
// Object[] params = {callBack, orgs};
// HttpUtl.doPostAsyn(url, _params, _callback, CMD_updateGroup, params);
// }
//mute禁言、unmute取消禁言、vmute关闭视频、unvmute恢复视频、kick踢出、vidlayout切换布局、vidfloor切换到主画面
public static void muteMember4Group(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=mute";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_muteMember4Group, params);
}
public static void unmuteMember4Group(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=unmute";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_unmuteMember4Group, params);
}
public static void vmuteMember4Group(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=vmute";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_vmuteMember4Group, params);
}
public static void unvmuteMember4Group(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=unvmute";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_unvmuteMember4Group, params);
}
public static void vidlayoutMember4Group(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=vidlayout";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_vidlayoutMember4Group, params);
}
public static void vidfloorMember4Group(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=vidfloor";
Object[] params = {callBack, orgs};
HttpUtl.doPostAsyn(url, _params, _callback, CMD_vidfloorMember4Group, params);
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

View File

@@ -77,7 +77,7 @@
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/ScreenType"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_height="40dp"
android:orientation="horizontal" />

View File

@@ -13,6 +13,18 @@
android:layout_height="match_parent"
android:background="#15516C" />
<ImageButton
android:id="@+id/imageButtonAddUser"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="65dp"
android:layout_marginEnd="0dp"
android:layout_marginBottom="13dp"
android:onClick="addMember"
app:srcCompat="@drawable/add" />
<GridView
android:id="@+id/GridUser"
android:layout_width="160dp"
@@ -21,8 +33,8 @@
android:layout_alignParentTop="true"
android:layout_alignParentBottom="true"
android:layout_marginStart="0dp"
android:layout_marginTop="10dp"
android:layout_marginBottom="0dp"
android:layout_marginTop="0dp"
android:layout_marginBottom="60dp"
android:horizontalSpacing="10dp"
android:numColumns="1">
@@ -51,6 +63,7 @@
android:id="@+id/remote_video_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</blue.view.SMPercentFrameLayout>
<blue.view.SMPercentFrameLayout
@@ -94,21 +107,10 @@
android:src="@drawable/phone3" />
</LinearLayout>
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:text="123"
android:textColor="#FFFFFF"
android:textSize="20sp" />
<com.qmuiteam.qmui.widget.tab.QMUITabSegment
android:id="@+id/ScreenType"
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_height="40dp"
android:layout_alignParentStart="true"
android:layout_marginStart="170dp"
android:orientation="horizontal" />
@@ -120,4 +122,16 @@
android:layout_weight="1"
android:fitsSystemWindows="true" />
<TextView
android:id="@+id/show"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="10dp"
android:layout_marginEnd="30dp"
android:text="123"
android:textAlignment="viewEnd"
android:textColor="#FFFFFF"
android:textSize="18sp" />
</RelativeLayout>

View File

@@ -0,0 +1,125 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/Item_user"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imageViewBg"
android:layout_width="170dp"
android:layout_height="110dp"
app:srcCompat="@drawable/bg3" />
<ImageView
android:id="@+id/imageViewStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/imageViewBg"
android:layout_alignTop="@+id/imageViewBg"
android:layout_alignEnd="@+id/imageViewBg"
android:layout_marginStart="8dp"
android:layout_marginTop="3dp"
android:layout_marginEnd="8dp"
android:visibility="visible"
app:srcCompat="@drawable/bg_half"
app:tint="#8BC34A" />
<TextView
android:id="@+id/textViewName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/imageViewStatus"
android:layout_alignStart="@+id/imageViewStatus"
android:layout_alignTop="@+id/imageViewStatus"
android:layout_alignEnd="@+id/imageViewStatus"
android:layout_marginStart="0dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="1dp"
android:text="小张"
android:textAlignment="center"
android:visibility="visible" />
<TextView
android:id="@+id/textViewNum"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/imageViewStatus"
android:layout_alignTop="@+id/imageViewStatus"
android:layout_alignEnd="@+id/imageViewStatus"
android:layout_marginStart="10dp"
android:layout_marginTop="15dp"
android:layout_marginEnd="10dp"
android:text="100000"
android:textAlignment="center"
android:textColor="#FFFFFF" />
<ImageView
android:id="@+id/imageView3PhoneIcon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignStart="@+id/imageViewStatus"
android:layout_alignTop="@+id/imageViewStatus"
android:layout_marginStart="15dp"
android:layout_marginTop="15dp"
app:srcCompat="@drawable/phone" />
<ImageView
android:id="@+id/imageViewAddflag"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignEnd="@+id/imageViewBg"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
android:layout_centerInParent="true"
android:layout_marginStart="70dp"
android:layout_marginTop="57dp"
android:layout_marginEnd="76dp"
android:visibility="gone"
app:srcCompat="@drawable/add"
app:tint="#DDDDDD" />
<LinearLayout
android:layout_width="170dp"
android:layout_height="30dp"
android:layout_alignStart="@+id/imageViewBg"
android:layout_alignEnd="@+id/imageViewBg"
android:layout_alignBottom="@+id/imageViewBg"
android:layout_alignParentEnd="false"
android:layout_marginStart="0dp"
android:layout_marginTop="0dp"
android:layout_marginEnd="0dp"
android:layout_marginBottom="0dp"
android:orientation="horizontal">
<ImageView
android:id="@+id/memberStatus1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginBottom="15dp"
app:srcCompat="@android:drawable/stat_sys_speakerphone"
app:tint="#999999" />
<ImageView
android:id="@+id/memberStatus2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginBottom="15dp"
android:layout_weight="1"
app:srcCompat="@android:drawable/stat_notify_call_mute"
app:tint="#999999" />
<ImageView
android:id="@+id/memberStatus3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="19dp"
android:layout_marginBottom="15dp"
android:layout_weight="1"
app:srcCompat="@drawable/video"
app:tint="#999999" />
</LinearLayout>
</RelativeLayout>