package com.igo.user.ui import android.Manifest import android.os.Bundle import android.os.CountDownTimer import android.util.Log import android.view.Window import android.view.WindowManager import androidx.core.os.bundleOf import cn.sinata.rxnetty.LogHelper import cn.sinata.xldutils.activity.BaseActivity import cn.sinata.xldutils.utils.SPUtils import cn.sinata.xldutils.utils.myToast import cn.sinata.xldutils.utils.optString import com.igo.user.IGoApplication import com.igo.user.R import com.igo.user.dialog.UserRuleDialog import com.igo.user.network.HttpManager import com.igo.user.network.entity.Function import com.igo.user.network.request import com.igo.user.ui.HomeActivity.Companion.latHome import com.igo.user.ui.HomeActivity.Companion.lonHome import com.igo.user.utils.Const import com.igo.user.utils.google.AMapKit import com.tbruyelle.rxpermissions2.RxPermissions import com.twitter.sdk.android.core.DefaultLogger import com.twitter.sdk.android.core.Twitter import com.twitter.sdk.android.core.TwitterAuthConfig import com.twitter.sdk.android.core.TwitterConfig import org.jetbrains.anko.startActivity import java.util.concurrent.atomic.AtomicInteger class SplashActivity : BaseActivity() { private val func = arrayListOf()//开通业务模块,MainActivity必须参数 private var timer: CountDownTimer? = null private var startedMain = false //控制只进入一次首页 private var privacy: String? = null //隐私协议 private var user: String? = null //用户协议 override fun onCreate(savedInstanceState: Bundle?) { window.requestFeature(Window.FEATURE_NO_TITLE) window.setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN ) super.onCreate(savedInstanceState) setContentView(R.layout.activity_splash) val build = TwitterConfig.Builder(this) .logger(DefaultLogger(Log.DEBUG)) .twitterAuthConfig( TwitterAuthConfig( "FBddBQ492ZHOkaDslZ075mhMr", "U5d2i6WHH5FVH5yvHK7gtrPanVwnqytGOoLiZx0ZpKYkl88G2H" ) ) .debug(true).build() Twitter.initialize(build) getAgreement() } private fun getAgreement() { if (!SPUtils.instance().getBoolean(Const.User.IS_AGREE, false)) { val count = AtomicInteger(0) HttpManager.getH5(1).request(this) { _, data -> privacy = data?.optString("content") ?: "" if (count.addAndGet(1) == 2) { showPrivacyAgreement() } } HttpManager.getH5(2).request(this) { _, data -> user = data?.optString("content") ?: "" if (count.addAndGet(1) == 2) { showPrivacyAgreement() } } } else { requestLocation() } } private fun showPrivacyAgreement() { if (privacy != null && user != null) { val userRuleDialog = UserRuleDialog() userRuleDialog.arguments = bundleOf("privacy" to privacy, "user" to user) userRuleDialog.setDismissCallback(object : UserRuleDialog.OnDismiss { override fun onDismiss() { if (!SPUtils.instance().getBoolean(Const.User.IS_AGREE, false)) finish() else { requestLocation() } } }) userRuleDialog.show(supportFragmentManager, "rule") } else { requestLocation() } } private fun requestLocation() { val subscribe = RxPermissions(this).request( Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION ).subscribe { if (it) { initLocationOption() } else { startMain(false) } } } /** * 高德定位设置 */ private fun initLocationOption() { AMapKit.initLocation(this, success = { val latLng = it.latLng if (latLng == null) { myToast(getString(R.string.定位失败)) LogHelper.logRecord("定位失败") startMain(false) return@initLocation } LogHelper.logRecord("定位成功:latitude=${latLng.latitude} longitude=${latLng.longitude}") IGoApplication.setLocation(latLng) latHome = latLng.latitude lonHome = latLng.longitude HttpManager.isOpenCity(latLng.latitude.toString(), latLng.longitude.toString()) .request(this, success = { _, data -> data?.run { LogHelper.logRecord("城市信息: $it") if (optString("name").isNotEmpty()) {//当前城市属于已开通城市 IGoApplication.chooseCityName = optString("name") Log.e("城市", ("城市" + optString("name"))) val optString = optString("content") IGoApplication.chooseCountry = if (optString == "China" || optString == "中国") "CN" else "GH" func.clear() func.add(Function(1, getString(R.string.专车))) func.add(Function(4, getString(R.string.快件))) startMain(true) } else {//未开通 LogHelper.logRecord("当前城市未开通") myToast(getString(R.string.当前城市未开通)) startMain(false) } } }, error = { code, msg -> LogHelper.logRecord("查询开通城市: code = $code , msg = $msg") startMain(false) }) }) { myToast(getString(R.string.定位失败)) LogHelper.logRecord("定位失败") startMain(false) } startTimer() //开启时间检查,5秒没走完就直接进首页选择城市 } private fun startTimer() { timer = object : CountDownTimer(5000, 1000) { override fun onTick(millisUntilFinished: Long) { } override fun onFinish() { // ToastUtils.showLong("定位超时 直接进入首页") startMain(false) } }.start() } /*** * 跳转主页 * @param isOpen{ * true: 定位成功且为开通城市,携带业务类型列表进入主页 * false:定位失败/无定位权限/城市未开通,不携带业务类型列表进入主页} */ private fun startMain(isOpen: Boolean) { if (!startedMain) { startedMain = true startActivity("isOpen" to isOpen, "func" to func) } finish() } /** * @param isLogin 是否需要跳转登录 */ fun checkLogin(isLogin: Boolean = true): Boolean { return if (SPUtils.instance().getInt(Const.User.USER_ID) == -1) { if (isLogin) gotoLogin() false } else true } override fun onDestroy() { super.onDestroy() timer?.cancel() } }