合并直播

This commit is contained in:
zlzw 2023-11-10 15:17:33 +08:00
parent f15c609f1c
commit 37d2f0b975
27 changed files with 653 additions and 354 deletions

View File

@ -5,6 +5,9 @@ apply plugin: 'com.alibaba.arouter'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'
android {
lintOptions {
checkReleaseBuilds false
@ -36,7 +39,7 @@ android {
exclude 'lib/arm64-v8a/libmmcv_base.so'
exclude 'lib/arm64-v8a/libmmcrypto.so'
exclude 'lib/arm64-v8a/libMNN.so'
// exclude 'lib/arm64-v8a/libc++_shared.so'
pickFirst 'lib/arm64-v8a/libc++_shared.so'
exclude 'lib/arm64-v8a/libmmcv_api_base.so'
exclude 'lib/arm64-v8a/libmmcv_api_beauty.so'
exclude 'lib/arm64-v8a/libmmcv_api_bodylandmark.so'
@ -57,7 +60,7 @@ android {
exclude 'lib/armeabi-v7a/libmmcv_base.so'
exclude 'lib/armeabi-v7a/libmmcrypto.so'
exclude 'lib/armeabi-v7a/libMNN.so'
// exclude 'lib/armeabi-v7a/libc++_shared.so'
pickFirst 'lib/armeabi-v7a/libc++_shared.so'
exclude 'lib/armeabi-v7a/libmmcv_api_base.so'
exclude 'lib/armeabi-v7a/libmmcv_api_beauty.so'
exclude 'lib/armeabi-v7a/libmmcv_api_bodylandmark.so'
@ -106,7 +109,8 @@ android {
}
}
defaultConfig {
applicationId "com.shayu.onetoonenew"
//applicationId "com.shayu.onetoonenew"
applicationId "com.pdlive.shayu"
minSdkVersion rootProject.ext.android.minSdkVersion
targetSdkVersion rootProject.ext.android.targetSdkVersion
versionCode rootProject.ext.android.otoversionCode
@ -182,10 +186,14 @@ dependencies {
implementation project(path: ':lib_country_code')
annotationProcessor rootProject.ext.dependencies["arouter-compiler"]
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation platform('com.google.firebase:firebase-bom:30.5.0')
implementation 'com.google.firebase:firebase-crashlytics'
//common
api project(path: ':common')
//api project(path:':FaceUnity')//
api project(path:':Share')
api project(path:':main')
api project(path:':TabLayout')
api project(path:':ViewPager2Delegate')

View File

@ -0,0 +1,63 @@
{
"project_info": {
"project_number": "903482201540",
"project_id": "onetoone-71170",
"storage_bucket": "onetoone-71170.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:903482201540:android:132978cdf497f4d8634091",
"android_client_info": {
"package_name": "com.shayu.onetoonenew"
}
},
"oauth_client": [
{
"client_id": "903482201540-ddno3ro8fp0lqqoeodbhbnpqf7f8d439.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"certificate_hash": "b66dc8d21cfcf6c729577ddcf0c312b2a31ed872"
}
},
{
"client_id": "903482201540-e9ua9huoejtubp7pgsbu3iq76tqkoorp.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"certificate_hash": "15fc5e70cf238323bf7111c8c627803985478e87"
}
},
{
"client_id": "903482201540-k3cffuuhsed23kkiuopufhf54ano7do4.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"certificate_hash": "38cc19306c9facee36a9224e9a4070bc0be15c7d"
}
},
{
"client_id": "903482201540-s2j96h6k7go0ah51ksi7es8mt7qhankh.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCrhj-7WjwdYUHBMzz9Ntie_S474slGjVY"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "903482201540-s2j96h6k7go0ah51ksi7es8mt7qhankh.apps.googleusercontent.com",
"client_type": 3
}
]
}
}
}
],
"configuration_version": "1"
}

View File

@ -1,15 +1,15 @@
{
"project_info": {
"project_number": "903482201540",
"project_id": "onetoone-71170",
"storage_bucket": "onetoone-71170.appspot.com"
"project_number": "292494634914",
"project_id": "pdlive-1631521064967",
"storage_bucket": "pdlive-1631521064967.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:903482201540:android:132978cdf497f4d8634091",
"mobilesdk_app_id": "1:292494634914:android:d8db197d7e7a6c3a3a4cfb",
"android_client_info": {
"package_name": "com.shayu.onetoonenew"
"package_name": "com.pdlive.shayu"
}
},
"oauth_client": [
@ -17,42 +17,49 @@
"client_id": "903482201540-ddno3ro8fp0lqqoeodbhbnpqf7f8d439.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"certificate_hash": "b66dc8d21cfcf6c729577ddcf0c312b2a31ed872"
}
},
{
"client_id": "903482201540-e9ua9huoejtubp7pgsbu3iq76tqkoorp.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"certificate_hash": "15fc5e70cf238323bf7111c8c627803985478e87"
}
},
{
"client_id": "903482201540-k3cffuuhsed23kkiuopufhf54ano7do4.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.shayu.onetoonenew",
"package_name": "com.pdlive.shayu",
"certificate_hash": "38cc19306c9facee36a9224e9a4070bc0be15c7d"
}
},
{
"client_id": "903482201540-s2j96h6k7go0ah51ksi7es8mt7qhankh.apps.googleusercontent.com",
"client_id": "292494634914-ctr3fptp5mkv2qqr4gkgjo9uluq2joqb.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.pdlive.shayu",
"certificate_hash": "15fc5e70cf238323bf7111c8c627803985478e87"
}
},
{
"client_id": "292494634914-ejtqvaj86a2lldv0di2pr3d5gngprahd.apps.googleusercontent.com",
"client_type": 1,
"android_info": {
"package_name": "com.pdlive.shayu",
"certificate_hash": "b66dc8d21cfcf6c729577ddcf0c312b2a31ed872"
}
},
{
"client_id": "292494634914-ha2kbgtclkv20hl3a1l8r7861a1a0m5i.apps.googleusercontent.com",
"client_type": 3
}
],
"api_key": [
{
"current_key": "AIzaSyCrhj-7WjwdYUHBMzz9Ntie_S474slGjVY"
"current_key": "AIzaSyDVnuGnQzjI_vDrxh20Hv_S1OMUD7Vp3zU"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": [
{
"client_id": "903482201540-s2j96h6k7go0ah51ksi7es8mt7qhankh.apps.googleusercontent.com",
"client_id": "292494634914-ha2kbgtclkv20hl3a1l8r7861a1a0m5i.apps.googleusercontent.com",
"client_type": 3
},
{
"client_id": "292494634914-v9j4rei86q2pfh9as4seotb23vr2744a.apps.googleusercontent.com",
"client_type": 2,
"ios_info": {
"bundle_id": "com.live.pd"
}
}
]
}

View File

@ -290,6 +290,22 @@
<meta-data
android:name="com.facebook.sdk.AutoLogAppEventsEnabled"
android:value="false" />
<meta-data
android:name="IS_GOOGLE_PLAY"
android:value="${isGooglePlay}" />
<meta-data
android:name="IS_UPLOAD_ERROR_LOG"
android:value="${isUploadLog}" />
<meta-data
android:name="IS_PLUGIN_MODEL"
android:value="${isPluginModel}" />
<meta-data
android:name="firebase_crashlytics_collection_enabled"
android:value="${isUploadLog}" />
<meta-data
android:name="com.openinstall.APP_KEY"
android:value="smvslm" />
</application>
</manifest>

View File

@ -1,18 +1,29 @@
package com.shayu.onetoone;
import static com.yunbao.live.socket.SocketClient.mSocketHandler;
import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Process;
import android.text.TextUtils;
import android.util.Log;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.Utils;
import com.facebook.FacebookSdk;
import com.fm.openinstall.OpenInstall;
import com.google.firebase.FirebaseApp;
import com.google.firebase.analytics.FirebaseAnalytics;
import com.shayu.onetoone.activity.fragments.message.ChatMessageFragment;
import com.shayu.onetoone.activity.message.ChatActivity;
import com.shayu.onetoone.bean.MessageChatAuthContent;
@ -27,18 +38,35 @@ import com.shayu.onetoone.provider.MessageChatTipsItemProvider;
import com.shayu.onetoone.provider.OTOCallEndMessageItemProvider;
import com.shayu.onetoone.utils.ChatPluginExtensionConfig;
import com.shayu.onetoone.utils.NeverCrashUtils;
import com.tencent.imsdk.v2.V2TIMGroupMemberInfo;
import com.tencent.imsdk.v2.V2TIMManager;
import com.tencent.imsdk.v2.V2TIMSimpleMsgListener;
import com.tencent.imsdk.v2.V2TIMUserInfo;
import com.umeng.analytics.MobclickAgent;
import com.umeng.commonsdk.UMConfigure;
import com.yunbao.common.BuildConfig;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.CommonAppContext;
import com.yunbao.common.Constants;
import com.yunbao.common.bean.AnchorStartLiveBean;
import com.yunbao.common.bean.CrashSaveBean;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.imrongcloud.InstructorSendReward;
import com.yunbao.common.manager.imrongcloud.InstructorSendRewardProvider;
import com.yunbao.common.manager.imrongcloud.MessageIMManager;
import com.yunbao.common.manager.imrongcloud.RecommendLiveRoom;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.AppManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.L;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.live.socket.SocketReceiveBean;
import com.yunbao.live.socket.SocketRyClient;
import com.yunbao.live.views.PortraitLiveManager;
import com.yunbao.live.views.RecommendLiveRoomProvider;
import org.greenrobot.eventbus.EventBus;
import java.lang.ref.WeakReference;
import java.util.ArrayList;
@ -56,6 +84,7 @@ import io.rong.imkit.utils.RouteUtils;
import io.rong.imkit.widget.adapter.ProviderManager;
import io.rong.imlib.IMLibRTCClient;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.imlib.model.InitOption;
import io.rong.imlib.model.Message;
import io.rong.imlib.model.MessageContent;
@ -156,8 +185,137 @@ public class AppContext extends CommonAppContext {
RongConfigCenter.conversationConfig().replaceMessageProvider(CallEndMessageItemProvider.class, new OTOCallEndMessageItemProvider());
RongExtensionManager.getInstance().setExtensionConfig(new ChatPluginExtensionConfig());
initPDLive();
}
private void initPDLive(){
registerFirebaseCrash();
//初始化 邀请码库
if (isMainProcess()) {
OpenInstall.init(this);
}
//设置LOG开关默认为false
UMConfigure.setLogEnabled(true);
//友盟正式初始化
UMConfigure.init(getApplicationContext(), "64e40ee55488fe7b3afa2c96", "PDLive", UMConfigure.DEVICE_TYPE_PHONE,
"64e40ee55488fe7b3afa2c96");
//集成umeng-crash-vx.x.x.aar则需要关闭原有统计SDK异常捕获功能
MobclickAgent.setCatchUncaughtExceptions(false);
//PushSDK初始化(如使用推送SDK必须调用此方法)
//统计SDK是否支持采集在子进程中打点的自定义事件默认不支持
UMConfigure.setProcessEvent(true);//支持多进程打点
MobclickAgent.setPageCollectionMode(MobclickAgent.PageMode.AUTO);
UMConfigure.submitPolicyGrantResult(getApplicationContext(), true);
registerActivityLifecycleCallbacks(new AdjustLifecycleCallbacks());
//初始化 AndroidUtilCode
Utils.init(this);
RongConfigCenter.conversationConfig().addMessageProvider(new RecommendLiveRoomProvider(getApplicationContext()));
RongcloudIMManager.addRongcloudIMOnReceiveMessageListener(new RongIMClient.OnReceiveMessageWrapperListener() {
@Override
public boolean onReceived(io.rong.imlib.model.Message message, int i, boolean b, boolean b1) {
Log.e("wewe", message.getConversationType() + "112121");
MessageIMManager.get(sInstance).getSystemForRongcloud(message);
//融云直播间聊天
android.os.Message msg = android.os.Message.obtain();
msg.what = Constants.SOCKET_WHAT_BROADCAST;
try {
if (!"".equals(message.getContent()) && message.getContent() != null) {
TextMessage content = (TextMessage) message.getContent();
if (content.getContent().contains("_method_")) {
msg.obj = content.getContent();
//观众页面
if (SocketRyClient.mSocketHandler != null
&& (TextUtils.equals("__system__", message.getTargetId())
|| ("g" + PortraitLiveManager.liveID).contains(message.getTargetId()))) {
SocketRyClient.mSocketHandler.sendMessage(msg);
} else if (content.getContent().contains("LivePK_anchorStartLiveNotify")) {//开播通知
SocketReceiveBean received = JSON.parseObject(content.getContent(), SocketReceiveBean.class);
JSONObject map = received.getMsg().getJSONObject(0);
sendStartAnchorLive(map);
}
//主播页面
if (TextUtils.isEmpty(PortraitLiveManager.liveID) && SocketRyClient.mSocketHandler != null) {
SocketRyClient.mSocketHandler.sendMessage(msg);
}
} else if (message.getConversationType() == Conversation.ConversationType.PRIVATE) {//私聊信息
EventBus.getDefault().post(message);
}
}
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
private void sendStartAnchorLive(JSONObject map) {
AnchorStartLiveBean bean = new AnchorStartLiveBean();
bean.setAnchorName(map.getString("anchorName"));
bean.setRoomId(map.getString("roomid"));
bean.setAvatar(map.getString("avatar"));
Bus.get().post(bean);
}
});
//监听im消息
V2TIMManager.getInstance().addSimpleMsgListener(new V2TIMSimpleMsgListener() {
@Override
public void onRecvGroupTextMessage(String msgID, String groupID, V2TIMGroupMemberInfo sender, String text) {
super.onRecvGroupTextMessage(msgID, groupID, sender, text);
Log.e("asasas", text);
android.os.Message msg = android.os.Message.obtain();
msg.what = Constants.SOCKET_WHAT_BROADCAST;
msg.obj = text;
if (mSocketHandler != null && Ingroup == 1) {
mSocketHandler.sendMessage(msg);
}
}
@Override
public void onRecvC2CTextMessage(String msgID, V2TIMUserInfo sender, String text) {
super.onRecvC2CTextMessage(msgID, sender, text);
android.os.Message msg = android.os.Message.obtain();
msg.what = Constants.SOCKET_WHAT_BROADCAST;
msg.obj = text;
if (mSocketHandler != null) {
CommonAppContext.Ingroup = 1;
mSocketHandler.sendMessage(msg);
}
}
});
}
public void registerFirebaseCrash() {
FirebaseAnalytics.getInstance(this);
FirebaseApp.initializeApp(this);
}
public boolean isMainProcess() {
int pid = android.os.Process.myPid();
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
if (activityManager.getRunningAppProcesses() == null) {
return true;
}
for (ActivityManager.RunningAppProcessInfo appProcess : activityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
return getApplicationInfo().packageName.equals(appProcess.processName);
}
}
return false;
}
private static final class AdjustLifecycleCallbacks implements ActivityLifecycleCallbacks {
@Override
public void onActivityResumed(Activity activity) {

View File

@ -14,6 +14,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.shayu.onetoone.R;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.manager.IMLoginManager;
import java.util.Locale;
@ -21,35 +22,13 @@ import java.util.Locale;
/**
* Activity基类
*/
public abstract class AbsOTOActivity extends AppCompatActivity {
public abstract class AbsOTOActivity extends AbsActivity {
public Context mContext;
@Override
public Resources getResources() {
Resources res = super.getResources();
Configuration config = new Configuration();
config.setToDefaults();
config.locale = IMLoginManager.get(this).getLocaleLanguage();
if(config.locale== Locale.SIMPLIFIED_CHINESE){
config.locale=Locale.TRADITIONAL_CHINESE;
}
res.updateConfiguration(config, res.getDisplayMetrics());
return res;
}
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(onCreate()) {
setStatusBar();
}
setContentView(getLayoutId());
mContext = this;
main(savedInstanceState);
View view=findViewById(R.id.btn_back);
if(view!=null){
view.setOnClickListener(v -> finish());
}
}
private void setStatusBar() {

View File

@ -43,7 +43,7 @@ public class HomeSearchActivity extends AbsOTOActivity {
@Override
protected int getLayoutId() {
return R.layout.activity_search;
return R.layout.activity_oto_search;
}
@Override

View File

@ -34,7 +34,7 @@ public class HomepageRankingActivity extends AbsOTOActivity {
@Override
protected int getLayoutId() {
return R.layout.activity_main_list;
return R.layout.activity_main_otolist;
}
@Override

View File

@ -1,6 +1,7 @@
package com.shayu.onetoone.activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import androidx.annotation.NonNull;
@ -9,10 +10,15 @@ import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2;
import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.angcyo.tablayout.DslTabLayout;
import com.angcyo.tablayout.DslTabLayoutConfig;
import com.angcyo.tablayout.delegate2.ViewPager2Delegate;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.messaging.FirebaseMessaging;
import com.lxj.xpopup.core.BasePopupView;
import com.shayu.onetoone.AppContext;
import com.lxj.xpopup.XPopup;
@ -20,6 +26,7 @@ import com.shayu.onetoone.R;
import com.shayu.onetoone.activity.fragments.BaseFragment;
import com.shayu.onetoone.activity.fragments.DynamicFragment;
import com.shayu.onetoone.activity.fragments.FriendsFragment;
import com.shayu.onetoone.activity.fragments.LiveFragment;
import com.shayu.onetoone.activity.fragments.MessageFragment;
import com.shayu.onetoone.activity.fragments.MyFragment;
import com.shayu.onetoone.activity.fragments.message.MsgMessageFragment;
@ -36,9 +43,14 @@ import com.shayu.onetoone.manager.OTONetManager;
import com.shayu.onetoone.manager.RouteManager;
import com.shayu.onetoone.manager.SendMessageManager;
import com.shayu.onetoone.utils.UserManager;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.activity.WebViewActivity;
import com.yunbao.common.bean.AnchorStartLiveBean;
import com.yunbao.common.bean.ConfigBean;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.common.event.RongIMConnectionStatusEvent;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.http.base.HttpCallback;
import com.yunbao.common.interfaces.CommonCallback;
import com.yunbao.common.interfaces.OnItemClickListener;
@ -47,11 +59,14 @@ import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.manager.imrongcloud.RongcloudIMManager;
import com.yunbao.common.utils.Bus;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.utils.SpUtil;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.VersionUtil;
import com.yunbao.common.views.APKUpdateCustomPopup;
import com.yunbao.common.views.APKUpdateOneToOnePopup;
import com.yunbao.main.dialog.AnchorStartLiveNotifyDialog;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
@ -59,9 +74,13 @@ import org.greenrobot.eventbus.ThreadMode;
import java.util.ArrayList;
import java.util.List;
import cn.rongcloud.rtc.api.RCRTCConfig;
import cn.rongcloud.rtc.api.RCRTCEngine;
import io.rong.imkit.manager.UnReadMessageManager;
import io.rong.imlib.RongIMClient;
import io.rong.imlib.model.Conversation;
import io.rong.push.PushManager;
import io.rong.push.PushType;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
import kotlin.jvm.functions.Function4;
@ -76,6 +95,8 @@ public class MainActivity extends AbsOTOActivity {
private DslTabLayout dslTabLayout;
private long mLastClickBackTime;//上次点击back键的时间
private boolean isInstallApk = false;
private static final String TAG = "MainActivity";
private List<AnchorStartLiveBean> startListNotifyList = new ArrayList<>();
@Override
protected void onDestroy() {
@ -87,6 +108,7 @@ public class MainActivity extends AbsOTOActivity {
protected void main(Bundle savedInstanceState) {
Bus.getOn(this);
fragments.add(new FriendsFragment());
fragments.add(new LiveFragment());
fragments.add(new DynamicFragment());
fragments.add(new MessageFragment());
fragments.add(new MyFragment());
@ -134,13 +156,14 @@ public class MainActivity extends AbsOTOActivity {
});
CallClientManager.getManager();
checkVersion();
initPDLive();
}
/**
* 检查版本更新
*/
private void checkVersion() {
if(true)
if (true)
return;
CommonAppConfig.getInstance().getConfig(new CommonCallback<ConfigBean>() {
@Override
@ -294,6 +317,65 @@ public class MainActivity extends AbsOTOActivity {
}
}
private void initPDLive() {
RCRTCConfig.Builder config = RCRTCConfig.Builder.create();
config.enableEncoderTexture(false);//新娱美颜 需要关闭这个
RCRTCEngine.getInstance().init(this, config.build());
if (getIntent().getStringExtra("liveid") != null) {
LiveHttpUtil.getLiveInfo(getIntent().getStringExtra("liveid") + "", new com.yunbao.common.http.HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info) {
if (code == 0 && info.length > 0) {
LiveBean liveBean = JSON.parseObject(info[0], LiveBean.class);
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
@Override
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
}
@Override
public void onCheckError(String contextError) {
}
});
} else {
ToastUtil.show("直播已结束");
}
}
});
} else if (getIntent().getStringExtra("type") != null && getIntent().getStringExtra("type").equals("2")) {
//跳转消息列表
if (viewPager != null) {
viewPager.setCurrentItem(2);
}
} else if (getIntent().getStringExtra("type") != null && getIntent().getStringExtra("type").equals("8")) {
WebViewActivity.forward(mContext, getIntent().getStringExtra("activityUrl"), true, false);
}
FirebaseMessaging.getInstance().getToken()
.addOnCompleteListener(new OnCompleteListener<String>() {
@Override
public void onComplete(@NonNull Task<String> task) {
if (!task.isSuccessful()) {
Log.w(TAG, "Fetching FCM registration token failed", task.getException());
return;
}
// Get new FCM registration token
String token = task.getResult();
// Log and toast
Log.d(TAG, token);
PushManager.getInstance()
.onReceiveToken(MainActivity.this, PushType.GOOGLE_FCM, token);
// Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show();
}
});
CommonAppConfig.getInstance().setLaunched(true);
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
@ -319,6 +401,20 @@ public class MainActivity extends AbsOTOActivity {
AppContext.exit();
}
private void notifyLiveFlot() {
if (startListNotifyList.iterator().hasNext()) {
AnchorStartLiveBean bean = startListNotifyList.iterator().next();
new AnchorStartLiveNotifyDialog(mContext, bean)
.setOnDismissListener(dialog -> {
startListNotifyList.remove(bean);
if (startListNotifyList.iterator().hasNext()) {
notifyLiveFlot();
}
})
.showDialog();
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void busEvent(MessageMsgBusEvent event) {
if (event.getType() == MessageMsgBusEvent.TYPE_ALL_READ) {
@ -332,6 +428,18 @@ public class MainActivity extends AbsOTOActivity {
}
}
@Subscribe(threadMode = ThreadMode.MAIN)
public void busEvent(AnchorStartLiveBean event) {
if (!IMLoginManager.get(mContext).isLiveNotifySettings()) return;
if (startListNotifyList.isEmpty()) {
startListNotifyList.add(event);
notifyLiveFlot();
} else {
startListNotifyList.add(event);
}
}
/**
* 用户被踢下线
*

View File

@ -0,0 +1,57 @@
package com.shayu.onetoone.activity.fragments;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import com.yunbao.main.views.MainHomeViewHolder;
public class LiveFragment extends BaseFragment {
MainHomeViewHolder viewHolder;
public LiveFragment() {
}
@Override
public void initView(View itemView) {
viewHolder.loadData();
}
@Override
public View createView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if(viewHolder==null){
viewHolder=new MainHomeViewHolder(getContext(),container);
}
return viewHolder.getContentView();
}
@Override
public void onPause() {
super.onPause();
viewHolder.onPause();
}
@Override
public void onResume() {
super.onResume();
viewHolder.onResume();
}
@Override
public void onStart() {
super.onStart();
viewHolder.onStart();
}
@Override
public void onStop() {
super.onStop();
viewHolder.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
viewHolder.onDestroy();
}
}

View File

@ -36,7 +36,7 @@ import io.rong.imlib.RongIMClient;
/**
* 设置
*/
@Route(path = RouteUtil.PATH_SETTING)
@Route(path = RouteManager.PATH_SETTING)
public class SettingActivity extends AbsActivity {
private Handler mHandler;

View File

@ -24,7 +24,7 @@ public class RouteManager {
public static final String ACTIVITY_HOME_SCREEN = "/activity/HomeScreenActivity";
public static final String ACTIVITY_CALL_VIDEO = "/activity/CallVideoActivity";
public static final String ACTIVITY_CALL_AUDIO = "/activity/CallVAudioActivity";
public static final String PATH_EDITPROFILE = "/main/EditProfileActivity";
public static final String PATH_EDITPROFILE = "/activity/EditProfileActivity";
public static final String ACTIVITY_MATCHING = "/activity/MatchingActivity";
public static final String ACTIVITY_MY_FRIEND_LIST = "/activity/MyFriendListActivity";
@ -43,6 +43,7 @@ public class RouteManager {
public static final String ACTIVITY_END_CALL="/activity/EndCallActivity";
public static final String ACTIVITY_BLACK_LIST = "/activity/AuthBloggerInletActivity";
public static final String PATH_SETTING = "/activity/SettingActivity";
/**
* 达人认证入口

View File

@ -54,6 +54,25 @@
android:gravity="center"
android:text="@string/home_label_friends" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"
android:gravity="center"
android:layout_width="wrap_content"
android:layout_height="match_parent">
<ImageView
android:layout_width="26dp"
android:layout_height="26dp"
android:scaleType="fitEnd"
android:src="@drawable/tab_friends" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="10sp"
android:gravity="center"
android:text="直播" />
</LinearLayout>
<LinearLayout
android:orientation="vertical"

View File

@ -1,279 +0,0 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">友聊</string>
<string name="title_activity_tag_selection">選擇活動</string>
<string name="message_chat_tip1">【安全提示】為保障您的權益,慶提高警惕,不要輕易添加或提供第三方聯繫方式</string>
<string name="system_tip_success">成功</string>
<string name="system_tip_failure">失敗</string>
<string name="system_tip_error">錯誤</string>
<string name="home_label_friends">交友</string>
<string name="home_label_dynamic">動態</string>
<string name="home_label_chat">消息</string>
<string name="home_label_my">我的</string>
<string name="greet_switch_title">打招呼文案</string>
<string name="greet_upload_img">上傳圖片(非必選)</string>
<string name="greet_clear_config">清除設置</string>
<string name="greet_save_config">保存設置</string>
<string name="my_arnings">我的收益</string>
<string name="my_arnings_reward_description">獎勵說明</string>
<string name="my_arnings_total_amount_available_for_withdrawal">可提現總額</string>
<string name="my_arnings_today_earnings">今日收益:</string>
<string name="my_arnings_settlement_record">結算記錄</string>
<string name="my_arnings_cumulative_income">累計收益:</string>
<string name="my_arnings_exchange_for_diamond_star_coins">兌換鑽石/星幣</string>
<string name="my_arnings_incentive_withdrawal">獎勵提現</string>
<string name="my_arnings_incentive_withdrawal_minimum">(最低$ %s)</string>
<string name="my_arnings_exchange_star">兌換星幣</string>
<string name="my_arnings_exchange_record">兌換記錄</string>
<string name="my_arnings_total_convertibility">可兌換總額</string>
<string name="my_arnings_gold_coin">金幣</string>
<string name="my_arnings_toggle">切換</string>
<string name="my_arnings_wait">敬請期待</string>
<string name="diamond_exchange_input_hint">請輸入需兌換的星幣金額</string>
<string name="diamond_exchange_input_hint2">請輸入需兌換的鑽石金額</string>
<string name="diamond_exchange_immediate_exchange">立即兌換</string>
<string name="diamond_exchange_full_conversion">全額兌換</string>
<string name="choose_img_max">最多選&#160;%1$s&#160;張圖片哦</string>
<string name="view_friend_empty_text">暫無好友消息~</string>
<string name="not_money">餘額不足</string>
<string name="not_money_tips">文字聊天每條續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_video_tips">與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_audio_tips">與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="not_money_text_tips">聊天每條續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天</string>
<string name="dialog_cancel_tip">離開</string>
<string name="dialog_to_money_tip">去充值</string>
<string name="chat_video_tips">發起視頻通話\n%s星幣/分鐘</string>
<string name="chat_audio_tips">發起語音通話\n%s星幣/分鐘</string>
<string name="album">相冊</string>
<string name="camera">拍照</string>
<string name="photo_info">圖片信息</string>
<string name="copy">複製</string>
<string name="delete">刪除</string>
<string name="top">置頂</string>
<string name="untop">取消置頂</string>
<string name="copy_success">複製成功</string>
<string name="upload_in_progress">上傳中</string>
<string name="upload_success">上傳成功</string>
<string name="upload_failed">上傳失敗</string>
<string name="year"></string>
<string name="month"></string>
<string name="day"></string>
<string name="birthday">生日</string>
<string name="complete">完成</string>
<string name="complete2">完成</string>
<string name="nickname_hint">請填寫昵稱</string>
<string name="gender_hint">請選擇性別</string>
<string name="permission_hint">請允許懸浮窗權限才能進行小窗</string>
<string name="permission_setting">設置</string>
<string name="permission_cancel">取消</string>
<string name="call_time">通話時長:</string>
<string name="call_tips">通話將在%s秒后斷\n開請及時充值</string>
<string name="dialog_normal_title">首次匹配成功獎勵</string>
<string name="dialog_normal_content">恭喜獲得</string>
<string name="title_greet_config">打招呼設置</string>
<string name="title_audit_config">審核中,請耐心等待审核通过</string>
<string name="title_audit_config2">已發起審核,請耐心等待審核結果</string>
<string name="title_audit_config3">審核失敗,去提交</string>
<string name="title_audit_config4">審核中</string>
<string name="title_audit_config5">認證通過</string>
<string name="title_audit_config6">審核失敗重新提交</string>
<string name="title_audit_config7">去認證</string>
<string name="resubmit">重新提交</string>
<string name="upload_enter_title">上傳入駐資料</string>
<string name="user_authentication">達人認證</string>
<string name="query">查詢中</string>
<string name="to_upload">去上傳</string>
<string name="search_empty">請輸入內容</string>
<string name="matching_quit_title">確定要退出靈魂速配嗎?</string>
<string name="matching_quit_cancel">繼續匹配</string>
<string name="matching_quit_apply">徹底離開</string>
<string name="matching_wait_title">當前等待時間較長,建議您先去觀看動態哦,稍後再來哦~</string>
<string name="matching_wait_cancel">繼續匹配</string>
<string name="matching_wait_apply">去看動態</string>
<string name="money_title">餘額不足,請充值后再進行嘗試吧~</string>
<string name="money_cancel">取消</string>
<string name="money_apply">前往充值</string>
<string name="gift">[禮物]</string>
<string name="authentication">[邀請認證]</string>
<string name="system_tips">[系統提示]</string>
<string name="call_tips1">等待對方接受邀請…</string>
<string name="call_tips2">連接成功</string>
<string name="permission_request_title">需要獲取您的權限</string>
<string name="request_authentication_tips1">邀請對方完成真人認證,開通通話權限</string>
<string name="request_authentication_tips2">待開通</string>
<string name="request_authentication_tips3">對方邀請您完成真人認證,開通通話權限</string>
<string name="request_authentication_tips4">去開通</string>
<string name="gift_send_ta">送給TA</string>
<string name="gift_send_you">送給你</string>
<string name="dialog_apply">確定</string>
<string name="layout_auth_tips1">真人說明</string>
<string name="layout_auth_tips2">請上傳您的身份證正反面完成真人認證,完成認證可獲得跟多消息推送並提高聊天,收禮的收益比例</string>
<string name="layout_auth_tips3">身份證正面</string>
<string name="layout_auth_tips4">身份證背面</string>
<string name="layout_auth_tips5">發起審核</string>
<string name="layout_auth_blogger_tips1">帶*為必填項,為保障您的利益,請如實填寫</string>
<string name="layout_auth_blogger_tips2">性別</string>
<string name="layout_auth_blogger_tips3"></string>
<string name="layout_auth_blogger_tips4"></string>
<string name="layout_auth_blogger_tips5">真實姓名</string>
<string name="layout_auth_blogger_tips6">請填寫您的真實姓名</string>
<string name="layout_auth_blogger_tips7">手機號碼</string>
<string name="layout_auth_blogger_tips8">請填寫您的手機號碼</string>
<string name="layout_auth_blogger_tips9">身份證號碼</string>
<string name="layout_auth_blogger_tips10">請填寫您的身份證號碼</string>
<string name="layout_auth_blogger_tips11">上傳手持證件照</string>
<string name="layout_auth_blogger_tips12">請將證件頭像朝向前方</string>
<string name="layout_auth_blogger_tips13">參考圖</string>
<string name="layout_auth_blogger_tips14">上傳背景圖片</string>
<string name="layout_auth_blogger_tips15">發起審核</string>
<string name="layout_auth_blogger_inlet_tips1">真人說明</string>
<string name="layout_auth_blogger_inlet_tips2">請上傳您的身份證正反面完成真人認證,完成認證可獲得跟多消息推送並提高聊天,收禮的收益比例</string>
<string name="layout_auth_blogger_inlet_tips3">條件一:完成真人認證 </string>
<string name="layout_auth_blogger_inlet_tips4">已完成</string>
<string name="layout_auth_blogger_inlet_tips5">條件二:上傳入駐資料 </string>
<string name="layout_auth_blogger_inlet_tips6">已完成</string>
<string name="layout_choose_label_tip1">跳過</string>
<string name="layout_choose_label_tip2">我的標籤</string>
<string name="layout_choose_label_tip3">暫無標籤</string>
<string name="layout_choose_label_tip4">完成</string>
<string name="layout_complete_tip1">完善個人信息</string>
<string name="layout_complete_tip2">去選擇</string>
<string name="layout_complete_tip3">昵稱</string>
<string name="layout_complete_tip4">性別</string>
<string name="layout_complete_tip5"></string>
<string name="layout_complete_tip6"></string>
<string name="layout_complete_tip7">生日</string>
<string name="layout_complete_tip8">完成</string>
<string name="layout_edit_name_tip1">溫馨提示可以免費修改昵稱一次之後修改需要鑽石600一次</string>
<string name="layout_edit_profile_tip1">頭像</string>
<string name="layout_edit_profile_tip2">暱稱</string>
<string name="layout_edit_profile_tip3">簽名</string>
<string name="layout_edit_profile_tip4">生日</string>
<string name="layout_edit_profile_tip5">性別</string>
<string name="layout_edit_profile_tip6">所在地</string>
<string name="layout_edit_profile_tip7">綁定手機</string>
<string name="layout_edit_profile_tip8">真人認證</string>
<string name="layout_edit_profile_tip9">興趣</string>
<string name="layout_find_pwd_tip1">忘記密碼</string>
<string name="layout_login_tip1">用戶登錄</string>
<string name="layout_main_list_tip1">魅力榜</string>
<string name="layout_main_list_tip2">財富榜</string>
<string name="layout_matching_tip1">正在熱聊中</string>
<string name="layout_matching_tip2">匹配中…</string>
<string name="layout_matching_tip3">TA還在練習見面開場白再給TA點時間吧~</string>
<string name="layout_matching_tip4">靈魂速配</string>
<string name="layout_msg_message_tip1">聯繫客服</string>
<string name="layout_register_tip1">用戶註冊</string>
<string name="layout_screen_tip1">年齡</string>
<string name="layout_screen_tip2">全部</string>
<string name="layout_screen_tip3">40以上</string>
<string name="layout_screen_tip4">性別</string>
<string name="layout_screen_tip5"></string>
<string name="layout_screen_tip6"></string>
<string name="layout_screen_tip7">是否完成真人認證</string>
<string name="layout_screen_tip8">已完成</string>
<string name="layout_screen_tip9">未完成</string>
<string name="layout_screen_tip10">確定</string>
<string name="layout_screen_tip11">重置</string>
<string name="layout_search_tip1">猜你喜歡</string>
<string name="layout_setting_tip1">個人設定</string>
<string name="layout_setting_tip2">修改密碼</string>
<string name="layout_setting_tip3">黑名單</string>
<string name="layout_setting_tip4">語言設定</string>
<string name="layout_setting_tip5">達人認證</string>
<string name="layout_setting_tip6">常見問題</string>
<string name="layout_setting_tip7">服務協議</string>
<string name="layout_setting_tip8">清除緩存</string>
<string name="layout_setting_tip9">刪除用戶</string>
<string name="layout_setting_tip10">關於我們</string>
<string name="layout_setting_tip11">版本號</string>
<string name="layout_setting_tip12">檢查新版本</string>
<string name="layout_setting_tip13">退出</string>
<string name="layout_setting_tip14">用戶協議</string>
<string name="layout_setting_tip15">消息通知</string>
<string name="layout_choose_label_adapter_tip1">我的標籤</string>
<string name="layout_item_tag">活潑</string>
<string name="layout_bottom_list_tips1">取消</string>
<string name="layout_bend_call_tips1">關注</string>
<string name="layout_bend_call_tips2">此次通話結束了快開啟\n下一次通話吧</string>
<string name="layout_bend_call_tips3">再次通話</string>
<string name="layout_bend_call_tips4">去充值</string>
<string name="layout_msg_more_tips1">打招呼設置</string>
<string name="layout_msg_more_tips2">一鍵已讀</string>
<string name="layout_friends_tips1">推薦</string>
<string name="layout_friends_tips2">熱門</string>
<string name="layout_home_ranking_tips1">關注</string>
<string name="layout_f_msg_tips1">消息</string>
<string name="layout_f_msg_tips2">好友</string>
<string name="layout_f_my_tips1">用戶名稱</string>
<string name="layout_f_my_tips2">這個人很懶,什麼也沒留下。</string>
<string name="layout_i_greet_config_tips1">請輸入文案</string>
<string name="layout_i_sys_msg_tips1">點擊查看</string>
<string name="layout_call_input_tips1">輸入信息</string>
<string name="layout_f_system_tips1">聯繫客服</string>
<string name="layout_v_empty_list_tips1">沒有找到匹配結果~</string>
<string name="layout_d_msg_chat_auth_tips1">對方邀請您完成真人認證,開通通話權限</string>
<string name="layout_d_msg_chat_auth_tips2">去開通</string>
<string name="layout_d_msg_gift_tips1">送給你</string>
<string name="layout_d_send_gift_tips1">充值</string>
<string name="layout_d_msg_bar_tips1">查看主頁</string>
<string name="layout_v_greet_config_add_tips1">添加更多</string>
<string name="layout_v_custom_tips1">保存</string>
<string name="activity_my_friend_list_fans">被關注</string>
<string name="activity_my_friend_list_follow">關注</string>
<string name="activity_my_friend_list_friend">互動關注</string>
<string name="activity_my_friend_list_people"></string>
<string name="activity_my_friend_list_item_0">未關注</string>
<string name="activity_my_friend_list_item_1">回關</string>
<string name="activity_my_friend_list_item_2">已關注</string>
<string name="activity_my_friend_list_item_3">相互關注</string>
<string name="activity_my_friend_fans">粉絲</string>
<string name="activity_my_friend_follow">關注</string>
<string name="activity_my_friend_friend">好友</string>
<string name="dialog_call_prop_apply">收下獎勵</string>
<string name="toast_call_not_unlock">發送任意禮物后即可解鎖</string>
<string name="gift_not_money">余额不足,请充值后再进行尝试吧~</string>
<string name="end_of_the_call">通话结束</string>
<string name="end_resume_call_not_auth">对方未完成真人认证,暂时无法向对方发起通话</string>
<string name="now_call_tips">您當前正在通話中,請掛斷後再試</string>
<string name="exchange_success">兌換成功</string>
<string name="exchange_error">兌換失敗</string>
</resources>

View File

@ -1,6 +1,10 @@
package com.yunbao.common.bean;
public class AnchorStartLiveBean extends BaseModel{
public static final int TYPE_LIVE=0;
public static final int TYPE_CHAT=1;
public static final int TYPE_CALL_AUDIO=2;
public static final int TYPE_CALL_VIDEO=3;
private String anchorName;
private String avatar;
private String roomId;

View File

@ -89,7 +89,7 @@ public class IMLoginManager extends BaseCacheManager {
language = "zh";
}
if (!getBoolean(KEY_LANGUAGE, !TextUtils.equals(language, "zh"))) {
return Locale.TRADITIONAL_CHINESE;
return Locale.SIMPLIFIED_CHINESE;
} else {
return new Locale("en", "rUS");
}

View File

@ -48,7 +48,7 @@ public class RongcloudIMManager {
} else {
RONG_IM_KEY = "uwd1c0sxu1p71"; //正式服key
}
RONG_IM_KEY="lmxuhwagl7s1d";
//RONG_IM_KEY="lmxuhwagl7s1d";
}
/**

View File

@ -14,11 +14,11 @@ ext {
serverHost : "https://ceshi.yaoulive.com",
//1v1社交正式服
otoServerHost : "https://mo.yomochat.com",
//otoServerHost : "https://mo.yomochat.com",
//1v1社交测试服
//otoServerHost : "https://ceshi.yyouou.com",
// otoServerHost : "https://ceshi.yyouou.com",
otoServerHost : "https://ceshi.yaoulive.com",
@ -30,8 +30,8 @@ ext {
// true表示谷歌支付 false
isGooglePlay : false,
//
isUploadLog : true,
isUploadLog : false,
//
isPluginModel : true,
isPluginModel : false,
]
}

View File

@ -22,6 +22,6 @@ android.enableJetifier=true
systemProp.http.proxyHost=127.0.0.1
systemProp.https.proxyHost=127.0.0.1
systemProp.https.proxyPort=10809
systemProp.http.proxyPort=10809
systemProp.https.proxyPort=7890
systemProp.http.proxyPort=7890
#android.enableR8.fullMode=true

View File

@ -64,7 +64,7 @@ repositories {
}
dependencies {
implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
implementation fileTree(include: ['*.jar'], dir: 'libs')
api fileTree(include: ['*.jar'], dir: 'libs')
compileOnly files('../libs/beautysdk-202202241203.aar')
//
api project(':live')

View File

@ -3,10 +3,14 @@ package com.yunbao.main.views;
import android.content.Context;
import android.view.ViewGroup;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.utils.LiveRoomCheckLivePresenter;
import com.yunbao.common.utils.RouteUtil;
import com.yunbao.common.views.AbsMainViewHolder;
import com.yunbao.common.bean.LiveBean;
import com.yunbao.main.activity.MainActivity;
/**
* Created by cxf on 2018/9/22.
* MainActivity中的首页附近 的子页面
@ -23,6 +27,17 @@ public abstract class AbsMainHomeChildViewHolder extends AbsMainViewHolder {
* 观看直播
*/
public void watchLive(LiveBean liveBean, String key, int position) {
((MainActivity) mContext).watchLive(liveBean, key, position);
new LiveRoomCheckLivePresenter(mContext, liveBean.getUid(), liveBean.getStream(), new LiveRoomCheckLivePresenter.NewActionListener() {
@Override
public void onLiveRoomChanged(String liveUid, String stream, int liveType, String liveTypeVal, String liveSdk) {
MobclickAgent.onEvent(mContext, "home_page_enter_room", "首页点击直播间");
RouteUtil.forwardLiveAudienceActivity(liveBean, liveType, Integer.parseInt(liveSdk), Integer.parseInt(liveTypeVal));
}
@Override
public void onCheckError(String contextError) {
}
});
}
}

View File

@ -1,6 +1,7 @@
package com.yunbao.main.views;
import android.animation.ObjectAnimator;
import android.app.Activity;
import android.content.DialogInterface;
import android.content.Intent;
import android.text.TextUtils;
@ -65,9 +66,9 @@ public class MainHomeGameViewHolder extends AbsMainHomeChildViewHolder implement
private long animDuration = 500;
private String id = "0";
private SudGameListAdapter sudGameListAdapter;
private AbsActivity context;
private Activity context;
public MainHomeGameViewHolder(AbsActivity context, ViewGroup parentView) {
public MainHomeGameViewHolder(Activity context, ViewGroup parentView) {
super(context, parentView);
this.context = context;
Bus.getOn(this);

View File

@ -1,21 +1,45 @@
package com.yunbao.main.views;
import android.Manifest;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.os.Build;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.ImageView;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.blankj.utilcode.util.PermissionUtils;
import com.umeng.analytics.MobclickAgent;
import com.yunbao.common.CommonAppConfig;
import com.yunbao.common.activity.AbsActivity;
import com.yunbao.common.glide.ImgLoader;
import com.yunbao.common.http.HttpCallback;
import com.yunbao.common.http.LiveHttpUtil;
import com.yunbao.common.manager.IMLoginManager;
import com.yunbao.common.utils.DialogUitl;
import com.yunbao.common.utils.PluginManager;
import com.yunbao.common.utils.ToastUtil;
import com.yunbao.common.utils.WordUtil;
import com.yunbao.common.views.weight.ViewClicksAntiShake;
import com.yunbao.live.activity.LiveAnchorActivity;
import com.yunbao.live.activity.LiveRyAnchorActivity;
import com.yunbao.live.bean.LiveKsyConfigBean;
import com.yunbao.main.R;
import com.yunbao.main.activity.FollowActivity;
import com.yunbao.main.activity.MainListActivity;
import com.yunbao.main.activity.SearchActivity;
import com.yunbao.main.dialog.MainStartDialogFragment;
/**
* Created by cxf on 2018/9/22.
* MainActivity 首页 删除
*/
public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
public class MainHomeViewHolder extends AbsMainHomeParentViewHolder implements View.OnClickListener {
private MainHomeFollLiveViewHolder mainHomeFollLiveViewHolder;
private MainHomeLiveViewHolder mainHomeLiveViewHolder;
private MainHomeRecomLiveViewHolder mainHomeRecomLiveViewHolder;
@ -40,6 +64,10 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
ImgLoader.display(mContext, "https://downs.yaoulive.com/gif_trophy.gif", img_trophy);
ViewClicksAntiShake.clicksAntiShake(img_trophy, () -> onClick(img_trophy));
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.btn_search), () -> onClick(findViewById(R.id.btn_search)));
ViewClicksAntiShake.clicksAntiShake(findViewById(R.id.toLive), () -> onClick(findViewById(R.id.toLive)));
}
public void setCurPosition(int position) {
@ -86,7 +114,7 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
vh = mainHomeRecomLiveViewHolder;
} else if (position == 3) {
mainHomeGameLiveViewHolder = new MainHomeGameViewHolder((AbsActivity) mContext, parent);
mainHomeGameLiveViewHolder = new MainHomeGameViewHolder((Activity) mContext, parent);
vh = mainHomeGameLiveViewHolder;
}
@ -119,5 +147,112 @@ public class MainHomeViewHolder extends AbsMainHomeParentViewHolder {
};
}
private HttpCallback mGetLiveSdkCallback = new HttpCallback() {
@Override
public void onSuccess(int code, String msg, final String[] info) {
if (code == 0 && info.length > 0) {
LiveHttpUtil.getisRong(new HttpCallback() {
@Override
public void onSuccess(int code, String msg, String[] info1) {
try {
JSONObject obj = JSON.parseObject(info[0]);
JSONObject obj1 = JSON.parseObject(info1[0]);
if (obj1.getString("is_rong").equals("1")) {
LiveRyAnchorActivity.forward(mContext, obj.getIntValue("live_sdk"), JSON.parseObject(obj.getString("android"), LiveKsyConfigBean.class));
} else {
LiveAnchorActivity.forward(mContext, obj.getIntValue("live_sdk"), JSON.parseObject(obj.getString("android"), LiveKsyConfigBean.class));
}
} catch (Exception e) {
}
}
});
}
}
};
public void onLiveClick() {
boolean isAnchor = IMLoginManager.get(mContext).getUserInfo().anchorUserType();
if (isAnchor) {
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
};
}
PermissionUtils.permission(permissions).callback(new PermissionUtils.SimpleCallback() {
@Override
public void onGranted() {
if (!CommonAppConfig.IS_PLUGIN_MODEL || PluginManager.getInstance().isDownloadApk()) {
PluginManager.getInstance().loadAnchorPlugin(it -> {
LiveHttpUtil.getLiveSdk(mGetLiveSdkCallback);
});
} else {
String tips = "需要下載開播插件,是否下載";
if (!WordUtil.isNewZh()) {
tips = "You need to download the plug-in, whether to download";
}
DialogUitl.showSimpleDialog(mContext, tips, new DialogUitl.SimpleCallback() {
@Override
public void onConfirmClick(Dialog dialog, String content) {
Dialog downloadDialog = DialogUitl.loadingDialog(mContext, "Downloading...");
downloadDialog.show();
PluginManager.getInstance().loadAnchorPlugin(it -> {
LiveHttpUtil.getLiveSdk(mGetLiveSdkCallback);
downloadDialog.dismiss();
});
}
});
}
}
@Override
public void onDenied() {
}
}).request();
} else {
ToastUtil.show(WordUtil.getNewString(R.string.only_open_anchor));
}
}
@Override
public void onClick(View v) {
if (!canClick()) {
return;
}
int i = v.getId();
if (i == R.id.btn_start) {
MobclickAgent.onEvent(mContext, "broadcast", "开播按钮");
} else if (i == R.id.btn_search) {
SearchActivity.forward(mContext);
MobclickAgent.onEvent(mContext, "home_page_search", "右上角搜索按钮");
} else if (i == R.id.btn_follow) {
//关注
FollowActivity.forward(mContext, CommonAppConfig.getInstance().getUid(), 0);
} else if (i == R.id.img_trophy) {
MainListActivity.forward(mContext, 0);
MobclickAgent.onEvent(mContext, "home_page_ranking", "右上角排行榜按钮");
//RandomPkDialogFragment fragment = new RandomPkDialogFragment();
//fragment.show(this.getSupportFragmentManager(), "RandomPkDialogFragment");
} else if (i == R.id.toLive) {
onLiveClick();
}
}
}

View File

@ -28,10 +28,9 @@
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="45dp"
android:layout_marginRight="85dp"
android:layout_marginBottom="2dp"
android:contentDescription="TODO"
android:onClick="mainClick"
android:padding="9dp"
android:src="@mipmap/icon_main_search" />
@ -41,12 +40,20 @@
android:layout_height="40dp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_marginRight="5dp"
android:layout_marginRight="55dp"
android:layout_marginBottom="2dp"
android:contentDescription="TODO"
android:onClick="mainClick"
android:padding="6dp" />
<Button
android:id="@+id/toLive"
android:text="去直播"
android:textSize="8sp"
android:layout_alignParentRight="true"
android:layout_alignParentBottom="true"
android:layout_width="60dp"
android:layout_height="40dp"/>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="37dp"