diff --git a/OneToOne/build.gradle b/OneToOne/build.gradle index 79f43b9f0..f1a10d08d 100644 --- a/OneToOne/build.gradle +++ b/OneToOne/build.gradle @@ -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') diff --git a/OneToOne/google-services-oto.json b/OneToOne/google-services-oto.json new file mode 100644 index 000000000..4daabca5a --- /dev/null +++ b/OneToOne/google-services-oto.json @@ -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" +} \ No newline at end of file diff --git a/OneToOne/google-services.json b/OneToOne/google-services.json index 4daabca5a..52d6ceae8 100644 --- a/OneToOne/google-services.json +++ b/OneToOne/google-services.json @@ -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" + } } ] } diff --git a/OneToOne/src/main/AndroidManifest.xml b/OneToOne/src/main/AndroidManifest.xml index 2ef751d49..774fdefee 100644 --- a/OneToOne/src/main/AndroidManifest.xml +++ b/OneToOne/src/main/AndroidManifest.xml @@ -290,6 +290,22 @@ + + + + + + \ No newline at end of file diff --git a/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java b/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java index 52cb6d183..c5a0fb6ec 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/AppContext.java @@ -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) { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/AbsOTOActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/AbsOTOActivity.java index 1e3ccc259..9a4fb40f8 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/AbsOTOActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/AbsOTOActivity.java @@ -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() { diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java index 907c93d4b..c3482d3d1 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomeSearchActivity.java @@ -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 diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomepageRankingActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomepageRankingActivity.java index dfa565ee0..7d7187416 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/HomepageRankingActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/HomepageRankingActivity.java @@ -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 diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java index 3e282b38c..c7383f571 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/MainActivity.java @@ -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 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() { @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() { + @Override + public void onComplete(@NonNull Task 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); + } + } + /** * 用户被踢下线 * diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/LiveFragment.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/LiveFragment.java new file mode 100644 index 000000000..71e41f573 --- /dev/null +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/fragments/LiveFragment.java @@ -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(); + } +} diff --git a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java index 8a13fad41..4dbcaa9da 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/activity/setting/SettingActivity.java @@ -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; diff --git a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java index 032c91871..9c5675022 100644 --- a/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java +++ b/OneToOne/src/main/java/com/shayu/onetoone/manager/RouteManager.java @@ -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"; /** * 达人认证入口 diff --git a/OneToOne/src/main/res/layout/activity_main.xml b/OneToOne/src/main/res/layout/activity_main.xml index d1c9f3c1c..071d489cc 100644 --- a/OneToOne/src/main/res/layout/activity_main.xml +++ b/OneToOne/src/main/res/layout/activity_main.xml @@ -54,6 +54,25 @@ android:gravity="center" android:text="@string/home_label_friends" /> + + + + + + - - 友聊 - 選擇活動 - 【安全提示】為保障您的權益,慶提高警惕,不要輕易添加或提供第三方聯繫方式 - 成功 - 失敗 - 錯誤 - 交友 - 動態 - 消息 - 我的 - 打招呼文案 - 上傳圖片(非必選) - 清除設置 - 保存設置 - 我的收益 - 獎勵說明 - 可提現總額 - 今日收益: - 結算記錄 - 累計收益: - 兌換鑽石/星幣 - 獎勵提現 - (最低$ %s) - 兌換星幣 - 兌換記錄 - 可兌換總額 - 金幣 - 切換 - 敬請期待 - 請輸入需兌換的星幣金額 - 請輸入需兌換的鑽石金額 - 立即兌換 - 全額兌換 - - 最多選 %1$s 張圖片哦 - 暫無好友消息~ - 餘額不足 - 文字聊天每條續消耗%s星幣,您可通過充值獲取更多星幣以便繼續聊天 - - 與TA視頻聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 - 與TA語音聊天每分鐘續消耗%s星幣您可通過充值獲取更多星幣以便繼續聊天 - 聊天每條續消耗%s星幣,您可通過充值獲取更多星幣以便繼續聊天 - 離開 - 去充值 - 發起視頻通話\n%s星幣/分鐘 - 發起語音通話\n%s星幣/分鐘 - 相冊 - 拍照 - 圖片信息 - 複製 - 刪除 - 置頂 - 取消置頂 - 複製成功 - 上傳中 - 上傳成功 - 上傳失敗 - - - - 生日 - 完成 - 完成 - 請填寫昵稱 - 請選擇性別 - 請允許懸浮窗權限才能進行小窗 - 設置 - 取消 - 通話時長: - 通話將在%s秒后斷\n開,請及時充值 - 首次匹配成功獎勵 - 恭喜獲得 - 打招呼設置 - 審核中,請耐心等待审核通过 - 已發起審核,請耐心等待審核結果 - 審核失敗,去提交 - 審核中 - 認證通過 - 審核失敗重新提交 - 去認證 - 重新提交 - 上傳入駐資料 - 達人認證 - 查詢中 - 去上傳 - 請輸入內容 - 確定要退出靈魂速配嗎? - 繼續匹配 - 徹底離開 - 當前等待時間較長,建議您先去觀看動態哦,稍後再來哦~ - 繼續匹配 - 去看動態 - 餘額不足,請充值后再進行嘗試吧~ - 取消 - 前往充值 - [禮物] - [邀請認證] - [系統提示] - 等待對方接受邀請… - 連接成功 - 需要獲取您的權限 - 邀請對方完成真人認證,開通通話權限 - 待開通 - 對方邀請您完成真人認證,開通通話權限 - 去開通 - 送給TA - 送給你 - 確定 - - 真人說明 - 請上傳您的身份證正反面完成真人認證,完成認證可獲得跟多消息推送並提高聊天,收禮的收益比例 - 身份證正面 - 身份證背面 - 發起審核 - - 帶*為必填項,為保障您的利益,請如實填寫 - 性別 - - - 真實姓名 - 請填寫您的真實姓名 - 手機號碼 - 請填寫您的手機號碼 - 身份證號碼 - 請填寫您的身份證號碼 - 上傳手持證件照 - 請將證件頭像朝向前方 - 參考圖 - 上傳背景圖片 - 發起審核 - - 真人說明 - 請上傳您的身份證正反面完成真人認證,完成認證可獲得跟多消息推送並提高聊天,收禮的收益比例 - 條件一:完成真人認證 - 已完成 - 條件二:上傳入駐資料 - 已完成 - - 跳過 - 我的標籤 - 暫無標籤 - 完成 - - 完善個人信息 - 去選擇 - 昵稱 - 性別 - - - 生日 - 完成 - - 溫馨提示:可以免費修改昵稱一次,之後修改需要鑽石600一次 - - 頭像 - 暱稱 - 簽名 - 生日 - 性別 - 所在地 - 綁定手機 - 真人認證 - 興趣 - - 忘記密碼 - - 用戶登錄 - - 魅力榜 - 財富榜 - - 正在熱聊中 - 匹配中… - TA還在練習見面開場白,再給TA點時間吧~ - 靈魂速配 - - 聯繫客服 - - 用戶註冊 - - 年齡 - 全部 - 40以上 - 性別 - - - 是否完成真人認證 - 已完成 - 未完成 - 確定 - 重置 - - 猜你喜歡 - - 個人設定 - 修改密碼 - 黑名單 - 語言設定 - 達人認證 - 常見問題 - 服務協議 - 清除緩存 - 刪除用戶 - 關於我們 - 版本號 - 檢查新版本 - 退出 - 用戶協議 - 消息通知 - - 我的標籤 - - 活潑 - - 取消 - - 關注 - 此次通話結束了快開啟\n下一次通話吧 - 再次通話 - 去充值 - - 打招呼設置 - 一鍵已讀 - - 推薦 - 熱門 - - 關注 - - 消息 - 好友 - - 用戶名稱 - 這個人很懶,什麼也沒留下。 - - 請輸入文案 - - 點擊查看 - - 輸入信息 - 聯繫客服 - 沒有找到匹配結果~ - - 對方邀請您完成真人認證,開通通話權限 - 去開通 - - 送給你 - - 充值 - - 查看主頁 - - 添加更多 - 保存 - 被關注 - 關注 - 互動關注 - - - 未關注 - 回關 - 已關注 - 相互關注 - - 粉絲 - 關注 - 好友 - - 收下獎勵 - 發送任意禮物后即可解鎖 - 余额不足,请充值后再进行尝试吧~ - 通话结束 - 对方未完成真人认证,暂时无法向对方发起通话 - 您當前正在通話中,請掛斷後再試 - 兌換成功 - 兌換失敗 - \ No newline at end of file diff --git a/OneToOne/src/main/res/values-zh-rHK/strings.xml b/OneToOne/src/main/res/values-zh/strings.xml similarity index 100% rename from OneToOne/src/main/res/values-zh-rHK/strings.xml rename to OneToOne/src/main/res/values-zh/strings.xml diff --git a/common/src/main/java/com/yunbao/common/bean/AnchorStartLiveBean.java b/common/src/main/java/com/yunbao/common/bean/AnchorStartLiveBean.java index ab3160f99..da5761653 100644 --- a/common/src/main/java/com/yunbao/common/bean/AnchorStartLiveBean.java +++ b/common/src/main/java/com/yunbao/common/bean/AnchorStartLiveBean.java @@ -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; diff --git a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java index 260ec4cac..0617c28aa 100644 --- a/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java +++ b/common/src/main/java/com/yunbao/common/manager/IMLoginManager.java @@ -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"); } diff --git a/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java b/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java index 142eaa917..50674a848 100644 --- a/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java +++ b/common/src/main/java/com/yunbao/common/manager/imrongcloud/RongcloudIMManager.java @@ -48,7 +48,7 @@ public class RongcloudIMManager { } else { RONG_IM_KEY = "uwd1c0sxu1p71"; //正式服key } - RONG_IM_KEY="lmxuhwagl7s1d"; + //RONG_IM_KEY="lmxuhwagl7s1d"; } /** diff --git a/config.gradle b/config.gradle index 208a08ad1..d5f29e98d 100644 --- a/config.gradle +++ b/config.gradle @@ -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, ] } diff --git a/gradle.properties b/gradle.properties index 3977dbb07..099d90bb2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -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 \ No newline at end of file diff --git a/main/build.gradle b/main/build.gradle index fe2ded920..dce7bcfaf 100644 --- a/main/build.gradle +++ b/main/build.gradle @@ -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') diff --git a/main/src/main/java/com/yunbao/main/views/AbsMainHomeChildViewHolder.java b/main/src/main/java/com/yunbao/main/views/AbsMainHomeChildViewHolder.java index 152077445..18ae719a8 100644 --- a/main/src/main/java/com/yunbao/main/views/AbsMainHomeChildViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/AbsMainHomeChildViewHolder.java @@ -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) { + + } + }); } } diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeGameViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeGameViewHolder.java index 522bde3f0..62315a739 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeGameViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeGameViewHolder.java @@ -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); diff --git a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java index fc440dcad..15b3fa4b4 100644 --- a/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java +++ b/main/src/main/java/com/yunbao/main/views/MainHomeViewHolder.java @@ -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(); + } + + + } } diff --git a/main/src/main/res/layout/view_main_home.xml b/main/src/main/res/layout/view_main_home.xml index 09d56d5f8..c71e289fc 100644 --- a/main/src/main/res/layout/view_main_home.xml +++ b/main/src/main/res/layout/view_main_home.xml @@ -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" /> +