Merge remote-tracking branch 'origin/dev_6.5.5_语聊' into dev_6.5.5_语聊

# Conflicts:
#	OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java
This commit is contained in:
hch
2023-10-19 18:28:24 +08:00
27 changed files with 933 additions and 406 deletions

View File

@@ -17,7 +17,6 @@ import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;
import androidx.recyclerview.widget.GridLayoutManager;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
@@ -31,7 +30,6 @@ import com.opensource.svgaplayer.SVGAImageView;
import com.opensource.svgaplayer.SVGAParser;
import com.opensource.svgaplayer.SVGAVideoEntity;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.setting.SettingActivity;
import com.shayu.onetoone.adapter.MainMeAdapter;
import com.shayu.onetoone.bean.SlideBean;
import com.shayu.onetoone.manager.RouteManager;
@@ -47,7 +45,6 @@ import com.yunbao.common.bean.GoogleBean;
import com.yunbao.common.bean.LevelBean;
import com.yunbao.common.bean.UserBean;
import com.yunbao.common.bean.UserItemBean;
import com.yunbao.common.event.CompleteInformationEvent;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.interfaces.CommonCallback;
@@ -59,24 +56,6 @@ import com.yunbao.common.utils.SVGAViewUtils;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
//import com.yunbao.live.activity.LiveRecordActivity;
//import com.yunbao.live.activity.RoomManageActivity;
//import com.yunbao.live.activity.WebViewActivityMedal;
//import com.yunbao.live.bean.SlideBean;
//import com.yunbao.live.views.CustomMyViewHolder;
//import com.yunbao.main.activity.EditProfileActivity;
//import com.yunbao.main.activity.FansActivity;
//import com.yunbao.main.activity.FollowActivity;
//import com.yunbao.main.activity.MyProfitActivity;
//import com.yunbao.main.activity.MyVideoActivity;
//import com.yunbao.main.activity.MyWalletActivity;
//import com.yunbao.main.activity.RewardActivity;
//import com.yunbao.main.activity.SettingActivity;
//import com.yunbao.main.activity.ThreeDistributActivity;
//import com.yunbao.main.activity.ZhuangBanActivity;
//import com.yunbao.main.adapter.MainMeAdapter;
import org.greenrobot.eventbus.EventBus;
import java.net.MalformedURLException;
import java.net.URL;
@@ -559,7 +538,7 @@ public class MyFragment extends BaseFragment implements OnItemClickListener<User
* 设置
*/
private void forwardSetting() {
mContext.startActivity(new Intent(mContext, SettingActivity.class));
// mContext.startActivity(new Intent(mContext, SettingActivity.class));
}
/**

View File

@@ -36,7 +36,9 @@ import com.shayu.onetoone.dialog.TipsDialog;
import com.shayu.onetoone.listener.OnCallStatusListener;
import com.shayu.onetoone.listener.OnDialogClickListener;
import com.shayu.onetoone.listener.OnSendMessageListener;
import com.shayu.onetoone.manager.CallClientManager;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.manager.SendMessageManager;
import com.shayu.onetoone.view.MsgInputPanelForAudio;
import com.shayu.onetoone.view.MsgInputPanelForGift;
@@ -55,10 +57,12 @@ import com.yunbao.common.utils.WordUtil;
import java.io.File;
import java.lang.reflect.Field;
import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.Iterator;
import java.util.List;
import io.rong.calllib.RongCallCommon;
import io.rong.imkit.IMCenter;
import io.rong.imkit.config.RongConfigCenter;
import io.rong.imkit.conversation.MessageListAdapter;
@@ -212,13 +216,16 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override
public void onSuccess(String token) {
super.onSuccess(token);
//ToastUtil.show("弹视频聊天");
new BottomListDialog(mContext).setSelect(new OnItemClickListener<String>() {
@Override
public void onItemClick(String bean, int position) {
ToastUtil.show(bean + "|" + position);
Bundle bundle = new Bundle();
bundle.putString("model", CallClientManager.VIDEO_CALL);
bundle.putString("targetId", targetId);
bundle.putString("callId", targetId);
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, bundle);
}
}).setStrings(Arrays.asList("发起语音通话\n200钻/分钟", "发起视频通话\n100钻/分钟"))
}).setStrings(Collections.singletonList("发起视频通话\n100钻/分钟"))
.showDialog();
}
@@ -234,7 +241,17 @@ public class ChatMessageFragment extends AbsConversationFragment {
@Override
public void onSuccess(String token) {
super.onSuccess(token);
ToastUtil.show("弹音频聊天");
new BottomListDialog(mContext).setSelect(new OnItemClickListener<String>() {
@Override
public void onItemClick(String bean, int position) {
Bundle bundle = new Bundle();
bundle.putString("model", CallClientManager.AUDIO_CALL);
bundle.putString("targetId", targetId);
bundle.putString("callId", targetId);
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_AUDIO, bundle);
}
}).setStrings(Collections.singletonList("发起语音通话\n200钻/分钟"))
.showDialog();
}
@Override

View File

@@ -337,7 +337,7 @@ public class EntryActivity extends AbsOTOActivity {
// App-to-app login
Intent loginIntent = LineLoginApi.getLoginIntent(
view.getContext(),
"1656399535",
"2001228692",
new LineAuthenticationParams.Builder()
.scopes(Arrays.asList(Scope.PROFILE))
// .nonce("<a randomly-generated string>") // nonce can be used to improve security

View File

@@ -0,0 +1,314 @@
package com.shayu.onetoone.activity.message;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.SurfaceView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.lzf.easyfloat.EasyFloat;
import com.lzf.easyfloat.enums.ShowPattern;
import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
import com.makeramen.roundedimageview.RoundedImageView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.AbsOTOActivity;
import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.UserBean;
import com.shayu.onetoone.dialog.GiftDialog;
import com.shayu.onetoone.listener.OnCallStatusListener;
import com.shayu.onetoone.manager.CallClientManager;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.utils.ConversationUtils;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
@Route(path = RouteManager.ACTIVITY_CALL_AUDIO)
public class CallAudioActivity extends AbsOTOActivity implements View.OnClickListener {
private ImageView vague;
private ImageView close;
private ImageView avatar;
private ImageView follow;
private TextView userName;
private TextView userInfo;
private ImageView gift;
private ImageView money;
private ImageView callStop;
private ImageView callMsg;
private TextView callTime;
private String targetId;
private String callId;
private String model;
private OnCallStatusListener onCallStatusListener;
@Override
protected int getLayoutId() {
return R.layout.activity_call_audio;
}
@Override
protected void main(Bundle savedInstanceState) {
Bundle bundle = getIntent().getBundleExtra("bundle");
if (bundle == null) {
finish();
return;
}
targetId = bundle.getString("targetId");
callId = bundle.getString("callId");
model = bundle.getString("model");
initView();
onCallStatusListener = new CallStatusListener();
CallClientManager.getManager().addOnVoIPCallListener(onCallStatusListener);
initTargetData();
if (model.equals(CallClientManager.VIDEO_FLOAT)) {
EasyFloat.dismiss("call");
callMsg.setTag(true);
callMsg.setImageResource(R.mipmap.ic_call_audio_msg);
gift.setVisibility(View.VISIBLE);
money.setVisibility(View.VISIBLE);
}
if (model.equals(CallClientManager.AUDIO_CALL)) {
CallClientManager.getManager().callAudio(targetId);
callMsg.setTag(true);
callMsg.setImageResource(R.mipmap.ic_call_audio_msg);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
CallClientManager.getManager().removeOnVoIPCallListener(onCallStatusListener);
}
private void initView() {
// 获取全局变量
vague = findViewById(R.id.vague);
close = findViewById(R.id.close);
avatar = findViewById(R.id.avatar);
follow = findViewById(R.id.follow);
userName = findViewById(R.id.user_name);
userInfo = findViewById(R.id.user_info);
gift = findViewById(R.id.gift);
money = findViewById(R.id.money);
callStop = findViewById(R.id.call_stop);
callMsg = findViewById(R.id.call_msg);
callTime = findViewById(R.id.call_time);
callMsg.setImageResource(io.rong.callkit.R.drawable.rc_voip_audio_answer_selector_new);
// 注册点击事件
vague.setOnClickListener(this);
close.setOnClickListener(this);
avatar.setOnClickListener(this);
follow.setOnClickListener(this);
userName.setOnClickListener(this);
userInfo.setOnClickListener(this);
gift.setOnClickListener(this);
money.setOnClickListener(this);
callStop.setOnClickListener(this);
callMsg.setOnClickListener(this);
callTime.setOnClickListener(this);
gift.setVisibility(View.INVISIBLE);
money.setVisibility(View.INVISIBLE);
}
private void initTargetData() {
OTONetManager.getInstance(mContext)
.getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback<UserBean>() {
@Override
public void onSuccess(UserBean data) {
userName.setText(data.getUser().getUserNicename());
userInfo.setText(data.getUser().getSignature());
ImgLoader.display(mContext, data.getUser().getAvatar(), avatar);
ImgLoader.displayBlur(mContext, data.getUser().getAvatar(), vague, 50);
if (data.getUser().isFollow()) {
follow.setVisibility(View.GONE);
} else {
follow.setVisibility(View.VISIBLE);
}
}
@Override
public void onError(String error) {
}
});
}
private void accept() {
CallClientManager.getManager().acceptCall(targetId);
}
private void stop() {
CallClientManager.getManager().endCall();
}
private void showGift() {
new GiftDialog(mContext)
.setTargetId(targetId)
.showDialog();
}
private void follow(){
OTONetManager.getInstance(mContext)
.follow(targetId, new HttpCallback<FollowBean>() {
@Override
public void onSuccess(FollowBean data) {
ToastUtil.show(WordUtil.getNewString(R.string.system_tip_success));
follow.setVisibility(View.GONE);
}
@Override
public void onError(String error) {
}
});
}
private void showWindow(boolean toChatView) {
ImageView icon = new ImageView(mContext);
icon.setTag(getIntent().getBundleExtra("bundle"));
icon.setImageResource(io.rong.callkit.R.drawable.rc_voip_audio_answer_selector_new);
icon.setLayoutParams(new ViewGroup.LayoutParams(DpUtil.dp2px(40), DpUtil.dp2px(40)));
finish();
EasyFloat.with(this)
.setLayout(icon)
.setShowPattern(ShowPattern.FOREGROUND)
.setTag("call")
.setDragEnable(true)
.setBorder()
.registerCallbacks(new OnFloatCallbacks() {
OnCallStatusListener windowListener;
@Override
public void createdResult(boolean b, @Nullable String s, @Nullable View view) {
}
@Override
public void show(@NonNull View view) {
view.setOnClickListener(v -> {
Bundle bundle = (Bundle) v.getTag();
bundle.putString("model", CallClientManager.AUDIO_FLOAT);
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_AUDIO, bundle);
});
windowListener = new WindowCallStatusListener();
CallClientManager.getManager().addOnVoIPCallListener(windowListener);
}
@Override
public void hide(@NonNull View view) {
}
@Override
public void dismiss() {
CallClientManager.getManager().removeOnVoIPCallListener(windowListener);
}
@Override
public void touchEvent(@NonNull View view, @NonNull MotionEvent motionEvent) {
}
@Override
public void drag(@NonNull View view, @NonNull MotionEvent motionEvent) {
}
@Override
public void dragEnd(@NonNull View view) {
}
}).show();
if (toChatView) {
ConversationUtils.startConversation(mContext, targetId);
}
}
private class CallStatusListener extends OnCallStatusListener {
@Override
public void onCallWait(SurfaceView surfaceView) {
}
@Override
public void onCallStart(String userId, SurfaceView surfaceView) {
gift.setVisibility(View.VISIBLE);
money.setVisibility(View.VISIBLE);
}
@Override
public void onCallEnd() {
finish();
}
@Override
public void onStartFirstFrame() {
}
@Override
public void onTime(String time) {
super.onTime(time);
callTime.setText("通话时长:" + time);
}
}
private static class WindowCallStatusListener extends OnCallStatusListener {
@Override
public void onCallWait(SurfaceView surfaceView) {
}
@Override
public void onCallStart(String userId, SurfaceView surfaceView) {
}
@Override
public void onCallEnd() {
EasyFloat.dismiss("call");
}
@Override
public void onStartFirstFrame() {
}
}
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.call_msg) {
if (v.getTag() == null) {
accept();
v.setTag(true);
callMsg.setImageResource(R.mipmap.ic_call_audio_msg);
} else {
showWindow(true);
}
} else if (id == R.id.call_stop) {
stop();
} else if (id == R.id.gift) {
showGift();
} else if (id == R.id.close) {
showWindow(false);
}else if(id ==R.id.follow){
follow();
}
}
}

View File

@@ -29,13 +29,20 @@ import com.lzf.easyfloat.interfaces.OnFloatCallbacks;
import com.makeramen.roundedimageview.RoundedImageView;
import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.AbsOTOActivity;
import com.shayu.onetoone.bean.FollowBean;
import com.shayu.onetoone.bean.UserBean;
import com.shayu.onetoone.dialog.GiftDialog;
import com.shayu.onetoone.listener.OnCallStatusListener;
import com.shayu.onetoone.manager.CallClientManager;
import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.utils.ConversationUtils;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import java.util.HashMap;
@@ -53,6 +60,7 @@ public class CallVideoActivity extends AbsOTOActivity {
private ViewGroup myView;
private ViewGroup targetView;
private ViewGroup callLayout;
private View callWaitLayout;
private ViewGroup rootView;
private View buttonView;
private ImageView callStop;
@@ -66,6 +74,7 @@ public class CallVideoActivity extends AbsOTOActivity {
private ImageView close;
private ImageView follow;
private TextView followText;
private TextView callTime;
private OnCallStatusListener onCallStatusListener;
@@ -97,10 +106,10 @@ public class CallVideoActivity extends AbsOTOActivity {
callId = bundle.getString("callId");
model = bundle.getString("model");
onCallStatusListener = new CallStatusListener();
CallClientManager.getManager().addOnVoIPCallListener(onCallStatusListener);
if (!EasyFloat.isShow("call")) {
if (!model.equals(CallClientManager.VIDEO_FLOAT)) {
RongCallClient.getInstance()
.startIncomingPreview(
new StartIncomingPreviewCallback() {
@@ -108,6 +117,7 @@ public class CallVideoActivity extends AbsOTOActivity {
public void onDone(boolean isFront, SurfaceView localVideo) {
myView.removeAllViews();
myView.addView(localVideo);
callLayout.setVisibility(View.VISIBLE);
}
@Override
@@ -115,12 +125,17 @@ public class CallVideoActivity extends AbsOTOActivity {
}
});
}
initButton(buttonView);
if (!StringUtil.isEmpty(callId)) {
CallClientManager.getManager().callVideo(callId);
initWaitView();
}
}
@Override
protected void onResume() {
super.onResume();
if (EasyFloat.isShow("call") && CallClientManager.getManager().getRemoteVideo(targetId) != null) {
if (model.equals(CallClientManager.VIDEO_FLOAT)) {
callLayout.setVisibility(View.GONE);
EasyFloat.getFloatView("call").setOnClickListener(null);
((ViewGroup) EasyFloat.getFloatView("call").getParent()).removeAllViews();
@@ -129,11 +144,14 @@ public class CallVideoActivity extends AbsOTOActivity {
new Handler(Looper.getMainLooper())
.postDelayed(() -> {
SurfaceView surfaceView = CallClientManager.getManager().getRemoteVideo(targetId);
SurfaceView surfaceView = CallClientManager.getManager().getRemoteVideo();
surfaceView.setLayoutParams(new ViewGroup.LayoutParams(-1, -1));
initView();
initButton(buttonView);
myView.addView(surfaceView);
myView.addView(buttonView);
targetView.addView(CallClientManager.getManager().getLocalVideo());
initTargetData();
}, 300);
}
@@ -145,9 +163,22 @@ public class CallVideoActivity extends AbsOTOActivity {
targetView = findViewById(R.id.target_view);
callLayout = findViewById(R.id.rc_voip_two_btn);
buttonView = LayoutInflater.from(mContext).inflate(R.layout.view_call_video_item, rootView, false);
initButton(buttonView);
// 为所有View设置点击事件监听器
setClickListeners();
callWaitLayout = LayoutInflater.from(mContext).inflate(R.layout.view_call_video_wait, rootView, false);
}
private void initWaitView() {
callLayout.setVisibility(View.GONE);
callStop = callWaitLayout.findViewById(R.id.call_stop);
cameraCloseSwitch = callWaitLayout.findViewById(R.id.camera_close_switch);
cameraSwitch = callWaitLayout.findViewById(R.id.camera_switch);
micSwitch = callWaitLayout.findViewById(R.id.mic_switch);
close = callWaitLayout.findViewById(R.id.close);
callStop.setOnClickListener(onClickListener);
cameraCloseSwitch.setOnClickListener(onClickListener);
cameraSwitch.setOnClickListener(onClickListener);
micSwitch.setOnClickListener(onClickListener);
close.setOnClickListener(onClickListener);
}
private void initButton(View itemView) {
@@ -162,6 +193,7 @@ public class CallVideoActivity extends AbsOTOActivity {
close = itemView.findViewById(R.id.close);
follow = itemView.findViewById(R.id.follow);
followText = itemView.findViewById(R.id.follow_text);
callTime = itemView.findViewById(R.id.call_time);
// 为所有View设置点击事件监听器
setClickListeners();
}
@@ -204,19 +236,19 @@ public class CallVideoActivity extends AbsOTOActivity {
}
private void switchAudio() {
RongCallClient.getInstance().setEnableLocalAudio(!RongCallClient.getInstance().isLocalAudioEnabled());
ToastUtil.show("麦克风状态:" + RongCallClient.getInstance().isLocalAudioEnabled());
micSwitch.setImageResource(RongCallClient.getInstance().isLocalAudioEnabled() ? R.mipmap.ic_call_audio_select : R.mipmap.ic_call_audio);
boolean enabled = RongCallClient.getInstance().isLocalAudioEnabled();
RongCallClient.getInstance().setEnableLocalAudio(!enabled);
micSwitch.setImageResource(!enabled ? R.mipmap.ic_call_audio_select : R.mipmap.ic_call_audio);
}
private void showWindow(boolean toChatView) {
CallClientManager.getManager().getRemoteVideo(targetId).setTag(getIntent().getBundleExtra("bundle"));
CallClientManager.getManager().getRemoteVideo().setTag(getIntent().getBundleExtra("bundle"));
myView.removeAllViews();
targetView.removeAllViews();
finish();
CallClientManager.getManager().getRemoteVideo(targetId).setLayoutParams(new ViewGroup.LayoutParams(DpUtil.dp2px(114), DpUtil.dp2px(164)));
CallClientManager.getManager().getRemoteVideo().setLayoutParams(new ViewGroup.LayoutParams(DpUtil.dp2px(114), DpUtil.dp2px(164)));
EasyFloat.with(this)
.setLayout(CallClientManager.getManager().getRemoteVideo(targetId))
.setLayout(CallClientManager.getManager().getRemoteVideo())
.setShowPattern(ShowPattern.FOREGROUND)
.setTag("call")
.setDragEnable(true)
@@ -232,7 +264,9 @@ public class CallVideoActivity extends AbsOTOActivity {
@Override
public void show(@NonNull View view) {
view.setOnClickListener(v -> {
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, (Bundle) v.getTag());
Bundle bundle = (Bundle) v.getTag();
bundle.putString("model", CallClientManager.VIDEO_FLOAT);
RouteManager.forwardActivity(RouteManager.ACTIVITY_CALL_VIDEO, bundle);
});
windowListener = new WindowCallStatusListener();
CallClientManager.getManager().addOnVoIPCallListener(windowListener);
@@ -266,10 +300,41 @@ public class CallVideoActivity extends AbsOTOActivity {
if (toChatView) {
ConversationUtils.startConversation(mContext, targetId);
}
}
private void initTargetData() {
OTONetManager.getInstance(mContext)
.getTargetUserInfo(Integer.parseInt(targetId), new HttpCallback<UserBean>() {
@Override
public void onSuccess(UserBean data) {
ImgLoader.display(mContext, data.getUser().getAvatar(), avatar);
if (data.getUser().isFollow()) {
follow.setVisibility(View.GONE);
} else {
follow.setVisibility(View.VISIBLE);
}
}
@Override
public void onError(String error) {
}
});
}
private void follow(){
OTONetManager.getInstance(mContext)
.follow(targetId, new HttpCallback<FollowBean>() {
@Override
public void onSuccess(FollowBean data) {
ToastUtil.show(WordUtil.getNewString(R.string.system_tip_success));
follow.setVisibility(View.GONE);
}
@Override
public void onError(String error) {
}
});
}
private final View.OnClickListener onClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
@@ -293,6 +358,8 @@ public class CallVideoActivity extends AbsOTOActivity {
showWindow(false);
} else if (id == R.id.message) {
showWindow(true);
}else if(id == R.id.follow){
follow();
}
}
};
@@ -302,10 +369,16 @@ public class CallVideoActivity extends AbsOTOActivity {
public void onCallWait(SurfaceView surfaceView) {
myView.removeAllViews();
myView.addView(surfaceView);
if (model.equals(CallClientManager.VIDEO_CALL)) {
myView.addView(callWaitLayout);
}
}
@Override
public void onCallStart(String userId, SurfaceView surfaceView) {
initView();
initButton(buttonView);
initTargetData();
surfaceView.setZOrderOnTop(false);
surfaceView.setZOrderMediaOverlay(false);
surfaceView.invalidate();
@@ -314,18 +387,11 @@ public class CallVideoActivity extends AbsOTOActivity {
surfaceView.setZOrderMediaOverlay(false);
surfaceView.invalidate();
});
if (model.equals(CallClientManager.VIDEO_CALL)) {
targetView.removeAllViews();
targetView.addView(surfaceView);
myView.removeAllViews();
myView.addView(CallClientManager.getManager().getLocalVideo());
} else {
myView.removeAllViews();
myView.addView(surfaceView);
targetView.removeAllViews();
targetView.addView(CallClientManager.getManager().getLocalVideo());
myView.addView(buttonView);
}
myView.removeAllViews();
myView.addView(surfaceView);
targetView.removeAllViews();
targetView.addView(CallClientManager.getManager().getLocalVideo());
myView.addView(buttonView);
}
@Override
@@ -335,13 +401,19 @@ public class CallVideoActivity extends AbsOTOActivity {
@Override
public void onStartFirstFrame() {
/* CallClientManager.getManager().getRemoteVideo(targetId).setZOrderOnTop(false);
CallClientManager.getManager().getRemoteVideo(targetId).setZOrderMediaOverlay(false);
CallClientManager.getManager().getRemoteVideo(targetId).invalidate();*/
}
@Override
public void onTime(String time) {
super.onTime(time);
if(callTime!=null){
callTime.setText("通话时长:"+time);
}
}
}
private class WindowCallStatusListener extends OnCallStatusListener {
private static class WindowCallStatusListener extends OnCallStatusListener {
@Override
public void onCallWait(SurfaceView surfaceView) {