Merge branch 'master' into master_sud

# Conflicts:
#	common/src/main/java/com/yunbao/common/http/PDLiveApi.java
#	common/src/main/java/com/yunbao/common/http/live/LiveNetManager.java
#	common/src/main/res/values-en-rUS/string.xml
#	common/src/main/res/values-zh-rHK/strings.xml
#	common/src/main/res/values-zh-rTW/strings.xml
#	common/src/main/res/values-zh/strings.xml
#	common/src/main/res/values/strings.xml
#	config.gradle
This commit is contained in:
18401019693
2023-10-07 14:46:22 +08:00
58 changed files with 1184 additions and 157 deletions

View File

@@ -1,5 +1,7 @@
package com.yunbao.live.activity;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import android.app.Dialog;
import android.content.ClipData;
import android.content.ClipboardManager;
@@ -15,6 +17,7 @@ import android.widget.TextView;
import androidx.fragment.app.DialogFragment;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.GsonUtils;
@@ -36,6 +39,7 @@ import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.interfaces.KeyBoardHeightChangeListener;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.KeyBoardHeightUtil2;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ProcessImageUtil;
@@ -899,7 +903,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
@Override
public void onClick(View v) {
String url = CommonAppConfig.HOST + "/index.php?g=Appapi&m=task&a=index&uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&tabIndex=1";
WebViewActivity.forward(mContext, url,true);
WebViewActivity.forward(mContext, url, true);
dialog.dismiss();
}
});
@@ -925,7 +929,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
if (!mIsAnchor) {
UserBean u = CommonAppConfig.getInstance().getUserBean();
if (u != null && u.getLevel() < mDanMuLevel) {
ToastUtil.show(String.format(mContext.getString(R.string.live_level_danmu_limit), mDanMuLevel+""));
ToastUtil.show(String.format(mContext.getString(R.string.live_level_danmu_limit), mDanMuLevel + ""));
return;
}
}
@@ -946,7 +950,20 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
onCoinChanged(coin);
}
String[] data = new String[]{obj.getString("barragetoken")};
SocketRyChatUtil.sendDanmuMessage(mLiveUid, contents,obj.getIntValue("level_fans"));
SocketRyChatUtil.sendDanmuMessage(mLiveUid, contents, obj.getIntValue("level_fans"));
} else if (code==1001) {
DialogUitl.showSimpleDialog(mContext, msg, new DialogUitl.SimpleCallback2() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick(Dialog dialog, String content) {
dialog.dismiss();
ARouter.getInstance().build(PATH_COIN).withInt("p", 0).navigation();
}
});
} else {
ToastUtil.show(msg);
}
@@ -962,7 +979,7 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
if (!mIsAnchor) {
UserBean u = CommonAppConfig.getInstance().getUserBean();
if (u != null && u.getLevel() < mChatLevel) {
ToastUtil.show(String.format(mContext.getString(R.string.live_level_chat_limit), mChatLevel+""));
ToastUtil.show(String.format(mContext.getString(R.string.live_level_chat_limit), mChatLevel + ""));
return;
}
}
@@ -1276,9 +1293,9 @@ public abstract class LiveActivity extends AbsActivity implements SocketMessageL
} else {
bundle.putString(Constants.URL, CommonAppConfig.HOST + "/h5/live/fansClub.html" + "?uid=" + CommonAppConfig.getInstance().getUid() + "&token=" + CommonAppConfig.getInstance().getToken() + "&anchorUid=" + uid);
}
bundle.putString("liveUid",mLiveUid);
bundle.putString("anchorName",mAncherName);
bundle.putString("mStream",mStream);
bundle.putString("liveUid", mLiveUid);
bundle.putString("anchorName", mAncherName);
bundle.putString("mStream", mStream);
fragment.setArguments(bundle);
fragment.show(getSupportFragmentManager(), "LiveGuardDialogFragment");
}

View File

@@ -80,6 +80,7 @@ import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.http.main.MainNetManager;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.OpenAdManager;
import com.yunbao.common.pay.PayCallback;
import com.yunbao.common.pay.PayPresenter;
import com.yunbao.common.utils.Bus;
@@ -100,6 +101,7 @@ import com.yunbao.live.R;
import com.yunbao.live.adapter.VerticalPagerAdapter;
import com.yunbao.live.bean.ImUserBean;
import com.yunbao.live.bean.LiveChatBean;
import com.yunbao.live.bean.LiveGuardInfo;
import com.yunbao.live.dialog.LiveFansFragment;
import com.yunbao.live.dialog.LiveGameDialogFragment;
import com.yunbao.live.dialog.LiveGiftPopup;
@@ -561,6 +563,7 @@ public class LiveAudienceActivity extends LiveActivity {
@Override
public void onBackPressed() {
MobclickAgent.onEvent(mContext, "live_room_close", "退出直播间");
OpenAdManager.getInstance().dismiss();
try {
manager.onBackPressed();
if (MicStatusManager.getInstance().getMicStatus() == MicStatusManager.MIC_TYPE_REQUEST) {
@@ -777,6 +780,10 @@ public class LiveAudienceActivity extends LiveActivity {
}
}
GiftCacheUtil.getInstance().restart();
if (manager.isEnterRoom()) {
new Handler(Looper.getMainLooper()).postDelayed(() -> OpenAdManager.getInstance().show(OpenAdManager.TYPE_LIVE,
LiveGuardInfo.isGuard(mLiveGuardInfo)), 400);
}
}
@Override

View File

@@ -70,6 +70,7 @@ import com.yunbao.common.utils.LogUtil;
import com.yunbao.common.utils.MicStatusManager;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.LiveNewWishListPopup;
import com.yunbao.common.views.LiveRobotSettingCustomPopup;
import com.yunbao.faceunity.FaceManager;
@@ -1244,7 +1245,11 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
});
//todo 安卓端状态码说明文档https://docs.rongcloud.cn/v4/views/rtc/call/code/android.html
Log.e("ry", rtcErrorCode + "aaaaaa" + CommonAppConfig.getInstance().getUid() + "VDSSSS" + pkUid);
ToastUtil.show("邀请 " + pkUid + " 发送失败 " + rtcErrorCode);
if(WordUtil.isNewZh()) {
ToastUtil.show("邀请 " + pkUid + " 发送失败 " + rtcErrorCode);
}else{
ToastUtil.show("invite " + pkUid + " failed:"+rtcErrorCode);
}
}
});
@@ -1293,7 +1298,11 @@ public class LiveRyAnchorActivity extends LiveActivity implements LiveFunctionCl
@Override
public void onSuccess() {
if (!extra.equals(SOCKET_LIVE_DRPK_RANDOM)) {
ToastUtil.show("邀请 " + pkUid + " 发送成功");
if(WordUtil.isNewZh()) {
ToastUtil.show("邀请 " + pkUid + " 发送成功");
}else{
ToastUtil.show("invite " + pkUid + " successful");
}
}
runOnUiThread(new Runnable() {
@Override

View File

@@ -221,9 +221,15 @@ public class AnchorUserMicInfoAdapter extends RefreshAdapter<MicUserBean> {
}
if (bean.getType() == TYPE_MIC_REQUEST) {
mBtn.setText("同意");
if(!WordUtil.isNewZh()){
mBtn.setText("agree");
}
mBtn.setBackgroundResource(R.drawable.bg_anchor_mic_info_btn_ok);
} else if (bean.getType() == TYPE_MIC_INVITE) {
mBtn.setText("邀请");
if (!WordUtil.isNewZh()) {
mBtn.setText("invite");
}
mBtn.setBackgroundResource(R.drawable.bg_anchor_mic_info_btn_invite);
}
ImgLoader.display(mContext, bean.getAvatar(), mAvatar);

View File

@@ -3,6 +3,8 @@ package com.yunbao.live.bean;
import android.os.Parcel;
import android.os.Parcelable;
import com.yunbao.common.Constants;
/**
* Created by cxf on 2018/11/14.
*/
@@ -72,5 +74,8 @@ public class LiveGuardInfo implements Parcelable {
}
};
public static boolean isGuard(LiveGuardInfo info){
return info != null && info.getMyGuardType() != Constants.GUARD_TYPE_NONE;
}
}

View File

@@ -130,13 +130,13 @@ public class FreePkDialogFragment extends AbsDialogFragment implements View.OnCl
}
});
if(!WordUtil.isNewZh()){
mPkNumText.setText("Free PK remaining number");
mPkNumText.setText("Free PK number");
((TextView)findViewById(R.id.tmp_text2)).setText("Updated daily at 6am");
}
if (mDrPkNum != -1) {
mPkNumText.setText("多人PK剩余次數");
if(!WordUtil.isNewZh()){
mPkNumText.setText("multi-user PK remaining number");
mPkNumText.setText("multi-user PK number");
}
}
initRecycler();

View File

@@ -1,5 +1,7 @@
package com.yunbao.live.dialog;
import static com.yunbao.common.utils.RouteUtil.PATH_COIN;
import android.app.Dialog;
import android.os.Bundle;
import android.text.Html;
@@ -19,6 +21,7 @@ import androidx.annotation.Nullable;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.makeramen.roundedimageview.RoundedImageView;
@@ -34,6 +37,7 @@ import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
@@ -462,7 +466,7 @@ public class LiveNewGuardBuyDialogFragment extends AbsDialogFragment implements
private void buy() {
DialogUitl.showSimpleDialog(mContext,
String.format(mContext.getString(R.string.guard_buy_tip_3), mTargetBuyBean.getCoin(), mCoinName, mTargetBuyBean.getShopName(getContext())),
String.format(mContext.getString(R.string.guard_buy_tip_3), mTargetBuyBean.getCoin()+"", mCoinName, mTargetBuyBean.getShopName(getContext())),
new DialogUitl.SimpleCallback() {
@Override
@@ -499,6 +503,20 @@ public class LiveNewGuardBuyDialogFragment extends AbsDialogFragment implements
}
((LiveActivity) mContext).sendBuyGuardMessage2(votes, guardNum, guardType, ancherName, liveuid);
dismiss();
}else if(code==1002){
DialogUitl.showSimpleDialog(mContext, msg, new DialogUitl.SimpleCallback2() {
@Override
public void onCancelClick() {
}
@Override
public void onConfirmClick(Dialog dialog, String content) {
dialog.dismiss();
ARouter.getInstance().build(PATH_COIN).withInt("p", 0).navigation();
}
});
return;
}
ToastUtil.show(msg);
}

View File

@@ -22,6 +22,7 @@ import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
@@ -118,7 +119,7 @@ public class LiveNewWishListDialogFragment extends AbsDialogFragment implements
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
ToastUtil.show("修改成功");
ToastUtil.show(WordUtil.isNewZh()?"修改成功":"Success");
dismiss();
} else {
ToastUtil.show("修改失败" + (msg.isEmpty() ? "" : msg));

View File

@@ -18,6 +18,7 @@ import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.interfaces.OnItemClickListener;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
@@ -117,7 +118,7 @@ public class LiveWishListDialogFragment extends AbsDialogFragment implements OnI
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
ToastUtil.show("修改成功");
ToastUtil.show(WordUtil.isNewZh()?"修改成功":"Success");
dismiss();
} else {
ToastUtil.show("修改失败" + (msg.isEmpty() ? "" : msg));

View File

@@ -57,6 +57,7 @@ import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.ScreenDimenUtil;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveAudienceActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
@@ -642,6 +643,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.i("ry", "订阅资源失败: " + rtcErrorCode.getReason());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -768,6 +770,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.i("ry", "订阅资源失败: " + rtcErrorCode.getReason());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -855,7 +858,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onSuccess(RCRTCOtherRoom rcrtcOtherRoom) {
rcrtcOtherRoom.registerOtherRoomEventsListener(otherRoomEventsListener);
ToastUtil.show("接受成功");
ToastUtil.show(WordUtil.isNewZh()?"接受成功":"Success");
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
for (int i = 0; i < rcrtcOtherRoom.getRemoteUsers().size(); i++) {
@@ -924,6 +927,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.i("ry", "订阅资源失败: " + rtcErrorCode);
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -973,7 +977,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onSuccess(RCRTCOtherRoom rcrtcOtherRoom) {
rcrtcOtherRoom.registerOtherRoomEventsListener(otherRoomEventsListener);
ToastUtil.show("接受成功");
ToastUtil.show(WordUtil.isNewZh()?"接受成功":"Success");
new Handler(Looper.getMainLooper()).post(new Runnable() {
public void run() {
Log.e("ry", liveid + "来了!!!!" + rcrtcOtherRoom.getRemoteUsers().size());
@@ -1000,6 +1004,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.e("ry", "订阅资源失败: " + rtcErrorCode);
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -1655,7 +1660,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
}
Log.e("ry", "多人接受成功" + mApplyUid);
ToastUtil.show("接受成功");
ToastUtil.show(WordUtil.isNewZh()?"接受成功":"Success");
//遍历远端用户列表
for (int i = 0; i < rcrtcOtherRoom.getRemoteUsers().size(); i++) {
Log.e("ry", rcrtcOtherRoom.getRemoteUsers().get(i).getUserId() + "收到rcrtcOtherRoom" + rcrtcOtherRoom.getRemoteUsers().size());
@@ -1773,6 +1778,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.i("ry", "订阅资源失败: " + rtcErrorCode.getReason());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
//2. 合流画布设置
@@ -1963,6 +1969,7 @@ public class LiveRyLinkMicPkPresenter implements View.OnClickListener {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.i("ry", "订阅资源失败: " + rtcErrorCode.getReason());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});

View File

@@ -650,6 +650,7 @@ public class SocketRyClient {
pkRankBean.setId(Integer.parseInt(item.getString("new_rank_id")));
pkRankBean.setName(item.getString("new_rank_name"));
pkRankBean.setImg(item.getString("new_rank_img"));
pkRankBean.setNewRankNameEn(item.getString("new_rank_name_en"));
EventBus.getDefault().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.PK_RANK_UPDATE)
.setObject(pkRankBean));

View File

@@ -1,10 +1,12 @@
package com.yunbao.live.utils;
import android.content.Context;
import android.graphics.Color;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.widget.RelativeLayout;
import android.widget.TextView;
import androidx.annotation.NonNull;
@@ -18,9 +20,14 @@ import com.google.android.exoplayer2.analytics.AnalyticsListener;
import com.google.android.exoplayer2.ui.AspectRatioFrameLayout;
import com.google.android.exoplayer2.ui.StyledPlayerView;
import com.google.android.exoplayer2.video.VideoSize;
import com.lzf.easyfloat.EasyFloat;
import com.yunbao.common.utils.StringUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.R;
import java.util.Timer;
import java.util.TimerTask;
/**
* 直播间播放器管理器
* 通过预加载子播放器来实现无缝切换分辨率功能
@@ -40,6 +47,9 @@ public class LiveExoPlayerManager {
private static double log_buffer_time = 0, log_buffer_max_time;
private String url = "";
private Context mContext;
private TimerTask task;
TextView debugText;
public LiveExoPlayerManager(Context mContext) {
this.mContext = mContext;
@@ -59,6 +69,109 @@ public class LiveExoPlayerManager {
handler = new Handler(Looper.getMainLooper());
setListener();
setAnalyticsListener();
// createDeBugDialog();
}
int index = 0;
private void createTask() {
if (task != null) {
return;
}
task = new TimerTask() {
@Override
public void run() {
handler.post(new Runnable() {
@Override
public void run() {
try {
if (index > 5 && !player1.isPlaying() && !player2.isPlaying()) {
index = 0;
Log.i(TAG, "5秒内播放器没有播放重新播放");
ToastUtil.showDebug("强制重播");
handler.removeCallbacks(buffRunnable);
replay();
cancel();
} else if (player1.isPlaying() || player2.isPlaying()) {
index = 0;
} else {
index++;
}
} catch (Exception e) {
e.printStackTrace();
cancel();
task = null;
}
}
});
}
};
new Timer().schedule(task, 0, 1000);
}
private TimerTask debugTask;
private void createDeBugDialog() {
debugText = new TextView(mContext);
debugText.setText(getDebugText());
debugText.setBackgroundColor(Color.WHITE);
debugText.setTextColor(Color.BLACK);
EasyFloat.with(mContext)
.setTag("debug")
.setLayout(debugText)
.show();
debugTask = new TimerTask() {
@Override
public void run() {
updateDebug();
}
};
new Timer().schedule(debugTask, 0, 500);
}
private String getDebugText() {
StringBuilder sb = new StringBuilder();
try {
sb.append("player1: ").append(getPlayStateText(player1)).append("|").append(player1.isPlaying()).append("\n");
sb.append("player2: ").append(getPlayStateText(player2)).append("|").append(player2.isPlaying()).append("\n");
sb.append("卡顿计数器:").append(playBufferIndex).append("\n");
sb.append("强制播放计时器:").append(index).append("\n");
} catch (Exception e) {
e.printStackTrace();
EasyFloat.dismiss("debug");
debugTask.cancel();
}
return sb.toString();
}
private void updateDebug() {
handler.post(new Runnable() {
@Override
public void run() {
debugText.setText(getDebugText());
}
});
}
private String getPlayStateText(ExoPlayer player) {
switch (player.getPlaybackState()) {
case Player.STATE_READY:
return "STATE_READY";
case Player.STATE_BUFFERING:
return "STATE_BUFFERING";
case Player.STATE_ENDED:
return "STATE_ENDED";
case Player.STATE_IDLE:
return "STATE_IDLE";
default:
return player.getPlaybackState() + "";
}
}
@@ -171,6 +284,7 @@ public class LiveExoPlayerManager {
if (listener != null) {
listener.onIsPlayingChanged(true);
}
createTask();
}
}
@@ -245,6 +359,7 @@ public class LiveExoPlayerManager {
if (listener != null) {
listener.onIsPlayingChanged(true);
}
createTask();
}
}
@@ -279,7 +394,12 @@ public class LiveExoPlayerManager {
* @param url 地址
*/
public void startUrl(String url) {
if (url != null && url.equals(this.url)) return;
if (!StringUtil.isEmpty(url) && url.equals(this.url)) return;
if (task != null) {
task.cancel();
task = null;
}
Log.i(TAG, "startUrl: " + url + " > " + mainView.getResizeMode());
handler.removeCallbacks(buffRunnable);
this.url = url;
@@ -302,7 +422,11 @@ public class LiveExoPlayerManager {
* @param url 地址
*/
public void switchUrl(String url) {
if (url != null && url.equals(this.url)) return;
if (!StringUtil.isEmpty(url) && url.equals(this.url)) return;
if (task != null) {
task.cancel();
task = null;
}
Log.i(TAG, "switchUrl: " + url + " src : " + this.url);
this.url = url;
playBufferIndex = 0;
@@ -351,6 +475,10 @@ public class LiveExoPlayerManager {
if (getNextPlayer() != null && getNextPlayer().isPlaying()) {
getNextPlayer().stop();
}
if (task != null) {
task.cancel();
task = null;
}
clearUrl();
}
@@ -369,6 +497,14 @@ public class LiveExoPlayerManager {
if (getNextPlayer() != null) {
getNextPlayer().stop();
}
if (listener != null) {
listener.onPlaybackStateChanged(Player.STATE_IDLE);
}
handler.removeCallbacks(buffRunnable);
if (task != null) {
task.cancel();
task = null;
}
String tmp = url;
url = null;
startUrl(tmp);
@@ -394,6 +530,13 @@ public class LiveExoPlayerManager {
player2.clearVideoSurface();
player2.release();
}
if (task != null) {
task.cancel();
task = null;
}
if (debugTask != null) {
debugTask.cancel();
}
player1 = null;
player2 = null;
mainView.setKeepContentOnPlayerReset(false);

View File

@@ -157,7 +157,7 @@ public class LiveLinkMicPkViewHolder extends AbsViewHolder {
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
Log.i("女神说", "倒计时状态:" + s);
if (mTime.getVisibility() == View.VISIBLE) {
if (mTime.getVisibility() == View.VISIBLE && !s.toString().contains(mContext.getString(R.string.live_pk_time_2))) {
EventBus.getDefault().post(new LiveAudienceEvent()
.setType(LiveAudienceEvent.LiveAudienceType.LIVE_PK_ING));
}
@@ -218,7 +218,7 @@ public class LiveLinkMicPkViewHolder extends AbsViewHolder {
if (mTime != null) {
Log.i("vvvs", content);
if (content.trim().equals("00:00")) {
mTime.setText("結算中");
mTime.setText(WordUtil.isNewZh()?"結算中":"waiting");
} else {
mTime.setText(content);
}

View File

@@ -689,13 +689,13 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
}
});
} else if ("inviteMic".equals(str)) {
String content="邀請您進行語音連麥";
String confirm="接受";
String cancel="拒絕";
if(!WordUtil.isNewZh()){
content="You are invited to join the voice connection";
confirm="accept";
cancel="cancel";
String content = "邀請您進行語音連麥";
String confirm = "接受";
String cancel = "拒絕";
if (!WordUtil.isNewZh()) {
content = "You are invited to join the voice connection";
confirm = "accept";
cancel = "cancel";
}
DialogUitl.Builder builder = new DialogUitl.Builder(mContext)
.setContent(content)
@@ -708,12 +708,12 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
public void onConfirmClick(Dialog dialog, String content) {
String[] permissions;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
permissions=new String[]{
permissions = new String[]{
Manifest.permission.READ_MEDIA_IMAGES,
Manifest.permission.RECORD_AUDIO
};
}else{
permissions=new String[]{
} else {
permissions = new String[]{
Manifest.permission.READ_EXTERNAL_STORAGE,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.RECORD_AUDIO
@@ -780,9 +780,9 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
onPrepared();
rcrtcRoom = null;
MicStatusManager.getInstance().clear();
if(WordUtil.isNewZh()) {
if (WordUtil.isNewZh()) {
ToastUtil.show("已成功退出語音連麥");
}else{
} else {
ToastUtil.show("You have successfully exited the voice connection");
}
resumePlay();
@@ -867,10 +867,10 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
}
private void showToast() {
if(WordUtil.isNewZh()) {
if (WordUtil.isNewZh()) {
DialogUitl.showToast(mContext, "設置成功\n" +
"正在為你轉換中", 3000);
}else{
} else {
DialogUitl.showToast(mContext, "successful\n" +
"It's being converted for you", 3000);
}
@@ -1007,7 +1007,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
@Override
public void onFailed(RTCErrorCode errorCode) {
Log.e("ry", userinputStreamList.size() + LiveActivity.mLiveUid + "订阅失败" + errorCode.toString());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
@Override
@@ -1045,6 +1045,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.e("ry", "远端失败" + list.size());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -1197,6 +1198,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.e("ry", "订阅资源失败: " + rtcErrorCode.getReason());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -1285,6 +1287,7 @@ public class LivePlayRyViewHolder extends LiveRoomPlayViewHolder {
Player.Listener.super.onIsPlayingChanged(isPlaying);
if (isPlaying) {
hideCover();
mLoading.setVisibility(View.INVISIBLE);
Log.i(TAG, "onIsPlayingChanged: 开始播放 | waitNextUrl = " + waitNextUrl);
OkDownload.getInstance().startAll();
if (loadingListener != null) {

View File

@@ -76,6 +76,7 @@ import cn.rongcloud.rtc.api.RCRTCMixConfig;
import cn.rongcloud.rtc.api.RCRTCRemoteUser;
import cn.rongcloud.rtc.api.RCRTCRoom;
import cn.rongcloud.rtc.api.RCRTCRoomConfig;
import cn.rongcloud.rtc.api.callback.IRCRTCEngineEventListener;
import cn.rongcloud.rtc.api.callback.IRCRTCResultCallback;
import cn.rongcloud.rtc.api.callback.IRCRTCResultDataCallback;
import cn.rongcloud.rtc.api.callback.IRCRTCRoomEventsListener;
@@ -85,6 +86,7 @@ import cn.rongcloud.rtc.api.stream.RCRTCVideoStreamConfig;
import cn.rongcloud.rtc.api.stream.RCRTCVideoView;
import cn.rongcloud.rtc.base.RCRTCParamsType;
import cn.rongcloud.rtc.base.RCRTCRoomType;
import cn.rongcloud.rtc.base.RCRTCVideoEventCode;
import cn.rongcloud.rtc.base.RTCErrorCode;
import cn.rongcloud.rtc.core.CameraVideoCapturer;
import cn.rongcloud.rtc.core.RendererCommon;
@@ -123,6 +125,7 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
private ImageView avatarOther;
private LinearLayout goto_room_view;
private boolean isPk = false;
private boolean isNeedOpenCamera = false;
//修改上面主播的头像
@Subscribe(threadMode = ThreadMode.MAIN)
@@ -175,7 +178,8 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
@Override
public void onFailed(RTCErrorCode rtcErrorCode) {
Log.e("ry", "远端失败" + list.size());
Log.e("ry", "远端失败" + list.size() + "|errorCode:" + rtcErrorCode.toString());
ToastUtil.show(mContext.getString(R.string.live_pk_link_error));
}
});
}
@@ -494,9 +498,10 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
btn_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogUitl.showSimpleDialog(mContext, "是否要斷開連麥?", new DialogUitl.SimpleCallback() {
DialogUitl.showSimpleDialog(mContext, WordUtil.isNewZh() ? "是否要斷開連麥?" : "Do you want to disconnect Link?", new DialogUitl.SimpleCallback() {
@Override
public void onConfirmClick(Dialog dialog, String content) {
Log.i("PK----->", "updateSub: " + isPk + "|");
aheadOfScheduleEndPK(mPkUid, CommonAppConfig.getInstance().getUserBean().getUserNiceName(), (String) tv_avatarOther_name.getTag());
//断开连麦
LiveRyAnchorActivity.isDRPK = 0;
@@ -693,10 +698,34 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
//设置摄像头最大缩放比例
boolean zoom = RCRTCEngine.getInstance().getDefaultVideoStream().setCameraZoomFactor(1.0f);
// ToastUtil.show("设置比例="+zoom);
Log.i("摄像头", "onSuccess: 打开摄像头");
isNeedOpenCamera = false;
}
@Override
public void onFailed(RTCErrorCode errorCode) {
Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode);
}
});
RCRTCEngine.getInstance().registerEventListener(new IRCRTCEngineEventListener() {
@Override
public void onKicked(String roomId, RCRTCParamsType.RCRTCKickedReason kickedReason) {
}
@Override
public void onError(RTCErrorCode errorCode) {
super.onError(errorCode);
Log.i("摄像头", "onError: 错误码" + errorCode);
}
@Override
public void onLocalVideoEventNotify(RCRTCVideoEventCode event) {
super.onLocalVideoEventNotify(event);
Log.i("摄像头", "onLocalVideoEventNotify: 本地视频事件" + event.code);
if (event == RCRTCVideoEventCode.END_CAMERA_ERROR_UNKNOWN) {
isNeedOpenCamera = true;
}
}
});
//设置摄像头最大缩放比例
@@ -916,6 +945,24 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
@Override
public void onResume() {
mPaused = false;
Log.i("摄像头", "onResume: " + isNeedOpenCamera);
if(isNeedOpenCamera){
RCRTCEngine.getInstance().getDefaultVideoStream().startCamera(new IRCRTCResultDataCallback<Boolean>() {
@Override
public void onSuccess(Boolean data) {
//设置摄像头最大缩放比例
boolean zoom = RCRTCEngine.getInstance().getDefaultVideoStream().setCameraZoomFactor(1.0f);
// ToastUtil.show("设置比例="+zoom);
Log.i("摄像头", "onSuccess: 打开摄像头");
isNeedOpenCamera = false;
}
@Override
public void onFailed(RTCErrorCode errorCode) {
Log.i("摄像头", "onFailed: 打开摄像头失败 " + errorCode);
}
});
}
}
@Override
@@ -1055,5 +1102,6 @@ public class LivePushRyViewHolder extends AbsRyLivePushViewHolder implements ITX
} else if (event.getType() == LIVE_PK_ING) {
isPk = true;
}
Log.i("PK----->", "updateSub: " + isPk + "|" + event.getType());
}
}

View File

@@ -36,6 +36,7 @@ import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.DpUtil;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.live.R;
import com.yunbao.live.activity.LiveActivity;
import com.yunbao.common.http.LiveHttpConsts;
@@ -103,7 +104,7 @@ public class LivePushTxViewHolder extends AbsLivePushViewHolder implements ITXLi
btn_close.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
DialogUitl.showSimpleDialog(mContext, "是否要斷開連麥?", new DialogUitl.SimpleCallback() {
DialogUitl.showSimpleDialog(mContext, WordUtil.isNewZh()?"是否要斷開連麥?":"Do you want to disconnect Link?", new DialogUitl.SimpleCallback() {
@Override
public void onConfirmClick(Dialog dialog, String content) {
//断开连麦

View File

@@ -462,7 +462,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
} else if ("checkNewLetter".equals(str)) {
checkNewLetter();
}else if("exitFansGroup".equals(str)){
} else if ("exitFansGroup".equals(str)) {
setFansGroup("0");
}
}
@@ -1818,7 +1818,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
.append("&isZh=")
.append(((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
}
if (htmlUrl.toString().contains("StarChallenge")){
if (htmlUrl.toString().contains("StarChallenge")) {
Map<String, String> map_ekv = new HashMap<String, String>();
map_ekv.put("link", htmlUrl.toString());
MobclickAgent.onEvent(mContext, "live_room_star", map_ekv);
@@ -1890,7 +1890,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
.append("&isZh=")
.append(((IMLoginManager.get(mContext).getLocaleLanguage() == Locale.SIMPLIFIED_CHINESE) ? "1" : "0"));
}
if (htmlUrl.toString().contains("StarChallenge")){
if (htmlUrl.toString().contains("StarChallenge")) {
Map<String, String> map_ekv = new HashMap<String, String>();
map_ekv.put("link", htmlUrl.toString());
MobclickAgent.onEvent(mContext, "live_room_star", map_ekv);
@@ -2341,11 +2341,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
if (Integer.parseInt(bean.getRedVal()) > 2) {
mRedVal.setVisibility(View.VISIBLE);
mRedVal.setText(bean.getRedVal() + "連勝");
mRedVal.setText(bean.getRedVal() + (WordUtil.isNewZh()?"連勝":"Win"));
}
if (Integer.parseInt(bean.getBlueVal()) > 2) {
mBlueVal.setVisibility(View.VISIBLE);
mBlueVal.setText(bean.getBlueVal() + "連勝");
mBlueVal.setText(bean.getBlueVal() + (WordUtil.isNewZh()?"連勝":"Win"));
}
mPkRankTopIcon.setVisibility(View.VISIBLE);
ImgLoader.display(mContext, bean.getPkTopImgUrl(), mPkRankTopIcon);
@@ -2392,7 +2392,11 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
}
private void updatePkRank(PkRankBean bean) {
mPkRankText.setText(bean.getName());
if (WordUtil.isNewZh()) {
mPkRankText.setText(bean.getName());
} else {
mPkRankText.setText(bean.getNewRankNameEn());
}
ImgLoader.display(mContext, bean.getImg(), mPkRankIcon);
}
@@ -4160,7 +4164,7 @@ public class LiveRoomViewHolder extends AbsViewHolder implements View.OnClickLis
@Override
public void onBannerClick(List datas, int p) {
if (TextUtils.equals("特惠首冲", mBannerList4.get(p).getName())){
if (TextUtils.equals("特惠首冲", mBannerList4.get(p).getName())) {
Map<String, String> map_ekv = new HashMap<String, String>();
map_ekv.put("link", mBannerList4.get(p).getLink());

View File

@@ -64,6 +64,7 @@ import com.yunbao.common.http.LiveHttpConsts;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.live.LiveNetManager;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.OpenAdManager;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DialogUitl;
@@ -271,6 +272,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
public void run() {
loading.setVisibility(View.GONE);
enterRoomLeaveHandler.post(enterRoomLeaveRunnable);
OpenAdManager.getInstance().show(OpenAdManager.TYPE_LIVE, LiveGuardInfo.isGuard(mLiveGuardInfo));
}
};
final Runnable loadTimeoutRunnableGone = new Runnable() {
@@ -302,7 +304,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mLiveRyLinkMicPkPresenter.release();
mLiveRyLinkMicPkPresenter = null;
}
OpenAdManager.getInstance().dismiss();
mLiveBean = data;
mLiveSDK = liveSdk;
mLiveType = liveType;
@@ -690,7 +692,7 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
}
}
AppManager.runDebugCode(() -> {
liveHandler.postDelayed(loadTimeoutRunnableGone, 1_000);
// liveHandler.postDelayed(loadTimeoutRunnableGone, 1_000);
});
liveHandler.postDelayed(loadTimeoutRunnableGone, 15_000);
if (TextUtils.equals(data.getEnterRoomInfo().getIsconnection(), "1")) {
@@ -2119,4 +2121,8 @@ public class PortraitLiveManager implements LivePlayListener, SocketMessageListe
mLiveRoomViewHolder.setGiftWall(giftWallLightenNumber, giftWallLightenTotal);
}
}
public boolean isEnterRoom() {
return isEnterRoom;
}
}

View File

@@ -48,15 +48,17 @@
<TextView
android:id="@+id/giftInfo"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginTop="9dp"
android:layout_marginEnd="32dp"
android:text="@string/live_fans_group_buy_info"
android:textColor="#B3000000"
android:textSize="10sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/giftName"
android:text="@string/live_fans_group_buy_info" />
app:layout_constraintTop_toBottomOf="@+id/giftName" />
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/giftList"

View File

@@ -29,7 +29,7 @@
android:layout_marginBottom="8dp"
android:background="@drawable/bg_live_prank_gift_add"
android:gravity="center"
android:text="确定添加"
android:text="@string/live_gift_dialog_select_add"
android:textColor="#FFF"
android:textSize="10sp"
app:layout_constraintBottom_toBottomOf="parent"

View File

@@ -326,7 +326,7 @@
android:id="@+id/sign"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="這家夥很懶,什麽都沒留下"
android:text="@string/live_user_dialog_tips"
android:textColor="#B1B1B1"
android:textSize="14sp" />
@@ -504,13 +504,15 @@
android:layout_width="24dp"
android:layout_height="24dp"
android:layout_marginEnd="5dp"
android:layout_marginStart="2dp"
android:layout_marginStart="7dp"
android:src="@mipmap/img_fans_default"
android:visibility="invisible" />
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="2dp"
android:layout_marginStart="5dp"
android:orientation="vertical">
<TextView

View File

@@ -1,7 +1,8 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="340dp"
android:layout_height="75dp"
android:layout_height="wrap_content"
android:minHeight="75dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:background="@mipmap/bg_funs_live_anchor_start">
@@ -9,7 +10,7 @@
<com.yunbao.common.custom.RatioRoundImageView
android:id="@+id/avatar"
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_height="0dp"
android:layout_marginStart="8dp"
android:layout_marginTop="7dp"
android:layout_marginBottom="7dp"
@@ -34,12 +35,16 @@
<TextView
android:id="@+id/description"
android:layout_width="wrap_content"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:layout_marginBottom="8dp"
android:text="@string/main_anchor_live_notify_info"
android:textSize="13sp"
android:textColor="#CCFFFFFF"
android:textSize="13sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/liveGo"
app:layout_constraintStart_toStartOf="@+id/anchorName"
app:layout_constraintTop_toBottomOf="@+id/anchorName" />

View File

@@ -1,6 +1,7 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/rl_root"
android:layout_width="match_parent"
android:layout_height="wrap_content">
@@ -159,17 +160,19 @@
<TextView
android:id="@+id/time"
android:layout_width="72dp"
android:layout_height="20dp"
android:layout_height="wrap_content"
android:layout_above="@id/bottom"
android:layout_centerHorizontal="true"
android:layout_marginBottom="8dp"
android:background="@mipmap/bg_time_box"
android:minHeight="20dp"
android:gravity="center"
android:paddingLeft="3dp"
android:paddingRight="3dp"
android:textColor="@color/white"
android:textSize="11sp"
android:visibility="invisible" />
android:visibility="invisible"
tools:visibility="visible" />
<ImageView
android:id="@+id/result"

View File

@@ -190,7 +190,7 @@
android:paddingTop="5dp"
android:paddingRight="8dp"
android:paddingBottom="5dp"
android:text="結束連麥"
android:text="@string/live_link_mic_3"
android:textColor="@color/color_white"
android:textSize="13sp"
android:visibility="gone" />

View File

@@ -135,7 +135,7 @@
android:paddingTop="5dp"
android:paddingRight="8dp"
android:paddingBottom="5dp"
android:text="結束連麥"
android:text="@string/live_link_mic_3"
android:textColor="@color/color_white"
android:textSize="13sp"
android:visibility="gone" />

View File

@@ -19,7 +19,7 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="25dp"
android:text="沒有找到匹配結果~"
android:text="@string/live_free_pk_empty_tips"
android:textColor="#C4C4C4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"

View File

@@ -8,7 +8,7 @@
<FrameLayout
android:id="@+id/wish_list_layout"
android:layout_width="70dp"
android:layout_width="75dp"
android:layout_height="20dp"
android:orientation="horizontal"
android:visibility="visible">
@@ -28,14 +28,13 @@
<TextView
android:id="@+id/wish_list"
android:layout_width="wrap_content"
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_gravity="center_vertical"
android:layout_marginStart="20dp"
android:layout_marginEnd="6dp"
android:ellipsize="end"
android:gravity="center"
android:maxLength="7"
android:text="@string/noble_seat"
android:textColor="#FFFFFF"
android:textSize="10sp" />

View File

@@ -45,7 +45,7 @@
<string name="release_cancel_send" >Release cancel send</string>
<string name="more_than" >No recording has been recognized in over 10 seconds</string>
<string name="live_role_title" >Identity privilege</string>
<string name="noble_seat" >Nobleman\'s seat</string>
<string name="noble_seat" >VIP seats</string>
<string name="live_mic_user_apply" >%s applies for connected wheat. Check whether</string>
<string name="live_mic_user_down" >The wheat has been kicked off</string>
<string name="live_mic_invite" >An invitation has been sent and is waiting for the user to accept</string>