123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236 |
- package com.dlc.eboard.ui
- import android.Manifest
- import android.app.smdt.SmdtManagerNew
- import android.content.Intent
- import android.os.Bundle
- import android.view.LayoutInflater
- import androidx.appcompat.app.AlertDialog
- import com.blankj.utilcode.constant.TimeConstants
- import com.blankj.utilcode.util.LogUtils
- import com.blankj.utilcode.util.TimeUtils
- import com.dlc.eboard.BuildConfig
- import com.dlc.eboard.LabApp
- import com.dlc.eboard.common.CommonUtils
- import com.dlc.eboard.databinding.ActivitySplashBinding
- import com.dlc.eboard.sp.DeviceSp
- import com.dlc.eboard.ui.settings.PasswordDialog
- import com.dlc.eboard.ui.settings.SettingsActivity
- import com.dlc.eboard.utils.NetworkUtils
- import com.dlc.laboratory.ui.LabMainActivity
- import com.rc.core.log.RcLog
- import com.rc.core.ui.activity.RcBaseActivity
- import com.rc.core.util.ApkUpdater
- import com.rc.core.util.DeviceUtils
- import com.rc.httpcore.client.ApiRepository
- import com.tbruyelle.rxpermissions2.RxPermissions
- /**
- * info
- *
- * @author ReiChin_
- */
- class SplashActivity : RcBaseActivity<ActivitySplashBinding>() {
- override fun createViewBinding() = ActivitySplashBinding.inflate(LayoutInflater.from(this))
- override fun initViews(savedInstanceState: Bundle?) {
- val smdtManagerNew = SmdtManagerNew.getInstance(this)
- if (smdtManagerNew != null) {
- // 设置导航栏不可见
- if (1 == smdtManagerNew.disp_getNavigationBar()) {
- smdtManagerNew.disp_setNavigationBar(false)
- }
- // 设置状态栏不可见
- if (1 == smdtManagerNew.disp_getStatusBar()) {
- smdtManagerNew.disp_setStatusBar(false)
- }
- // 设置手势不可呼出导航栏
- if (1 == smdtManagerNew.disp_getGestureBar()) {
- smdtManagerNew.disp_setGestureBar(false)
- }
- // 设置手势不可呼出状态栏
- if (1 == smdtManagerNew.disp_getStatusBarDrag()) {
- smdtManagerNew.disp_setStatusBarDrag(false)
- }
- }
- RcLog.info(
- "versionName:${DeviceUtils.getVersionName(this)}, versionCode:${
- DeviceUtils.getVersionCode(
- this
- )
- }, androidSN:${DeviceUtils.getAndroidSN()}"
- )
- viewBinding.deviceId.text = "设备编号:${DeviceUtils.getAndroidSN()}"
- viewBinding.versionName.text = "版本号:${DeviceUtils.getVersionName(this)}"
- viewBinding.copyRight.setOnLongClickListener {
- PasswordDialog(this) {
- val intent = Intent(this, SettingsActivity::class.java)
- startActivity(intent)
- }.show()
- true
- }
- }
- override fun onPostCreate(savedInstanceState: Bundle?) {
- super.onPostCreate(savedInstanceState)
- requestPermission()
- }
- private fun requestPermission() {
- val disposable = RxPermissions(this)
- .request(
- Manifest.permission.WRITE_EXTERNAL_STORAGE,
- Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.CAMERA,
- Manifest.permission.READ_PHONE_STATE,
- Manifest.permission.RECORD_AUDIO,
- )
- .subscribe { granted ->
- if (granted) {
- // 登录获取token
- val isNetworkAvailable = NetworkUtils.isNetworkAvailable(this)
- if (isNetworkAvailable) {
- authLogin()
- } else {
- // 当前网络不可用
- showToast("当前网络不可用,请等待")
- }
- } else {
- AlertDialog.Builder(this)
- .setTitle("提示")
- .setMessage("您必须同意所有权限才可以继续使用")
- .setNegativeButton("确定") { _, _ ->
- requestPermission()
- }.show()
- }
- }
- addDisposable(disposable)
- }
- private var lastErrTime: Long = 0L
- /**
- * 登录获取token
- */
- private fun authLogin() {
- viewBinding.tips.text = "正在登录系统"
- val disposable = ApiRepository.authOneLogin()
- .subscribe({ success ->
- if (success) {
- // 没有新版本
- queryLabConfig()
- // queryAppVersion()
- } else {
- authLogin()
- }
- }, { throwable ->
- val nowTime = System.currentTimeMillis()
- if (0L == lastErrTime && nowTime - lastErrTime > 20000) {
- lastErrTime = nowTime
- //初始化进入后网络反应太慢 重新调用
- authLogin()
- }
- showNetError(throwable)
- })
- addDisposable(disposable)
- }
- private fun queryAppVersion() {
- viewBinding.tips.text = "版本检测中..."
- val disposable = ApiRepository.apkVersion(CommonUtils.getAndroidId())
- .subscribe({ data ->
- if (CommonUtils.stringParseInt(data.version) > DeviceUtils.getVersionCode(this)) {
- // 有新版本
- viewBinding.tips.text = "检测到新版本,开始更新"
- viewBinding.progress.text = "(0%)"
- // 显示版本更新
- downloadApk(data.apkFileUpload)
- } else {
- // 没有新版本
- queryLabConfig()
- }
- }, { throwable ->
- showNetError(throwable)
- // queryLabConfig()
- })
- addDisposable(disposable)
- }
- private fun downloadApk(downloadUrl: String) {
- callApkUpdateApi("2")
- ApkUpdater(this, BuildConfig.APPLICATION_ID, callback = object :
- ApkUpdater.DownloadCallback {
- override fun onProgress(progress: Int) {
- viewBinding.progress.text = "(${progress}%)"
- }
- override fun onFailed(errMsg: String?) {
- callApkUpdateApi("0")
- viewBinding.tips.text = "下载失败,请检查网络情况重新下载"
- }
- override fun onSuccess(apkFile: String) {
- callApkUpdateApi("1")
- }
- }).downloadApk(downloadUrl)
- }
- /*
- * state 0:升级失败; 1:升级成功; 2:升级中
- */
- private fun callApkUpdateApi(state: String) {
- val disposable = ApiRepository.onepcApkUpdate(CommonUtils.getAndroidId(), state)
- .subscribe({ }, { })
- addDisposable(disposable)
- }
- private fun queryLabConfig() {
- viewBinding.tips.text = "正在查询实验室配置"
- RcLog.info("============CommonUtils.getAndroidId()" + CommonUtils.getAndroidId())
- val disposable = ApiRepository.queryLabConfig(CommonUtils.getAndroidId())
- .subscribe({ data ->
- RcLog.info("===========" + data.authType)
- LabApp.sLabConfig = data
- queryLaboratoryInfo("1" == data.isStart, data.labId)
- }, { throwable ->
- // dismissLoading()
- throwable.printStackTrace()
- showNetError(throwable)
- })
- addDisposable(disposable)
- }
- private fun queryLaboratoryInfo(openEBoard: Boolean, labId: String) {
- val id = if (openEBoard) labId else CommonUtils.getAndroidId()
- val disposable = ApiRepository.laboratoryInfo(openEBoard, id)
- .subscribe({ data ->
- dismissLoading()
- DeviceSp.saveLaboratoryVo(this, data)
- startHomeActivity(openEBoard)
- }, { throwable ->
- dismissLoading()
- throwable.printStackTrace()
- showNetError(throwable)
- })
- addDisposable(disposable)
- }
- private fun startHomeActivity(openEBoard: Boolean) {
- val clazz = if (openEBoard) HomeActivity::class.java else LabMainActivity::class.java
- startActivity(Intent(this, clazz))
- finish()
- }
- override fun onDestroy() {
- super.onDestroy()
- }
- }
|