|
@@ -1,32 +1,45 @@
|
|
|
-package com.xplora.xpvideo;
|
|
|
+package com.xplora.xpvideo.activity;
|
|
|
|
|
|
import androidx.constraintlayout.widget.ConstraintLayout;
|
|
|
import androidx.constraintlayout.widget.ConstraintSet;
|
|
|
import androidx.core.content.ContextCompat;
|
|
|
import android.Manifest;
|
|
|
import android.app.Activity;
|
|
|
+import android.content.Intent;
|
|
|
import android.content.pm.PackageManager;
|
|
|
import android.os.Build;
|
|
|
import android.os.Bundle;
|
|
|
+import android.util.Log;
|
|
|
import android.view.MotionEvent;
|
|
|
import android.view.View;
|
|
|
import android.view.ViewGroup;
|
|
|
+import android.view.WindowManager;
|
|
|
+import android.widget.Button;
|
|
|
+import android.widget.ImageButton;
|
|
|
+import android.widget.LinearLayout;
|
|
|
+import android.widget.RelativeLayout;
|
|
|
|
|
|
import com.juphoon.cloud.JCCall;
|
|
|
import com.juphoon.cloud.JCCallItem;
|
|
|
import com.juphoon.cloud.JCMediaDevice;
|
|
|
import com.juphoon.cloud.JCMediaDeviceVideoCanvas;
|
|
|
+import com.xplora.xpvideo.R;
|
|
|
+import com.xplora.xpvideo.manager.DatabaseUtils;
|
|
|
+import com.xplora.xpvideo.manager.VideoManager;
|
|
|
+import com.xplora.xpvideo.model.ContactBean;
|
|
|
+import com.xplora.xpvideo.observer.Listener;
|
|
|
+import com.xplora.xpvideo.utils.Constant;
|
|
|
+import com.xplora.xpvideo.utils.ToolsUtils;
|
|
|
|
|
|
import java.util.List;
|
|
|
import java.util.Timer;
|
|
|
|
|
|
-public class MainActivity extends Activity {
|
|
|
- public VideoManager mVideoManager = null;
|
|
|
- private ConstraintLayout mContentView = null;
|
|
|
- private View mVideoIn = null;
|
|
|
- private View mVideoInCall = null;
|
|
|
- private View mInvite = null;
|
|
|
- private View mAccepte = null;
|
|
|
+public class MainActivity extends Activity implements Listener.VideoListener {
|
|
|
+ private RelativeLayout mContentView = null;
|
|
|
+ private RelativeLayout layoutWaitting = null;
|
|
|
+ private LinearLayout layoutInvite = null;
|
|
|
+ private LinearLayout layoutAccept = null;
|
|
|
+ private LinearLayout layoutIng = null;
|
|
|
private JCMediaDeviceVideoCanvas mLocalCanvas = null;
|
|
|
private JCMediaDeviceVideoCanvas mRemoteCanvas = null;
|
|
|
|
|
@@ -34,13 +47,24 @@ public class MainActivity extends Activity {
|
|
|
private Timer mTimerTask = null;
|
|
|
private Timer mCallInfoTimer = null;
|
|
|
|
|
|
+ private int mVideoType = 0;
|
|
|
+ private String mVideoId = "";
|
|
|
+ private ContactBean mContactBean = new ContactBean();
|
|
|
+
|
|
|
+ public VideoManager mVideoManager = new VideoManager();
|
|
|
+
|
|
|
@Override
|
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
|
super.onCreate(savedInstanceState);
|
|
|
setContentView(R.layout.activity_main);
|
|
|
|
|
|
- // 获取设备权限
|
|
|
requestPermission();
|
|
|
+ initView();
|
|
|
+
|
|
|
+ mVideoType = getIntent().getIntExtra(Constant.EXTRA_VIDEO_TYPE, 0);
|
|
|
+ mVideoId = getIntent().getStringExtra(Constant.EXTRA_VIDEO_ID);
|
|
|
+ mContactBean = new DatabaseUtils().loadContact(mVideoId);
|
|
|
+ mVideoManager.init(this, "sk_videoId");
|
|
|
}
|
|
|
|
|
|
/*动态申请权限*/
|
|
@@ -54,7 +78,28 @@ public class MainActivity extends Activity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- private void updateUI() {
|
|
|
+ private void initView() {
|
|
|
+ mContentView = findViewById(R.id.video_bg);
|
|
|
+ ImageButton acceptCancel = findViewById(R.id.acceptCancel);
|
|
|
+ ImageButton acceptAnswer = findViewById(R.id.acceptAnswer);
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onLoginCallback(boolean isOK) {
|
|
|
+ if (isOK) {
|
|
|
+ if (mVideoType == 1) {
|
|
|
+ mVideoManager.call(mVideoId);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onCallItemAdd() {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public void onCallItemUpdate() {
|
|
|
List<JCCallItem> callItems = mVideoManager.mCall.getCallItems();
|
|
|
if (callItems.size() == 0) {
|
|
|
stopCallInfoTimer();
|
|
@@ -68,10 +113,6 @@ public class MainActivity extends Activity {
|
|
|
return;
|
|
|
}
|
|
|
boolean needAnswer = item.getDirection() == JCCall.DIRECTION_IN && item.getState() == JCCall.STATE_PENDING;
|
|
|
- mVideoIn.setVisibility(item.getVideo() && needAnswer ? View.VISIBLE : View.INVISIBLE);
|
|
|
- mInvite.setVisibility(item.getVideo() && needAnswer ? View.VISIBLE : View.INVISIBLE);
|
|
|
- mVideoInCall.setVisibility(item.getVideo() && !needAnswer ? View.VISIBLE : View.INVISIBLE);
|
|
|
- mAccepte.setVisibility(item.getVideo() && !needAnswer ? View.VISIBLE : View.INVISIBLE);
|
|
|
if (item.getVideo()) {
|
|
|
dealCanvas(item);
|
|
|
} else {
|
|
@@ -81,6 +122,11 @@ public class MainActivity extends Activity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void onCallItemRemove() {
|
|
|
+ finish();
|
|
|
+ }
|
|
|
+
|
|
|
private void dealCanvas(JCCallItem item) {
|
|
|
boolean change = false; // 是否有视频窗口变化
|
|
|
if (mLocalCanvas == null && item.getUploadVideoStreamSelf()) {
|
|
@@ -128,25 +174,6 @@ public class MainActivity extends Activity {
|
|
|
mContentView.removeView(mRemoteCanvas.getVideoView());
|
|
|
mContentView.addView(mRemoteCanvas.getVideoView(), 0);
|
|
|
mContentView.addView(mLocalCanvas.getVideoView(), 1);
|
|
|
- ConstraintSet constraintSet = new ConstraintSet();
|
|
|
- constraintSet.clone(mContentView);
|
|
|
- constraintSet.constrainWidth(mLocalCanvas.getVideoView().getId(), ToolUtil.dip2px(this, 120f));
|
|
|
- constraintSet.constrainHeight(mLocalCanvas.getVideoView().getId(), ToolUtil.dip2px(this, 160f));
|
|
|
- constraintSet.connect(
|
|
|
- mLocalCanvas.getVideoView().getId(),
|
|
|
- ConstraintSet.START,
|
|
|
- ConstraintSet.PARENT_ID,
|
|
|
- ConstraintSet.START,
|
|
|
- ToolUtil.dip2px(this, 8f)
|
|
|
- );
|
|
|
- constraintSet.connect(
|
|
|
- mLocalCanvas.getVideoView().getId(),
|
|
|
- ConstraintSet.TOP,
|
|
|
- ConstraintSet.PARENT_ID,
|
|
|
- ConstraintSet.TOP,
|
|
|
- ToolUtil.dip2px(this, 24f)
|
|
|
- );
|
|
|
- constraintSet.applyTo(mContentView);
|
|
|
} else if (mLocalCanvas != null) {
|
|
|
mContentView.removeView(mLocalCanvas.getVideoView());
|
|
|
mContentView.addView(
|
|
@@ -182,6 +209,30 @@ public class MainActivity extends Activity {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ private void moveView(View view, Float rawX, Float rawY) {
|
|
|
+ ConstraintLayout.LayoutParams params = (ConstraintLayout.LayoutParams)view.getLayoutParams();
|
|
|
+ WindowManager wm = (WindowManager)this.getSystemService(WINDOW_SERVICE);
|
|
|
+ int width = wm.getDefaultDisplay().getWidth();
|
|
|
+ int height = wm.getDefaultDisplay().getHeight();
|
|
|
+ int viewwidth = ToolsUtils.dip2px(this, 128f);
|
|
|
+ int viewheight = ToolsUtils.dip2px(this, 184f);
|
|
|
+ if (rawX < viewwidth / 2) {
|
|
|
+ rawX = (float)(viewwidth / 2 + 8);
|
|
|
+ }
|
|
|
+ if (rawY < viewheight / 2) {
|
|
|
+ rawY = (float)(viewwidth / 2 + 24);
|
|
|
+ }
|
|
|
+ if (rawX > width - viewwidth / 2) {
|
|
|
+ rawX = (float)(width - viewwidth / 2);
|
|
|
+ }
|
|
|
+ if (rawY > height - viewheight / 2) {
|
|
|
+ rawY = (float)(height - viewheight / 2);
|
|
|
+ }
|
|
|
+ params.leftMargin = (int)(rawX - viewwidth / 2);
|
|
|
+ params.topMargin = (int)(rawY - viewheight / 2);
|
|
|
+ view.setLayoutParams(params);
|
|
|
+ }
|
|
|
+
|
|
|
private void startCallInfoTimer() {
|
|
|
if (mCallInfoTimer != null) {
|
|
|
stopCallInfoTimer();
|