package www.channelsoft.com.videoconference.sample.activity;
import android.content.Context;
import android.os.CountDownTimer;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.SurfaceView;
import android.view.View;
import android.widget.Button;
import android.widget.RelativeLayout;
import java.util.List;
import butel.net.conference.ConferenceSDK;
import butel.net.conference.ParticipantInfo;
import cn.redcdn.butelopensdk.constconfig.MediaType;
import www.channelsoft.com.videoconference.R;
import www.channelsoft.com.videoconference.factory.CallManagerInner;
import www.channelsoft.com.videoconference.listener.MeetCallBack;
import www.channelsoft.com.videoconference.listener.MeetListener;
import www.channelsoft.com.videoconference.sample.util.SPUtils;
public class MeetActivity extends AppCompatActivity {
MeetListener meetListener;
SurfaceView localSurfaceView, remoteSurfaceView, remoteSurfaceView2;
Button mCameraBtn, hangupBtn;
RelativeLayout allView;
Context contextAct;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_meet);
contextAct = this;
initView();
}
private void initView() {
// allView = (RelativeLayout) findViewById(R.id.rl_all_view);
remoteSurfaceView = findViewById(R.id.remoteSv);
remoteSurfaceView.setZOrderMediaOverlay(true);
localSurfaceView = findViewById(R.id.localSv);
localSurfaceView.setZOrderMediaOverlay(true);
localSurfaceView.setZOrderOnTop(true);
hangupBtn = (Button) findViewById(R.id.hangupBtn);
hangupBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
CallManagerInner.getInstance(contextAct).hangUp(new MeetCallBack.HangupListener() {
@Override
public void onSuccess() {
Log.e("MeetActivity", "---HangupListener--onSuccess----");
finish();
}
@Override
public void onFailed(int code, String msg) {
}
});
}
});
CallManagerInner.getInstance(contextAct).setOpenCamera(true);
CallManagerInner.getInstance(contextAct).setAutoSpeak(true);
CallManagerInner.getInstance(contextAct).setVideoMode(3);
meetListener = new MeetListener() {
@Override
public void onStartSpeak(String accountId, String accountName) {
Log.e("---onStartSpeak", accountId + " " + accountName);
// if (accountId.equals(SPUtils.getInstance().getString("user"))) {
// int result = CallManagerInner.getInstance(contextAct).startLocalVideo(MediaType.TYPE_VIDEO,
// localSurfaceView);
// Log.e("加入会议","加入会议local------"+result);
// } else {
// int resultRemote = CallManagerInner.getInstance(contextAct).startRemoteVideo(
// accountId,
// MediaType.TYPE_VIDEO, remoteSurfaceView);
// CallManagerInner.getInstance(contextAct).resumeSubscribe(accountId,MediaType.TYPE_VIDEO);
// Log.e("MeetActivity","加入会议resultRemote------"+resultRemote);
// }
}
// 画面渲染
@Override
public void onUserOpenCamera(String accountId) {
super.onUserOpenCamera(accountId);
Log.e("---onUserOpenCamera", accountId);
if (accountId.equals(SPUtils.getInstance().getString("user"))) {
int result = CallManagerInner.getInstance(contextAct).startLocalVideo(MediaType.TYPE_VIDEO,
localSurfaceView);
Log.e("onUserOpenCamera", "---localSurfaceView加入------" + result);
} else {
int resultRemote = CallManagerInner.getInstance(contextAct).startRemoteVideo(
accountId,
MediaType.TYPE_VIDEO, remoteSurfaceView);
CallManagerInner.getInstance(contextAct).resumeSubscribe(accountId, MediaType.TYPE_VIDEO);
Log.e("onUserOpenCamera", "---remoteSurfaceView加入 startRemoteVideo------" + resultRemote);
// localSurfaceView.setVisibility(View.INVISIBLE);
// hangupBtn.setVisibility(View.INVISIBLE);
}
}
@Override
public void onUserJoin(String accountId, String accountName) {
super.onUserJoin(accountId, accountName);
Log.e("---onUserJoin", accountId);
}
@Override
public void onUserLeave(String accountId, String accountName) {
super.onUserLeave(accountId, accountName);
Log.e("---onUserLeave", accountId);
}
@Override
public void onNetworkStateChange(int state) {
super.onNetworkStateChange(state);
Log.e("onNetworkStateChange", state + "");
}
/**
* 会议被中断通知
*/
@Override
public void onMeetingBreak() {
super.onMeetingBreak();
Log.e("onMeetingBreak", "onMeetingBreak");
}
/**
* 第一次加会获取到的参会方列表,只在第一次加会时回调,会议中的参会方列表由UI自己维护
* 会议中的参会方UI可根据onUserJoin onUserLeave维护
* @param participantInfoList 参会方列表
*/
@Override
public void onGetParticipantInfoList(List<ParticipantInfo> participantInfoList) {
super.onGetParticipantInfoList(participantInfoList);
}
/**
* 会议重连通知
*/
@Override
public void onMeetingRestore() {
super.onMeetingRestore();
}
/**
* 会议异常通知
*
* @param code 异常错误码
* @param msg 异常信息描述
*/
@Override
public void onMeetingException(int code, String msg) {
super.onMeetingException(code, msg);
Log.e("onMeetingException", "onMeetingFinish" + msg);
}
/**
* 解散会议通知
*/
@Override
public void onMeetingFinish() {
super.onMeetingFinish();
Log.e("onMeetingFinish", "onMeetingFinish");
}
};
// SPUtils.getInstance().getInt("meetingNo")
CallManagerInner.getInstance(contextAct).addConferenceListener(meetListener);
CallManagerInner.getInstance(contextAct).joinMeeting
(contextAct, SPUtils.getInstance().getInt("meetingNo"), "slk", new ConferenceSDK.JoinMeetingListener() {
@Override
public void onSuccess() {
Log.e("---joinMeeting", "加入会议成功");
// int result = CallManagerInner.getInstance(MeetActivity.this).startLocalVideo(MediaType.TYPE_VIDEO, localSurfaceView);
// int resultRemote = CallManagerInner.getInstance(MeetActivity.this).startRemoteVideo(
// "90311369",
// MediaType.TYPE_VIDEO, remoteSurfaceView);
// CallManagerInner.getInstance(getApplicationContext()).resumeSubscribe("90311369",MediaType. TYPE_VIDEO);
// Log.e("加入会议","加入会议Remote"+resultRemote);
// Log.e("加入会议","加入会议"+result);
for (int i = 0; i < CallManagerInner.getInstance(contextAct).getSpeakers().size(); i++) {
if (CallManagerInner.getInstance(contextAct).getSpeakers().get(i).getAccountId()
.equals(SPUtils.getInstance().getString("user"))) {
int result = CallManagerInner.getInstance(contextAct).startLocalVideo(MediaType.TYPE_VIDEO, localSurfaceView);
Log.e("joinMeeting", "---加入会议onSuccess startLocalVideo" + result);
} else {
int resultRemote = CallManagerInner.getInstance(contextAct).startRemoteVideo(
CallManagerInner.getInstance(contextAct).getSpeakers().get(i).getAccountId(),
MediaType.TYPE_VIDEO, remoteSurfaceView);
CallManagerInner.getInstance(contextAct).resumeSubscribe(CallManagerInner.getInstance(contextAct).getSpeakers().get(i).getAccountId(), MediaType.TYPE_VIDEO);
Log.e("joinMeeting", "---加入会议onSuccess startRemoteVideo" + resultRemote);
}
}
}
@Override
public void onFailed(int i, String s) {
Log.e("加入会议", "加入会议失败" + s);
}
});
}
@Override
protected void onResume() {
super.onResume();
// CallManagerInner.getInstance(getApplicationContext()).resumeSubscribe("90311369",MediaType. TYPE_VIDEO);
}
@Override
protected void onPause() {
super.onPause();
// CallManagerInner.getInstance(getApplicationContext()).pauseSubscribe("90311369",MediaType. TYPE_VIDEO);
}
@Override
protected void onDestroy() {
CallManagerInner.getInstance(getApplicationContext()).removeMeetListener(meetListener);
super.onDestroy();
}
}