123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140 |
- package com.dlc.exam
- import android.app.ActivityManager
- import android.app.Application
- import android.content.BroadcastReceiver
- import android.content.Context
- import android.content.Intent
- import android.content.IntentFilter
- import android.os.Handler
- import android.os.Looper
- import android.os.Message
- import android.util.Log
- import android.widget.Toast
- import androidx.localbroadcastmanager.content.LocalBroadcastManager
- import androidx.multidex.MultiDex
- import com.dlc.exam.common.Constants
- import com.dlc.exam.sp.EnvSp
- import com.dlc.exam.ui.SplashActivity
- import com.iflytek.cloud.SpeechConstant
- import com.iflytek.cloud.SpeechUtility
- import com.rc.core.log.RcLog
- import com.rc.core.util.CrashHandler
- import com.rc.core.util.ScreenAdapter
- import com.rc.httpcore.HttpClient
- import com.rc.httpcore.config.ConfigCore
- import com.rc.httpcore.config.ConfigFactory
- import com.rc.httpcore.vo.response.LearnLoginVo
- /**
- * info
- *
- * @author ReiChin_
- */
- class ExamApp : Application() {
- companion object {
- @JvmField
- var sLearnLoginVo: LearnLoginVo? = null
- }
- override fun onCreate() {
- super.onCreate()
- ScreenAdapter.initAppDensity(this)
- CrashHandler.initCrash(this)
- initBugly()
- // 初始化网络配置参数
- initHttpConfig()
- // 初始化讯飞语音引擎
- initIflytek()
- }
- private fun initHttpConfig() {
- HttpClient.init(this)
- HttpClient.token = Constants.NetExtra.TOKEN
- HttpClient.vName = BuildConfig.VERSION_NAME
- val envConfig = EnvSp.loadEnv(this)
- val configParam = ConfigFactory.buildReleaseConfig
- Constants.MqttConfig.initMqttConfig(configParam, envConfig)
- ConfigCore.initConfig(configParam, envConfig?.baseUrl, envConfig?.fileBrowserBaseUrl)
- LocalBroadcastManager.getInstance(this)
- .registerReceiver(object : BroadcastReceiver() {
- override fun onReceive(context: Context?, intent: Intent?) {
- if (!topActivityIsSplashActivity()) {
- Toast.makeText(
- applicationContext,
- "登录过期,请重新登录",
- Toast.LENGTH_SHORT
- ).show()
- mUiHandler.sendEmptyMessageAtTime(1, 1500)
- }
- }
- }, IntentFilter("com.rc.core.token_expired"))
- }
- private val mUiHandler = object : Handler(Looper.getMainLooper()) {
- override fun handleMessage(msg: Message) {
- if (1 == msg.what) {
- // Token过期,进入登录页
- val intent = Intent().apply {
- flags = Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK
- setClass(this@ExamApp, SplashActivity::class.java)
- }
- removeCallbacksAndMessages(null)
- startActivity(intent)
- }
- }
- }
- private fun topActivityIsSplashActivity(): Boolean {
- return try {
- val activityManager = getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
- val componentName = activityManager.getRunningTasks(1)[0].topActivity
- SplashActivity::class.java.name == componentName?.className
- } catch (e: Exception) {
- false
- }
- }
- /**
- * 初始化讯飞语音引擎
- */
- private fun initIflytek() {
- // 初始化讯飞语音引擎
- val param = StringBuilder().apply {
- append("${SpeechConstant.APPID}=${Constants.Iflytek.APP_ID},")
- // 设置使用v5+
- append("${SpeechConstant.ENGINE_MODE}=${SpeechConstant.MODE_MSC}")
- }.toString()
- val speechUtility = SpeechUtility.createUtility(this, param)
- val engines = speechUtility.queryAvailableEngines()
- RcLog.info("[Iflytek]讯飞语音引擎初始化结束")
- engines.forEachIndexed { index, value ->
- RcLog.info("[Iflytek]engines[$index]=$value")
- }
- }
- override fun attachBaseContext(base: Context?) {
- super.attachBaseContext(base)
- MultiDex.install(this)
- }
- private fun initBugly() {
- /*
- * 第三个参数为SDK调试模式开关,调试模式的行为特性如下:
- * 1) 输出详细的Bugly SDK的Log;
- * 2) 每一条Crash都会被立即上报;
- * 3) 自定义日志将会在Logcat中输出。
- * 建议在测试阶段建议设置成true,发布时设置为false。
- */
- // CrashReport.initCrashReport(this, Constants.Bugly.APP_ID, true)
- // CrashReport.initCrashReport(this, Constants.Bugly.APP_ID, false)
- }
- }
|