diff --git a/FaceUnity/src/main/res/values-zh-rCN/strings.xml b/FaceUnity/src/main/res/values-zh-rCN/strings.xml index 5f124dfcc..a8243f912 100644 --- a/FaceUnity/src/main/res/values-zh-rCN/strings.xml +++ b/FaceUnity/src/main/res/values-zh-rCN/strings.xml @@ -1,96 +1,96 @@ 警告 - 抱歉,你所使用的证书权限或SDK不包括该功能。 - 相机权限被禁用或者相机被别的应用占用! - 重试 + 抱歉,你所使用的證書權限或SDK不包括該功能。 + 相機權限被禁用或者相機被別的應用佔用! + 重試 退出 Resolution:\n\t%dX%d\nFPS: %d\nRender time:\n\t%dms 保存照片成功! - 保存视频成功! - 保存视频失败! - 视频太短啦! - 视频处理中请稍等 - 未检测到人脸 - 人脸不全 - 单输入 - 双输入 + 保存視頻成功! + 保存視頻失敗! + 視頻太短啦! + 視頻處理中請稍等 + 未檢測到人臉 + 人臉不全 + 單輸入 + 雙輸入 磨皮 美白 - 红润 - 锐化 + 紅潤 + 銳化 亮眼 美牙 大眼 - 圆眼 + 圓眼 自然 女神 - 长脸 - 圆脸 - 瘦脸 - V脸 - 窄脸 - 短脸 - 小脸 + 長臉 + 圓臉 + 瘦臉 + V臉 + 窄臉 + 短臉 + 小臉 下巴 - 额头 + 額頭 瘦鼻 嘴型 - 瘦颧骨 - 瘦下颌骨 - 美肤 + 瘦顴骨 + 瘦下頜骨 + 美膚 美型 - 滤镜 - 风格推荐 + 濾鏡 + 風格推薦 去黑眼圈 - 去法令纹 + 去法令紋 微笑嘴角 眉毛上下 - 眉间距 - 开眼角 - 缩人中 - 长鼻 + 眉間距 + 開眼角 + 縮人中 + 長鼻 眼距 眼睛角度 - 口红 - 腮红 + 口紅 + 腮紅 眉毛 眼影 - 眼线 + 眼線 睫毛 美瞳 粉底 高光 - 阴影 - 卸妆 - 自定义 + 陰影 + 卸妝 + 自定義 桃花 男友 清透 西柚 - 选择图片 - 选择视频 - 请从相册中选择图片或视频 - 所选图片文件不存在。 - 所选视频文件不存在。 + 選擇圖片 + 選擇視頻 + 請從相冊中選擇圖片或視頻 + 所選圖片文件不存在。 + 所選視頻文件不存在。 - 张嘴试试 - 鼓腮帮子 - 皱眉试试 + 張嘴試試 + 鼓腮幫子 + 皺眉試試 眨一眨眼 - 嘟嘴试试 - 微笑触发 - 吹气触发 - 张嘴试试 + 嘟嘴試試 + 微笑觸發 + 吹氣觸發 + 張嘴試試 推出手掌 - 单手手指比心 - 比个六 - 双拳靠近脸颊卖萌 + 單手手指比心 + 比個六 + 雙拳靠近臉頰賣萌 - 原图 + 原圖 白亮 1 白亮 2 白亮 3 @@ -109,23 +109,23 @@ 小清新 3 小清新 4 小清新 6 - 冷色调 1 - 冷色调 2 - 冷色调 3 - 冷色调 4 - 冷色调 7 - 冷色调 8 - 冷色调 11 - 暖色调 1 - 暖色调 2 - 个性 1 - 个性 2 - 个性 3 - 个性 4 - 个性 5 - 个性 7 - 个性 10 - 个性 11 + 冷色調 1 + 冷色調 2 + 冷色調 3 + 冷色調 4 + 冷色調 7 + 冷色調 8 + 冷色調 11 + 暖色調 1 + 暖色調 2 + 個性 1 + 個性 2 + 個性 3 + 個性 4 + 個性 5 + 個性 7 + 個性 10 + 個性 11 黑白 1 黑白 2 黑白 3 @@ -138,14 +138,14 @@ 自然 6 自然 7 自然 8 - 质感灰 1 - 质感灰 2 - 质感灰 3 - 质感灰 4 - 质感灰 5 - 质感灰 6 - 质感灰 7 - 质感灰 8 + 質感灰 1 + 質感灰 2 + 質感灰 3 + 質感灰 4 + 質感灰 5 + 質感灰 6 + 質感灰 7 + 質感灰 8 蜜桃 1 蜜桃 2 蜜桃 3 @@ -155,85 +155,85 @@ 蜜桃 7 蜜桃 8 - - 风格 1 - 风格 2 - 风格 3 - 风格 4 - 风格 5 - 风格 6 - 风格 7 - 使用%s先取消“风格推荐” + + 風格 1 + 風格 2 + 風格 3 + 風格 4 + 風格 5 + 風格 6 + 風格 7 + 使用%s先取消“風格推薦” - 对准线框 正脸拍摄 - 替换失败 - 未识别模板的人脸,请重新选择模板 - 未检测到人脸,请重新拍摄 - 人脸不全,请重新拍摄 - 人脸偏转角度过大,请正脸拍摄。 + 對準線框 正臉拍攝 + 替換失敗 + 未識別模板的人臉,請重新選擇模板 + 未檢測到人臉,請重新拍攝 + 人臉不全,請重新拍攝 + 人臉偏轉角度過大,請正臉拍攝。 知道啦 - 检测到多人,请选择一人进行换脸 + 檢測到多人,請選擇一人進行換臉 Animoji - 动漫滤镜 + 動漫濾鏡 - 删除模型 + 刪除模型 新建模型 - 编辑模型 + 編輯模型 - 发型 - 脸型 + 髮型 + 臉型 眼睛 嘴唇 鼻子 - 脸型长度 - 脸颊宽度 - 下颚宽度 + 臉型長度 + 臉頰寬度 + 下顎寬度 下巴高低 眼睛位置 眼角高度 眼睛高低 - 眼睛宽窄 + 眼睛寬窄 鼻子位置 - 鼻翼宽窄 - 鼻头高低 + 鼻翼寬窄 + 鼻頭高低 嘴部位置 上唇厚度 下唇厚度 - 嘴唇宽度 - 你还没有创建过模型哦 - 是否将所有参数恢复到默认值? - 自定义 + 嘴唇寬度 + 你還沒有創建過模型哦 + 是否將所有參數恢復到默認值? + 自定義 保存成功 - 返回后当前操作将不会被保存哦 - 删除 + 返回后當前操作將不會被保存哦 + 刪除 取消 - 删除(%d) - 删除道具 - 全选 - 你还没有创建过道具哦 - 确定 + 刪除(%d) + 刪除道具 + 全選 + 你還沒有創建過道具哦 + 確定 取消 - 确定删除所选中的道具? - 删除成功 - 删除失败 + 確定刪除所選中的道具? + 刪除成功 + 刪除失敗 道具保存成功 - 恢复 + 恢復 - 雾面 - 润泽Ⅰ - 润泽Ⅱ + 霧面 + 潤澤Ⅰ + 潤澤Ⅱ 珠光 咬唇 - 苹果肌 + 蘋果肌 扇形 眼角 微醺 高光 I 高光 II - 阴影 I + 陰影 I 蜜糖 奶茶 水波 @@ -241,106 +241,106 @@ 孔雀 星河 落目 - 极光 - 柳叶眉 + 極光 + 柳恭弘=叶 恭弘眉 野生眉 古典眉 - 标准眉 - 单色眼影 - 双色眼影 I - 双色眼影 II - 双色眼影 III + 標準眉 + 單色眼影 + 雙色眼影 I + 雙色眼影 II + 雙色眼影 III 三色眼影 I 三色眼影 II 自然型 I 自然型 II - 浓密型 I - 浓密型 II - 夸张型 I - 夸张型 II - 猫眼 + 濃密型 I + 濃密型 II + 誇張型 I + 誇張型 II + 貓眼 下垂眼 - 拉开眼距 + 拉開眼距 拉近眼距 - 长眼 - 圆眼 + 長眼 + 圓眼 嗲嗲兔 - 冻龄 - 国风 + 凍齡 + 國風 混血 性感 甜美 - 邻家 - 欧美 - 妩媚 - 减龄 + 鄰家 + 歐美 + 嫵媚 + 減齡 暖冬 - 红枫 + 紅楓 少女 - 紫韵 - 厌世猫 - 人鱼 + 紫韻 + 厭世貓 + 人魚 初秋 - 千纸鹤 + 千紙鶴 超模 - 雏菊 - 港风 + 雛菊 + 港風 Rose 瘦身 - 长腿 - 细腰 + 長腿 + 細腰 美肩 美臀 - 小头 + 小頭 瘦腿 - 未检测到人体 - 全身驱动 - 半身驱动 + 未檢測到人體 + 全身驅動 + 半身驅動 - 载入图片或视频 - 未检测到手势 + 載入圖片或視頻 + 未檢測到手勢 - 抠像 + 摳像 背景 - 关键颜色 + 關鍵顏色 相似度 平滑 祛色度 - 安全区域 + 安全區域 科技 - 沙滩 + 沙灘 教室 森林 - 水墨画 - 请使用纯色背景拍摄,推荐绿色幕布效果最佳 + 水墨畫 + 請使用純色背景拍攝,推薦綠色幕布效果最佳 我知道了 - 下载失败 + 下載失敗 返回 - 白色区域为安全区域,不参与绿幕抠像 + 白色區域為安全區域,不參与綠幕摳像 - 眉毛上下功能仅支持在高端机上使用 - 眉间距功能仅支持在高端机上使用 + 眉毛上下功能僅支持在高端機上使用 + 眉間距功能僅支持在高端機上使用 - 美颜 - 美妆 - 贴纸 - 美体 + 美顏 + 美妝 + 貼紙 + 美體 - 未检测到人脸 - 未检测到人脸或人体 + 未檢測到人臉 + 未檢測到人臉或人體 奶茶 豆沙 超A - 搞笑大头 + 搞笑大頭 Animoji - 精品贴纸 + 精品貼紙 重置 自定義 diff --git a/FaceUnity/src/main/res/values/strings.xml b/FaceUnity/src/main/res/values/strings.xml index e0f66a9b3..050818a37 100644 --- a/FaceUnity/src/main/res/values/strings.xml +++ b/FaceUnity/src/main/res/values/strings.xml @@ -16,33 +16,33 @@ SingleInput DualInput - Fine smooth - Whiten - Ruddy + Buffing + Skin Tone + Rosy Sharpen - Eye brighten - Tooth whiten - Eye enlarge - Eye round - Natural + Brighen + Whiten + Enlarge + Round + Origin Goddess Long face Round face - Cheekbone - Jawbone - Cheek thin - V face - CheekNarrow - Cheek short - Cheek small - Chin - Forehead - Nose - Mouth - Skin - Reshape + Cheek + Jaw + Lower Width + V Shape + Upper Width + Short Face + Size Face + Chin Length + Hairline + Nose Size + Mouth Size + Skincare + Beauty type Filter - Presets + Style recommend Lipstick Blush Eyebrow @@ -59,16 +59,16 @@ Boyfriend Clear Grapefruit - Circle - Wrinkles + Dark Circles + Laugh Line Smile - Brow height - Brow space - Canthus - Philtrum - Length - Eye distance - Slant + Brow Position + Brow Distance + Inner Corner + Mouth Position + Nose Lift + Eye Distance + Eye Upturn None Style 1 Style 2 @@ -77,7 +77,7 @@ Style 5 Style 6 Style 7 - To use %s, cancel \'Presets\' first. + To use %s, cancel \'Style recommend\' first. Photo Video diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index c6e47c1a3..9e513cf6e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -62,6 +62,8 @@ + + = Build.VERSION_CODES.TIRAMISU) { + mCameraPermissions = new String[]{ + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.CAMERA + }; + mAlumbPermissions = new String[]{ + Manifest.permission.READ_MEDIA_IMAGES, + }; + } mCameraPermissionCallback = new Runnable() { @Override public void run() { diff --git a/common/src/main/res/layout/dialog_live_gift_popup.xml b/common/src/main/res/layout/dialog_live_gift_popup.xml index 05b18ba17..6f8b320be 100644 --- a/common/src/main/res/layout/dialog_live_gift_popup.xml +++ b/common/src/main/res/layout/dialog_live_gift_popup.xml @@ -6,77 +6,194 @@ android:layout_gravity="bottom" android:orientation="vertical"> - - - - - - - - - - - + android:layout_height="0dp" + android:layout_weight="1"> + + + + + + + + + + + + + + + + + + + + + + + + + + + android:src="@drawable/backgroud_custom_gift2" + app:riv_corner_radius_bottom_left="0dp" + app:riv_corner_radius_bottom_right="0dp" + app:riv_corner_radius_top_left="10dp" + app:riv_corner_radius_top_right="10dp" /> + + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:animateLayoutChanges="true"> - + - + + + + + + + + + + + + + + + - - - - - - - - - - - - + android:id="@+id/btn_luck_gift_tip" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="5dp"> + + - + + + + android:id="@+id/diamond_linear" + android:layout_width="wrap_content" + android:layout_height="32dp" + android:background="@drawable/background_gift_money" + android:gravity="center_vertical" + android:paddingStart="4dp" + android:paddingTop="7dp" + android:paddingBottom="7dp"> - + - + + + + + + + + + + + + + + + + + + + + + + android:text="@string/live_gift_send" + android:textColor="@color/white" + android:textSize="14sp" /> + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + android:layout_height="196dp" + android:layout_marginTop="12dp" /> - + + - + - - - - - - - + diff --git a/config.gradle b/config.gradle index 5f3bc3427..cccecb403 100644 --- a/config.gradle +++ b/config.gradle @@ -4,14 +4,14 @@ ext { buildToolsVersion: "29.0.2", minSdkVersion : 21, targetSdkVersion : 33, - versionCode : 445, + versionCode : 447, versionName : "6.5.4" ] manifestPlaceholders = [ //正式、 -// serverHost : "https://napi.yaoulive.com", + serverHost : "https://napi.yaoulive.com", // 测试 - serverHost : " https://ceshi.yaoulive.com", +// serverHost : " https://ceshi.yaoulive.com", diff --git a/live/src/main/java/com/yunbao/live/dialog/LiveGiftPopup.java b/live/src/main/java/com/yunbao/live/dialog/LiveGiftPopup.java index f8623d2d3..a7258c47d 100644 --- a/live/src/main/java/com/yunbao/live/dialog/LiveGiftPopup.java +++ b/live/src/main/java/com/yunbao/live/dialog/LiveGiftPopup.java @@ -3,6 +3,7 @@ package com.yunbao.live.dialog; import static com.yunbao.common.CommonAppConfig.isGetNewWrap; import static com.yunbao.common.utils.RouteUtil.PATH_COIN; +import android.annotation.SuppressLint; import android.app.Dialog; import android.content.DialogInterface; import android.graphics.Color; @@ -15,6 +16,7 @@ import android.text.TextUtils; import android.text.style.ForegroundColorSpan; import android.util.Log; import android.view.Gravity; +import android.view.MotionEvent; import android.view.View; import android.view.Window; import android.view.WindowManager; @@ -103,7 +105,7 @@ public class LiveGiftPopup extends AbsDialogFragment { private TextView diamondText, goldText, liveWrap, vipGoldDesc, vipGoldTitle, giftNumber; private RecyclerView giftTitle; private GiftTitleAdapter giftTitleAdapter; - private FrameLayout contextLayoutGift; + private FrameLayout contextLayoutGift, overlay; private String mStream, mLiveUid; private FrameLayout blindBox, frameBlindTop, noNobility, giftNumberLayout, giftSendLayout, namingLayout; private ProgressBar progressBlind, progressBlind1, progressBlind2; @@ -140,7 +142,7 @@ public class LiveGiftPopup extends AbsDialogFragment { Bus.getOff(this); } - + @SuppressLint("ClickableViewAccessibility") private void initView() { gitBackground = mRootView.findViewById(R.id.git_background2); contextLayoutGift = mRootView.findViewById(R.id.context_layout_gift); @@ -182,6 +184,7 @@ public class LiveGiftPopup extends AbsDialogFragment { leaveHint = mRootView.findViewById(R.id.leave_hint); progressBar = mRootView.findViewById(R.id.progressBar); levelingLayout = mRootView.findViewById(R.id.leveling_layout); + overlay = mRootView.findViewById(R.id.overlay); namingLayout.setVisibility(View.GONE); //设置礼物弹窗背景 ImgLoader.displayBlurLive(getContext(), R.drawable.backgroud_custom_gift2, gitBackground); @@ -199,6 +202,27 @@ public class LiveGiftPopup extends AbsDialogFragment { giftDescription.setVisibility(View.GONE); operateImage.setVisibility(View.GONE); levelingLayout.setVisibility(View.VISIBLE); + updateOverlayVisibility(); + blindBox.setOnTouchListener((v, event) -> { + if(event.getAction()==MotionEvent.ACTION_UP) { + v.performClick(); + } + return true; + }); + namingLayout.setOnTouchListener((v, event) -> { + if(event.getAction()==MotionEvent.ACTION_UP) { + v.performClick(); + } + return true; + }); + operateImage.setOnTouchListener((v, event) -> { + if(event.getAction()==MotionEvent.ACTION_UP) { + v.performClick(); + } + return true; + }); + + overlay.setOnClickListener(v -> dismiss()); //点击包裹 ViewClicksAntiShake.clicksAntiShake(liveWrap, new ViewClicksAntiShake.ViewClicksCallBack() { @Override @@ -460,7 +484,7 @@ public class LiveGiftPopup extends AbsDialogFragment { int nextLeve = Integer.parseInt(coinModel.getUserNextLevelRewards()); - BigDecimal maxLeve = new BigDecimal(coinModel.getUserLevelUpgrades()).add( new BigDecimal(coinModel.getUserLevelCurrentConsumption())); + BigDecimal maxLeve = new BigDecimal(coinModel.getUserLevelUpgrades()).add(new BigDecimal(coinModel.getUserLevelCurrentConsumption())); try { String leveNext = String.valueOf(nextLeve); String userNextLevel = coinModel.getUserLevelUpgrades(); @@ -731,7 +755,7 @@ public class LiveGiftPopup extends AbsDialogFragment { @Subscribe(threadMode = ThreadMode.MAIN) public void onLiveGiftItemEvent(LiveGiftItemEvent event) { liveGiftModel = event.getLiveGiftModel(); - + updateOverlayVisibility(); if (!TextUtils.isEmpty(liveGiftModel.getNamingLiveuid()) && !TextUtils.isEmpty(liveGiftModel.getNamingUid()) && !TextUtils.equals(liveGiftModel.getNamingLiveuid(), "0") && @@ -1240,4 +1264,15 @@ public class LiveGiftPopup extends AbsDialogFragment { } } + private void updateOverlayVisibility() { + /* if ( + blindBox.getVisibility() == View.VISIBLE || + operateImage.getVisibility() == View.VISIBLE || + namingLayout.getVisibility() == View.VISIBLE + ) { + overlay.setVisibility(View.VISIBLE); + } else { + overlay.setVisibility(View.GONE); + }*/ + } } diff --git a/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java b/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java index 74a2bbf45..5c36c21d7 100644 --- a/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java +++ b/main/src/main/java/com/yunbao/main/dialog/MainStartDialogFragment.java @@ -6,6 +6,7 @@ import android.animation.AnimatorListenerAdapter; import android.animation.ObjectAnimator; import android.app.Dialog; import android.content.Intent; +import android.os.Build; import android.os.Bundle; import android.os.Handler; import android.view.Gravity; @@ -160,12 +161,22 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O public void onLiveClick() { boolean isAnchor = IMLoginManager.get(mContext).getUserInfo().anchorUserType(); if (isAnchor) { - mProcessResultUtil.requestPermissions(new String[]{ - Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA, - Manifest.permission.RECORD_AUDIO - }, mStartLiveRunnable); + String[] permissions; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + permissions=new String[]{ + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO + }; + }else{ + permissions=new String[]{ + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO + }; + } + mProcessResultUtil.requestPermissions(permissions, mStartLiveRunnable); } else { ToastUtil.show(getString(R.string.only_open_anchor)); } @@ -176,12 +187,22 @@ public class MainStartDialogFragment extends AbsDialogFragment implements View.O public void onVideoClick() { boolean isAnchor = IMLoginManager.get(mContext).getUserInfo().anchorUserType(); if (isAnchor) { - mProcessResultUtil.requestPermissions(new String[]{ - Manifest.permission.READ_EXTERNAL_STORAGE, - Manifest.permission.WRITE_EXTERNAL_STORAGE, - Manifest.permission.CAMERA, - Manifest.permission.RECORD_AUDIO - }, mStartVideoRunnable); + String[] permissions; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) { + permissions=new String[]{ + Manifest.permission.READ_MEDIA_IMAGES, + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO + }; + }else{ + permissions=new String[]{ + Manifest.permission.READ_EXTERNAL_STORAGE, + Manifest.permission.WRITE_EXTERNAL_STORAGE, + Manifest.permission.CAMERA, + Manifest.permission.RECORD_AUDIO + }; + } + mProcessResultUtil.requestPermissions(permissions, mStartVideoRunnable); } else { ToastUtil.show(getString(R.string.only_open_anchor)); }