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<Function>()//开通业务模块,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<HomeActivity>("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()
|
}
|
}
|