taomenggo init

This commit is contained in:
guozhen
2024-08-06 10:30:15 +08:00
committed by xuhuixiang
parent 3e7fd07f4f
commit c929efd05e
3007 changed files with 229844 additions and 77 deletions

View File

@@ -0,0 +1,420 @@
// Copyright (c) 2022 NetEase, Inc. All rights reserved.
// Use of this source code is governed by a MIT license that can be
// found in the LICENSE file.
package com.dskj.rbchat;
import static com.netease.yunxin.kit.corekit.im.utils.RouterConstant.PATH_FUN_TEAM_SETTING_PAGE;
import android.app.Activity;
import android.app.NotificationManager;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.os.Bundle;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.util.Log;
import com.dskj.rbchat.imkit.team.TeamAnnouncementActivity;
import com.dskj.rbchat.map.LocationPageActivity1;
import com.dskj.rbchat.utils.GsonUtils;
import com.netease.yunxin.kit.chatkit.model.IMMessageInfo;
import com.netease.yunxin.kit.chatkit.repo.ChatObserverRepo;
import com.netease.yunxin.kit.chatkit.ui.ChatKitUIConstant;
import com.netease.yunxin.kit.chatkit.ui.common.ChatDataUtils;
import com.netease.yunxin.kit.chatkit.ui.common.ChatUtils;
import com.netease.yunxin.kit.chatkit.ui.page.LocationPageActivity;
import com.netease.yunxin.kit.conversationkit.ui.fun.viewholder.EmojiManager;
import com.netease.yunxin.kit.corekit.im.model.EventObserver;
import com.scwang.smart.refresh.footer.ClassicsFooter;
import androidx.annotation.Nullable;
import androidx.multidex.MultiDexApplication;
import com.blankj.utilcode.util.LanguageUtils;
import com.dskj.rbchat.contact.ContactGroupSettingActivity;
import com.dskj.rbchat.contact.FunBlackListActivity;
import com.dskj.rbchat.imkit.person.PersonSettingActivity;
import com.dskj.rbchat.imkit.selector.FunContactSelectorActivity;
import com.dskj.rbchat.imkit.team.TeamSettingActivity;
import com.dskj.rbchat.main.MainActivity;
import com.dskj.rbchat.main.mine.MineInfoActivity;
import com.dskj.rbchat.contact.UserInfoActivity;
import com.dskj.rbchat.model.AlbumBean;
import com.dskj.rbchat.network.Api;
import com.dskj.rbchat.network.BaseObserver;
import com.dskj.rbchat.network.Result;
import com.dskj.rbchat.push.PushMessageHandler;
import com.dskj.rbchat.utils.Constant;
import com.dskj.rbchat.utils.DataUtils;
import com.dskj.rbchat.utils.LogUtils;
import com.dskj.rbchat.voom.TiktoInfokActivity;
import com.dskj.rbchat.welcome.WelcomeActivity;
import com.heytap.msp.push.HeytapPushManager;
import com.huawei.hms.support.common.ActivityMgr;
import com.iflytek.sparkchain.core.LLM;
import com.iflytek.sparkchain.core.LLMConfig;
import com.iflytek.sparkchain.core.Memory;
import com.iflytek.sparkchain.core.SparkChain;
import com.iflytek.sparkchain.core.SparkChainConfig;
import com.netease.nimlib.sdk.NIMClient;
import com.netease.nimlib.sdk.SDKOptions;
import com.netease.nimlib.sdk.auth.LoginInfo;
import com.netease.yunxin.kit.alog.ALog;
import com.netease.yunxin.kit.chatkit.ui.common.RxBus;
import com.netease.yunxin.kit.chatkit.ui.custom.StickerAttachment;
import com.netease.yunxin.kit.chatkit.ui.fun.page.FunChatSettingActivity;
import com.netease.yunxin.kit.chatkit.ui.model.RxBusToVoom;
import com.netease.yunxin.kit.common.ui.utils.ToastX;
import com.netease.yunxin.kit.contactkit.ui.ContactConstant;
import com.netease.yunxin.kit.corekit.im.IMKitClient;
import com.netease.yunxin.kit.corekit.im.repo.SettingRepo;
import com.netease.yunxin.kit.corekit.im.utils.IMKitUtils;
import com.netease.yunxin.kit.corekit.im.utils.RouterConstant;
import com.netease.yunxin.kit.corekit.route.XKitRouter;
import com.netease.yunxin.kit.locationkit.LocationKitClient;
import com.tencent.bugly.crashreport.CrashReport;
import com.vivo.push.PushClient;
import com.vivo.push.util.VivoPushException;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import cn.jiguang.api.JCoreInterface;
import cn.jiguang.api.utils.JCollectionAuth;
import cn.jpush.android.api.JPushInterface;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.schedulers.Schedulers;
public class IMApplication extends MultiDexApplication {
private static final String TAG = "IMApplication";
private static boolean coldStart = false;
private static int foregroundActCount = 0;
public static final int LOGIN_PARENT_SCOPE = 2;
public static final int LOGIN_SCOPE = 7;
public static IMApplication AppContext;
public LLM llm;
public static String schemeUserId = null;
public static String schemeTeamId = null;
public static String schemeSilverQrCode = null;
public static IMApplication getInstance() {
return AppContext;
}
@Override
public void onCreate() {
super.onCreate();
ALog.d(Constant.PROJECT_TAG, TAG, "onCreate");
//app init
registerActivityLifeCycle();
// AppCrashHandler.getInstance().initCrashHandler(this);
// Thread.setDefaultUncaughtExceptionHandler(AppCrashHandler.getInstance());
AppContext = this;
initUIKit();
// temp register for mine
registerRouter();
CrashReport.initCrashReport(getApplicationContext(), "29ecb7c2d2", true);
initLang();
initAiSDK();
JPushInterface.setDebugMode(BuildConfig.DEBUG);
JPushInterface.init(this);
// JCoreInterface.testCountryCode(this, "us");
// String id = JPushInterface.getRegistrationID(this);
// LogUtils.d("id===" + id);
JCollectionAuth.setAuth(this, true); //如初始化被拦截过,将重试初始化过程
RxBus.getInstance().toObservable(RxBusToVoom.class)
.subscribeOn(rx.schedulers.Schedulers.io())
.unsubscribeOn(rx.schedulers.Schedulers.io())
.subscribe(changeImageViewBean -> {//回顶部
getPostInfo(changeImageViewBean);
});
initFooter();
EmojiManager.init(this);
}
public void initFooter() {
ClassicsFooter.REFRESH_FOOTER_PULLING = getResources().getString(R.string.srl_footer_pulling);//"上拉加载更多";
ClassicsFooter.REFRESH_FOOTER_RELEASE = getResources().getString(R.string.srl_footer_release);//"释放立即加载";
ClassicsFooter.REFRESH_FOOTER_LOADING = getResources().getString(R.string.srl_footer_loading);//"正在刷新...";
ClassicsFooter.REFRESH_FOOTER_REFRESHING = getResources().getString(R.string.srl_footer_refreshing);//"正在加载...";
ClassicsFooter.REFRESH_FOOTER_FINISH = getResources().getString(R.string.srl_footer_finish);//"加载完成";
ClassicsFooter.REFRESH_FOOTER_FAILED = getResources().getString(R.string.srl_footer_failed);//"加载失败";
ClassicsFooter.REFRESH_FOOTER_NOTHING = getResources().getString(R.string.srl_footer_nothing);//"全部加载完成";
}
private void getPostInfo(RxBusToVoom attachment) {
Api.getInstance().postsInfo(attachment.getPostId())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new BaseObserver<Result<AlbumBean>>() {
@Override
public void onSuccess(Result<AlbumBean> feedbackResp) {
AlbumBean albumBean = feedbackResp.data;
Intent intent = new Intent(getAppContext(), TiktoInfokActivity.class);
intent.putExtra("bean", albumBean);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
getAppContext().startActivity(intent);
}
@Override
public void onError(int code, String msg) {
ToastX.showShortToast(msg);
}
});
}
public void registerRouter() {
XKitRouter.registerRouter(RouterConstant.PATH_MINE_INFO_PAGE, MineInfoActivity.class);
XKitRouter.registerRouter(
RouterConstant.PATH_CONTACT_SELECTOR_PAGE, FunContactSelectorActivity.class);
XKitRouter.registerRouter(
RouterConstant.PATH_FUN_CONTACT_SELECTOR_PAGE, FunContactSelectorActivity.class);
// XKitRouter.registerRouter(RouterConstant.PATH_ADD_FRIEND_PAGE, FunAddFriendActivity.class);
// XKitRouter.registerRouter(RouterConstant.PATH_FUN_ADD_FRIEND_PAGE, FunAddFriendActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_FUN_USER_INFO_PAGE, UserInfoActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_USER_INFO_PAGE, UserInfoActivity.class);
XKitRouter.registerRouter(ContactConstant.PATH_FUN_CREATE_GROUP_PAGE, ContactGroupSettingActivity.class);
// XKitRouter.registerRouter(PATH_FUN_TEAM_SETTING_PAGE, FunTeamSettingActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_FUN_TEAM_SETTING_PAGE, TeamSettingActivity.class);
XKitRouter.registerRouter(ChatKitUIConstant.PATH_FUN_TEAM_ANNOUNCEMENT_PAGE, TeamAnnouncementActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_FUN_CHAT_SETTING_PAGE, PersonSettingActivity.class);
// XKitRouter.registerRouter(RouterConstant.PATH_CHAT_SETTING_PAGE, FunChatSettingActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_FUN_MY_BLACK_PAGE, FunBlackListActivity.class);
XKitRouter.registerRouter(RouterConstant.PATH_CHAT_LOCATION_PAGE, LocationPageActivity1.class);
XKitRouter.registerRouter("locationPage", LocationPageActivity.class);
}
public void initAiSDK() {
// 初始化SDKAppid等信息在清单中配置
SparkChainConfig sparkChainConfig = SparkChainConfig.builder();
sparkChainConfig.appID(IMUIKitConfig.AI_APPID)
.apiKey(IMUIKitConfig.AI_APIKEY)
.apiSecret(IMUIKitConfig.AI_APISECRET)//应用申请的appid三元组
.logLevel(0);
int ret = SparkChain.getInst().init(getApplicationContext(), sparkChainConfig);
if (ret == 0) {
Log.d(TAG, "SDK初始化成功" + ret);
LLMConfig llmConfig = LLMConfig.builder();
llmConfig.domain("generalv3");
// llmConfig.url("ws(s)://spark-api.xf-yun.com/v3.1/chat");
//memory有两种windows_memory和tokens_memory二选一即可
Memory window_memory = Memory.windowMemory(5);
llm = new LLM(llmConfig, window_memory);
// Memory tokens_memory = Memory.tokenMemory(8192);
// llm = new LLM(llmConfig,tokens_memory);
}
}
private void initLang() {
if (DataUtils.get(getAppContext(), "locale", -1) == -1) {//如果一次都没有设置则需要默认设置一次以便Activity中生效
// PreferencesToolkits.getNew(getAppContext(),"locale",0);
if (Locale.getDefault().getCountry().equals(Locale.CHINA.getCountry())) {
DataUtils.set(getAppContext(), "locale", 1);
} else if (Locale.getDefault().equals(Locale.ENGLISH)) {
DataUtils.set(getAppContext(), "locale", 2);
} else if (Locale.getDefault().equals(Locale.JAPANESE)) {
DataUtils.set(getAppContext(), "locale", 3);
} else {
DataUtils.set(getAppContext(), "locale", 0);
}
}
int loc = DataUtils.get(getAppContext(), "locale", 3);
ChatDataUtils.set(getAppContext(), "locale", loc);
LogUtils.i("下标:" + loc);
switch (loc) {
case 0:
LanguageUtils.updateAppContextLanguage(Locale.TRADITIONAL_CHINESE, null);
applyLanguage(Resources.getSystem(), Locale.TRADITIONAL_CHINESE);
//修复StringUtils获取string的语言
applyLanguage(this.getResources(), Locale.TRADITIONAL_CHINESE);
break;
case 1:
LanguageUtils.updateAppContextLanguage(Locale.CHINESE, null);
applyLanguage(Resources.getSystem(), Locale.CHINESE);
//修复StringUtils获取string的语言
applyLanguage(this.getResources(), Locale.CHINESE);
break;
case 2:
LanguageUtils.updateAppContextLanguage(Locale.ENGLISH, null);
applyLanguage(Resources.getSystem(), Locale.ENGLISH);
//修复StringUtils获取string的语言
applyLanguage(this.getResources(), Locale.ENGLISH);
break;
case 3:
LanguageUtils.updateAppContextLanguage(Locale.JAPANESE, null);
applyLanguage(Resources.getSystem(), Locale.JAPANESE);
//修复StringUtils获取string的语言
applyLanguage(this.getResources(), Locale.JAPANESE);
//修复StringUtils获取string的语言
break;
}
}
//设置当前语言
public static void applyLanguage(Resources resources, Locale locale) {
Locale.setDefault(locale);
Configuration config = resources.getConfiguration();
DisplayMetrics dm = resources.getDisplayMetrics();
config.locale = locale;
resources.updateConfiguration(config, dm);
}
private void initUIKit() {
SDKOptions options = NimSDKOptionConfig.getSDKOptions(this, DataUtils.readAppKey(this));
IMKitClient.init(this, null, options);
ALog.d(Constant.PROJECT_TAG, TAG, "initUIKit");
if (IMKitUtils.isMainProcess(this)) {
ALog.d(Constant.PROJECT_TAG, TAG, "initUIKit:isMainProcess");
LocationKitClient.init(this);
//huawei push
ActivityMgr.INST.init(this);
//oppo push
HeytapPushManager.init(this, true);
try {
//vivo push
PushClient.getInstance(this).initialize();
} catch (VivoPushException e) {
e.printStackTrace();
}
IMKitClient.toggleNotification(SettingRepo.isPushNotify());
IMKitClient.registerMixPushMessageHandler(new PushMessageHandler());
SettingRepo.setShowReadStatus(false);
IMKitClient.getStatus();
}
}
// 如果返回值为 null则全部使用默认参数。
private SDKOptions options() {
SDKOptions options = new SDKOptions();
//此处仅设置appkey其他设置请自行参看信令文档设置 https://dev.yunxin.163.com/docs/product/信令/SDK开发集成/Android开发集成/初始化
options.appKey = "4cb6b0998f9e7af9d7673963e429959a";
return options;
}
public static Context getAppContext() {
return AppContext;
}
public final List<Activity> activities = new ArrayList<>();
//用于系统杀死应用之后,系统恢复应用,可能存在没有登录的异常
//此处如果在没有登录的情况下其他页面打开的时候进行finish();除了MainActivity
//MainActivity启动进行登录检测如果没有登录进行登录操作
private void registerActivityLifeCycle() {
registerActivityLifecycleCallbacks(
new ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if (TextUtils.isEmpty(IMKitClient.account())
&& !(activity instanceof MainActivity || activity instanceof WelcomeActivity)
&& !coldStart) {
activity.finish();
} else {
activities.add(activity);
}
}
@Override
public void onActivityStarted(Activity activity) {
foregroundActCount++;
closeNotify();
}
@Override
public void onActivityResumed(Activity activity) {
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
foregroundActCount--;
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
if (activities.isEmpty()) {
return;
}
activities.remove(activity);
}
});
}
public void removeAllActivity() {
while (activities.size() > 0) {
try {
activities.get(activities.size() - 1).finish();
activities.remove(activities.size() - 1);
} catch (Exception e) {
e.printStackTrace();
}
}
}
private void closeNotify() {
NotificationManager manager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancelAll();
}
public void clearActivity(Activity exclude) {
for (int i = 0; i < activities.size(); i++) {
if (activities.get(i) != null && activities.get(i) != exclude) {
activities.get(i).finish();
}
}
}
public static void setColdStart(boolean value) {
coldStart = value;
}
@Override
public void onTerminate() {
super.onTerminate();
SparkChain.getInst().unInit();
foregroundActCount = 0;
}
public static int getForegroundActCount() {
return foregroundActCount;
}
}