唐浩
昨天 3d631dbadf98f3f77c6e955cb36219217ef73ab5
app/src/main/java/com/ziang/driver/ui/main/MainActivity.kt
@@ -8,10 +8,12 @@
import android.net.Uri
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.provider.Settings
import android.view.Gravity
import android.widget.Toast
import androidx.core.app.ActivityCompat
import androidx.recyclerview.widget.LinearLayoutManager
import cn.sinata.rxnetty.NettyClient
import cn.sinata.xldutils.utils.*
import com.amap.api.location.AMapLocation
@@ -44,7 +46,9 @@
import com.umeng.socialize.PlatformConfig
import com.ziang.driver.bean.*
import com.ziang.driver.netUtls.*
import com.ziang.driver.ui.adapter.OrderHallAdapter
import com.ziang.driver.ui.mine.RechargeActivity
import com.ziang.driver.utils.DES
import kotlinx.android.synthetic.main.activity_main.*
import kotlinx.android.synthetic.main.app_title.*
import kotlinx.android.synthetic.main.dialog_sure_and_del.view.*
@@ -59,51 +63,70 @@
    val mainFragment by lazy {
        MainFragment()
    }
    val smallFragment by lazy {
        MainSmallFragment()
    }
    val hallAdapter by lazy {
        OrderHallAdapter()
    }
    var queryNum = 0
//    val evalFrag = OrderHallFragment()
    var homeDataBean: HomeDataBean? = null
    override fun setContentView() {
        setContentView(R.layout.activity_main)
    }
    private val EasyFloatTag = "BACKGROUND"
    private var floater: EasyFloat.Builder? = null //浮窗
    private var paused:Boolean = false
    private var paused: Boolean = false
    private var timeHandler = Handler(Looper.getMainLooper()) //用于检测小程序订单时间
    override fun initView() {
        MapsInitializer.updatePrivacyShow(this,true,true)
        MapsInitializer.updatePrivacyAgree(this,true)
        MapsInitializer.updatePrivacyShow(this, true, true)
        MapsInitializer.updatePrivacyAgree(this, true)
//        var packageName = "com.android.providers.downloads";
//        var intent =  Intent(android.provider.Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
//    intent.setData(Uri.parse("package:" + packageName));
//    startActivity(intent);
//        addFragment(evalFrag, R.id.fl_container_t)
        recycler_view_hall.layoutManager = LinearLayoutManager(this)
        recycler_view_hall.adapter = hallAdapter
        upDateSmall()
        MyApplication.getInstance()?.initPersionDate()
        setTitleText("子昂出行司机")
        if (CacheKey.getKeyStr(Const.REFUSE_LOCATION).isNotEmpty()&&!RxPermissions(this).isGranted(
        if (CacheKey.getKeyStr(Const.REFUSE_LOCATION)
                .isNotEmpty() && !RxPermissions(this).isGranted(
                Manifest.permission.ACCESS_FINE_LOCATION
            )){
            )
        ) {
            toast("没有定位权限,您将无法收到新订单推送")
        }else{
            if (!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
        } else {
            if (!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) {
                DialogUtil.getDelAndSureDialog(
                    this,
                    "去授权",
                    "否",
                    "《子昂出行司机》需要获取您的当前位置信息,用于查询当前城市是否开通服务,我们会将您的位置实时上传至后端为您匹配和推送附近订单。如果拒绝定位权限,您将无法正常接单。",
                    {
                    }){
                    }) {
                    val subscribe =
                        RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe {
                            if (!it){
                                toast("没有定位权限,您将无法收到新订单推送")
                                CacheKey.putKeyStr(Const.REFUSE_LOCATION, "1")
                        RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION)
                            .subscribe {
                                if (!it) {
                                    toast("没有定位权限,您将无法收到新订单推送")
                                    CacheKey.putKeyStr(Const.REFUSE_LOCATION, "1")
                                }
                            }
                        }
                }
            }
        }
        tv_Left.setDrawableLeft(R.mipmap.icon_nav_user)
        iv_right_title.setImageResource(R.mipmap.icon_nav_news)
        addFragment(mainFragment, R.id.rl_container)
        addFragment(smallFragment, R.id.rl_container)
//        addFragment(mainFragment, R.id.rl_container)
        AMapKit.initLocation(this, this)
        MyApplication.isLogin = true
        beOnDuty(false)
@@ -112,18 +135,53 @@
        callVersion()
        checkGps()
        MyApplication.addOrderView(qeeOrderView)
    }
    private fun callHall() {
        var map = getMapByAny()
        map.set("size",100)
        map.set("pageNum",1)
        callNetAndError(false,Api.queryHallOrderList,map,{
            var data = gson.fromJson<OrderHallBean>(it,OrderHallBean::class.java)
            hallAdapter.data.clear()
            hallAdapter.data.addAll(data.data.list)
            hallAdapter.notifyDataSetChanged()
            tv_order_big_all.text = "接单大厅("+hallAdapter.data.size+")"
        }){
        }
    }
    /***
     * 一秒检测一次小程序订单时间
     */
    private fun upDateSmall() {
        timeHandler.postDelayed({
            queryNum++
            var size = smallFragment.mainSmallAdapter.data.size
            tv_order_small.text = "小程序订单($size)"
            upDateSmall()
            if (queryNum%10 == 0){
                callHall()
            }
        }, 1000)
    }
    var qeeOrderView = object : MyApplication.OrderStatueView {
        override fun orderInfo(data: OrderSimpleData?) {
            data?.let {
                when(it.orderType){
                    1,2,3 -> {
                when (it.orderType) {
                    1, 2, 3 -> {
                        if (it.status == 10 || it.status == 12) {
                            Handler(Looper.getMainLooper()).post {
                                mainFragment?.refresh()
                                MyApplication.getTTsManager().setVideoText("有用户订单被取消或改派")
                                if (mainFragment?.isAdded && mainFragment?.isVisible){
                                    mainFragment?.refresh()
                                    MyApplication.getTTsManager().setVideoText("有用户订单被取消或改派")
                                }
                            }
                        }
                    }
@@ -134,10 +192,15 @@
    }
    private fun checkGps() {
        if (!AMapKit.isLocServiceEnable(this)){
            DialogUtil.getDelAndSureDialog(this,"查看定位","退出","您暂未开启手机定位GPS,是否前往开启?",{
                onBackPressed()
            }){
        if (!AMapKit.isLocServiceEnable(this)) {
            DialogUtil.getDelAndSureDialog(
                this,
                "查看定位",
                "退出",
                "您暂未开启手机定位GPS,是否前往开启?",
                {
                    onBackPressed()
                }) {
                val intent = Intent()
                intent.action = Settings.ACTION_LOCATION_SOURCE_SETTINGS;
                intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK;
@@ -156,7 +219,7 @@
    }
    private fun showFloater() {
        if (floater == null){
        if (floater == null) {
            floater = EasyFloat.with(applicationContext)
                .setLayout(R.layout.layout_floter, OnInvokeView {
                    it.setOnClickListener {
@@ -195,7 +258,7 @@
                        download(data.data.url)
                        ToastUtils.showShortToast(this, "后台开始下载,请等待")
                    })
                }else{
                } else {
//                    toast("已经是最新版本")
                }
            } else {
@@ -208,17 +271,17 @@
        var map = getMapByAny()
        map["pageNum"] = 1
        map["size"] = 1
        callNet(false,Api.queryHallOrderList, map) {
        callNet(false, Api.queryHallOrderList, map) {
            val fromJson = gson.fromJson(it, OrderHallBean::class.java)
            tv_count.text = (fromJson?.data?.orderCount?:0).toString()
            tv_count.text = (fromJson?.data?.orderCount ?: 0).toString()
            if (!paused)
                tv_count.postDelayed({
                    callOrderCount()
                },2000)
                }, 2000)
        }
    }
    private fun download(url:String){
    private fun download(url: String) {
        val p = RxPermissions(this).request(Manifest.permission.WRITE_EXTERNAL_STORAGE).subscribe {
            if (it)
                DownloadUtil(this).downloadAPK(url, "子昂出行司机")
@@ -230,8 +293,11 @@
    override fun onResume() {
        super.onResume()
        paused = false
        callOrderCount()
        mainFragment?.refresh()
//        callOrderCount()
//        mainFragment.showQuan = false
        if (mainFragment != null && mainFragment.isAdded && mainFragment.isVisible){
            mainFragment?.refresh()
        }
    }
    override fun onPause() {
@@ -239,13 +305,20 @@
        paused = true
    }
    fun beOnDuty(b:Boolean){
        if (b){
    fun beOnDuty(b: Boolean) {
        if (b) {
            avv_anim.visible()
            tv_up_avv.visible()
        }else{
        } else {
            avv_anim.gone()
            tv_up_avv.gone()
        }
    }
    override fun onDestroy() {
        super.onDestroy()
        if (timeHandler != null) {
            timeHandler.removeCallbacksAndMessages(0)
        }
    }
@@ -262,15 +335,20 @@
            tv_car_num.text = data.data.licensePlate
            tv_lien_name.text = data.data.brand.toString()
            tv_car.text = if (data.data.work == 1) "下班" else "出车"
            if (data.data.work == 1){
            if (data.data.work == 1) {
                MyApplication.getTTsManager().setVideoText("您正在上班中")
                beOnDuty(true)
                if (!Settings.canDrawOverlays(this) && CacheKey.getKeyStr("isRefusedFloat")
                        .isNullOrEmpty()
                ) { //没有浮窗权限并且没有拒绝过
                    DialogUtil.getDelAndSureDialog(this, "去开启", "取消", "为了增加后台推单的稳定性,我们需要开启悬浮窗口权限", {
                        CacheKey.putKeyStr("isRefusedFloat", "1")
                    }) {
                    DialogUtil.getDelAndSureDialog(
                        this,
                        "去开启",
                        "取消",
                        "为了增加后台推单的稳定性,我们需要开启悬浮窗口权限",
                        {
                            CacheKey.putKeyStr("isRefusedFloat", "1")
                        }) {
                        var intent = Intent(
                            Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
                            Uri.parse("package:" + packageName)
@@ -278,7 +356,7 @@
                        startActivityForResult(intent, 1234)
                    }
                }
            }else{
            } else {
                MyApplication.getTTsManager().setVideoText("您已下班")
                beOnDuty(false)
            }
@@ -289,7 +367,7 @@
        }
    }
    fun callNum(){
    fun callNum() {
        var map = getMapByAny()
        callNet(Api.queryHomeData, map) {
            var data = gson.fromJson<HomeDataBean>(it, HomeDataBean::class.java)
@@ -312,6 +390,8 @@
        tv_server_ing.setOnClickListener {
            tv_server_ing.textColor(this, R.color.main_yellow)
            tv_wait_server.textColor(this, R.color.main_gray)
            tv_order_small.textColor(this, R.color.main_gray)
            addFragment(mainFragment, R.id.rl_container)
            mainFragment.state = 1
            mainFragment.autoRefresh()
        }
@@ -319,8 +399,19 @@
        tv_wait_server.setOnClickListener {
            tv_server_ing.textColor(this, R.color.main_gray)
            tv_wait_server.textColor(this, R.color.main_yellow)
            tv_order_small.textColor(this, R.color.main_gray)
            addFragment(mainFragment, R.id.rl_container)
            mainFragment.state = 2
            mainFragment.autoRefresh()
        }
        tv_order_small.clickDelay {
            tv_server_ing.textColor(this, R.color.main_gray)
            tv_wait_server.textColor(this, R.color.main_gray)
            tv_order_small.textColor(this, R.color.main_yellow)
            addFragment(smallFragment, R.id.rl_container)
            smallFragment.mainSmallAdapter.notifyDataSetChanged()
        }
        tv_Left.clickDelay {
@@ -349,29 +440,29 @@
                    MyApplication.getTTsManager().setVideoText("您已下班")
                }
            } else {
                callNet(Api.queryMyBusiness, getMapByAny()){
                callNet(Api.queryMyBusiness, getMapByAny()) {
                    var bean = gson.fromJson(it, SelectServerModeBean::class.java).data
                    if (bean.isEmpty()){
                    if (bean.isEmpty()) {
                        toast("请选择接单业务")
                        return@callNet
                    }
                    if (bean.size > 1){
                    if (bean.size > 1) {
                        startActivity<SelectServerModeActivity>()
                    }else{
                        var map= getMapByAny()
                    } else {
                        var map = getMapByAny()
                        map["type"] = bean[0].id
                        callNetNoToast(Api.work,map,{
                        callNetNoToast(Api.work, map, {
                            toast("上班成功")
                            beOnDuty(true)
                            EventBus.getDefault().post(BaseEvent(BaseEvent.START_CAR))
                        }){
                            if (it?.contains("余额") == true){
                                val dialog = DialogUtil.getOnlySureDialog(this,it){
                        }) {
                            if (it?.contains("余额") == true) {
                                val dialog = DialogUtil.getOnlySureDialog(this, it) {
                                    startActivity<RechargeActivity>()
                                }
                                val view = DialogUtil.getView(dialog)
                                view.tv_sure_base.text = "去充值"
                            }else{
                            } else {
                                showToast(it)
                            }
                        }
@@ -405,7 +496,6 @@
    }
    private
    var mBackAppTime: Long = 0
@@ -425,26 +515,47 @@
                beOnDuty(true)
                initCall()
            }
            BaseEvent.CHANGE_CAR_SUCCESS -> {
                initCall()
            }
            BaseEvent.CALL_NUM_MAIN -> {
                callNum()
            }
            BaseEvent.REFREASH_MAIN -> {
                mainFragment?.refresh()
            }
            BaseEvent.APP_BACKGROUND -> {
                if (getUserId() != -1 &&homeDataBean?.data?.work == 1 && Settings.canDrawOverlays(this) ) {
                if (getUserId() != -1 && homeDataBean?.data?.work == 1 && Settings.canDrawOverlays(
                        this
                    )
                ) {
                    showFloater()
                    EasyFloat.show(EasyFloatTag)
                }
            }
            BaseEvent.APP_FOREGROUND -> {
                EasyFloat.hide(EasyFloatTag)
            }
            BaseEvent.APP_LOG -> {
//                tv_log.text = "${TimeUtils.getCurrentTimeMillisecond(System.currentTimeMillis())} ${event.msg}\n"+tv_log.text
            }
            BaseEvent.GET_SMALL_ORDER -> {
                //小程序订单来了
                var dataStr = event.msg
                val data = Gson().fromJson<OrderBean>(dataStr, OrderBean::class.java)
                data.time = System.currentTimeMillis()
                data.overTime =  event.typeTwo.toLong()
                smallFragment.setOrdertypeA(event.type)
                smallFragment.setDate(data)
                var size = smallFragment.mainSmallAdapter.data.size
                tv_order_small.text = "小程序订单($size)"
            }
        }
    }
@@ -452,7 +563,7 @@
    override fun onLocationChanged(p0: AMapLocation?) {
        if (p0?.errorCode == 0) {
            MyApplication.aMapLocation = p0
            CacheKey.putKeyStr("location",Gson().toJson(p0))
            CacheKey.putKeyStr("location", Gson().toJson(p0))
        }
    }
}