新接入FaceUnity美颜SDK

This commit is contained in:
2022-09-17 16:54:58 +08:00
parent c6770c1d51
commit 333e4fc1e6
396 changed files with 58390 additions and 47 deletions

View File

@@ -121,7 +121,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
private ViewGroup mRoot;
private ViewGroup mContainerWrap;
public static AbsRyLivePushViewHolder mLivePushViewHolder;
public static LivePushRyViewHolder mLivePushViewHolder;
public static LiveNewReadyRyViewHolder mLiveReadyViewHolder;
public static LiveRyAnchorViewHolder mLiveAnchorViewHolder;
private LiveMusicViewHolder mLiveMusicViewHolder;
@@ -473,9 +473,12 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
if (mLiveReadyViewHolder != null) {
mLiveReadyViewHolder.hide();
}
LiveBeautyDialogFragment fragment = new LiveBeautyDialogFragment();
if(mLiveRoomViewHolder!=null){
mLiveRoomViewHolder.changeFaceUnityView();
}
/* LiveBeautyDialogFragment fragment = new LiveBeautyDialogFragment();
fragment.setiBeautyModule(BeautyManager.iBeautyModule, BeautyManager.iLookupModule, BeautyManager.iBeautyBodyModule);
fragment.show(getSupportFragmentManager(), "LiveBeautyDialogFragment");
fragment.show(getSupportFragmentManager(), "LiveBeautyDialogFragment");*/
}
/**
@@ -610,6 +613,7 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
mLiveRoomViewHolder.setLiveInfo(mLiveUid, mStream, obj.getIntValue("userlist_time") * 1000);
mLiveRoomViewHolder.setVotes(obj.getString("votestotal"));
mLiveRoomViewHolder.setMedaRankNum(obj.getString("medalRankNum"));
mLiveRoomViewHolder.startFace();
UserBean u = CommonAppConfig.getInstance().getUserBean();
if (u != null) {
mLiveRoomViewHolder.setRoomNum(u.getLiangNameTip());

View File

@@ -6,22 +6,15 @@ import android.content.Intent;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.inputmethod.InputMethodManager;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.core.content.ContextCompat;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSendCallback;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.LiveClassBean;
@@ -38,19 +31,16 @@ import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.AbsViewHolder;
import com.yunbao.faceunity.FaceManager;
import com.yunbao.faceunity.ui.FaceUnityView;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveChooseClassActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.adapter.LiveReadyShareAdapter;
import com.yunbao.live.bean.LiveRoomTypeBean;
import com.yunbao.live.dialog.LiveNewRoomClassDialogFragment;
import com.yunbao.live.dialog.LiveNewRoomTypeDialogFragment;
import com.yunbao.live.dialog.LiveNewWishListDialogFragment;
import com.yunbao.live.dialog.LiveRoomTypeDialogFragment;
import com.yunbao.live.dialog.LiveTimeDialogFragment;
import com.yunbao.live.dialog.LiveWishListDialogFragment;
import com.yunbao.live.http.LiveHttpConsts;
import com.yunbao.live.http.LiveHttpUtil;
@@ -78,6 +68,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
private boolean mOpenLocation = true;
private int mLiveSdk;
private LiveClassBean classBean;
private FaceUnityView faceUnityView;
public LiveNewReadyRyViewHolder(Context context, ViewGroup parentView, int liveSdk) {
super(context, parentView, liveSdk);
@@ -97,7 +88,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
@Override
public void init() {
ConstraintLayout traceroute_rootview = (ConstraintLayout)findViewById(R.id.traceroute_rootview);
ConstraintLayout traceroute_rootview = (ConstraintLayout) findViewById(R.id.traceroute_rootview);
traceroute_rootview.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
@@ -126,8 +117,9 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
mOpenLocation = true;
mLiveClass = (TextView) findViewById(R.id.live_class);
mLiveTypeTextView = (TextView) findViewById(R.id.text_room_type);
mLiveWishListTextView= (TextView) findViewById(R.id.text_wishlist);
mLiveWishListTextView = (TextView) findViewById(R.id.text_wishlist);
mImageUtil = ((LiveActivity) mContext).getProcessImageUtil();
faceUnityView = (FaceUnityView) findViewById(R.id.faceunity_control);
mImageUtil.setImageResultCallback(new ImageResultCallback() {
@Override
@@ -194,9 +186,13 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
}
}
};
manager = new FaceManager();
manager.initFURender(mContext, faceUnityView);
manager.drawRongFrame(mContext);
}
FaceManager manager;
@Override
public void onClick(View v) {
if (!canClick()) {
@@ -213,8 +209,8 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
} else if (i == R.id.btn_live_class) {
chooseLiveClass();
} else if (i == R.id.btn_beauty) {
beauty();
}else if (i == R.id.btn_wishlist) {
setFaceUnity();
} else if (i == R.id.btn_wishlist) {
//点击心愿单
openWishListWindow();
} else if (i == R.id.btn_room_type) {
@@ -224,12 +220,15 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
} else if (i == R.id.btn_locaiton) {
switchLocation();
}else if(i == R.id.btn_horizontally){
RCRTCCameraOutputStream cameraStream = RCRTCEngine.getInstance().getDefaultVideoStream();
} else if (i == R.id.btn_horizontally) {
RCRTCCameraOutputStream cameraStream = RCRTCEngine.getInstance().getDefaultVideoStream();
cameraStream.setPreviewMirror(!cameraStream.isPreviewMirror());
}
}
public void setFaceUnity() {
faceUnityView.setVisibility(faceUnityView.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);
}
/**
* 打开心愿单窗口
@@ -237,7 +236,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
public void openWishListWindow() {
LiveNewWishListDialogFragment fragment = new LiveNewWishListDialogFragment();
if (mContext instanceof LiveRyAnchorActivity){
if (mContext instanceof LiveRyAnchorActivity) {
fragment.show(((LiveRyAnchorActivity) mContext).getSupportFragmentManager(), "RY");
}
}
@@ -319,12 +318,12 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
Bundle bundle = new Bundle();
bundle.putInt(Constants.CLASS_ID, mLiveClassID);
LiveNewRoomClassDialogFragment fragment = new LiveNewRoomClassDialogFragment();
fragment.setArguments(bundle);;
fragment.setArguments(bundle);
fragment.setCallback(new CommonCallback<LiveClassBean>() {
@Override
public void callback(LiveClassBean bean) {
classBean=bean;
mLiveClassID=classBean.getId();
classBean = bean;
mLiveClassID = classBean.getId();
mLiveClass.setText(bean.getName());
}
});
@@ -461,8 +460,9 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
* 请求创建直播间接口,开始直播
*/
boolean isHttpBack = false;
private void createRoom() {
if(!isHttpBack) {
if (!isHttpBack) {
isHttpBack = true;
if (mLiveClassID == 0) {
ToastUtil.show(R.string.live_choose_live_class);
@@ -489,7 +489,7 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
isHttpBack = false;
}
});
}else {
} else {
ToastUtil.show("請求中,請勿重複點擊");
}
}
@@ -503,5 +503,6 @@ public class LiveNewReadyRyViewHolder extends AbsViewHolder implements View.OnCl
@Override
public void onDestroy() {
LiveHttpUtil.cancel(LiveHttpConsts.CREATE_ROOM);
manager.onClose();
}
}

View File

@@ -532,6 +532,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
//美颜
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
/* //旧美颜不需要了
RCRTCEngine.getInstance().getDefaultVideoStream().setVideoFrameListener(new IRCRTCVideoOutputFrameListener() {
@Override
public RCRTCVideoFrame processVideoFrame(RCRTCVideoFrame rtcVideoFrame) {
@@ -540,6 +541,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
return rtcVideoFrame;
}
});
*/
}
});
}

View File

@@ -81,6 +81,8 @@ import com.yunbao.common.utils.formatBigNum;
import com.yunbao.common.views.AbsViewHolder;
import com.yunbao.common.views.weight.FullServiceNotificationView;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.faceunity.FaceManager;
import com.yunbao.faceunity.ui.FaceUnityView;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveAnchorActivity;
@@ -288,6 +290,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
private TextView msgNumber;//悬浮窗左上角数标
private RoundedImageView msgUserIcon; //悬浮窗icon
private FullServiceNotificationView fullScreen;//全副喇叭
private FaceUnityView faceUnityView;
private FaceManager manager;
public LiveRoomViewHolder(boolean isRys, int forActivity, Context context, ViewGroup parentView, GifImageView gifImageView, SVGAImageView svgaImageView, ViewGroup liveGiftPrizePoolContainer, WindowManager windowManager) {
super(context, parentView);
@@ -679,6 +683,8 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
lt_trickery.setOnClickListener(this);
dialog = new Dialog(mContext, R.style.dialog);
faceUnityView = (FaceUnityView) findViewById(R.id.faceunity_control);
if (!SpUtil.getInstance().getBooleanValue("private_chat_message_switch")) {
msgLayout.setVisibility(View.GONE);
}
@@ -2530,6 +2536,22 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
mChatRecyclerView.setLayoutParams(params1);
}
/**
* 启动美颜SDK
*/
public void startFace() {
manager=new FaceManager();
manager.initFURender(mContext,faceUnityView);
manager.drawRongFrame(mContext);
}
/**
* 切换美颜UI
*/
public void changeFaceUnityView(){
faceUnityView.setVisibility(faceUnityView.getVisibility() == View.GONE ? View.VISIBLE : View.GONE);
}
private static class LiveRoomHandler extends Handler {
private LiveRoomViewHolder mLiveRoomViewHolder;
@@ -2844,6 +2866,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
LiveHttpUtil.cancel(LiveHttpConsts.GET_USER_LIST);
LiveHttpUtil.cancel(LiveHttpConsts.TIME_CHARGE);
CommonHttpUtil.cancel(CommonHttpConsts.SET_ATTENTION);
manager.onClose();
}
@Subscribe(threadMode = ThreadMode.MAIN)

View File

@@ -2085,4 +2085,13 @@
android:layout_height="wrap_content"
android:layout_below="@id/live_video" />
<com.yunbao.faceunity.ui.FaceUnityView
android:id="@+id/faceunity_control"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:visibility="gone"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
</RelativeLayout>

View File

@@ -250,5 +250,15 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
<com.yunbao.faceunity.ui.FaceUnityView
android:id="@+id/faceunity_control"
android:visibility="gone"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="120dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@@ -149,7 +149,7 @@ PK"
android:layout_height="40dp"
android:layout_marginRight="5dp"
android:layout_toLeftOf="@id/btn_close"
android:padding="5dp"/>
android:padding="5dp" />
<ImageView
android:id="@+id/btn_pk"