From 3d631dbadf98f3f77c6e955cb36219217ef73ab5 Mon Sep 17 00:00:00 2001 From: 唐浩 <15928265276@163.com> Date: 星期二, 09 九月 2025 12:56:48 +0800 Subject: [PATCH] change by tanghao --- app/src/main/java/com/ziang/driver/ui/main/MainActivity.kt | 217 +++++++++++++++++++++++++++++++++++++++++------------- 1 files changed, 164 insertions(+), 53 deletions(-) diff --git a/app/src/main/java/com/ziang/driver/ui/main/MainActivity.kt b/app/src/main/java/com/ziang/driver/ui/main/MainActivity.kt index 61bda89..2681803 100644 --- a/app/src/main/java/com/ziang/driver/ui/main/MainActivity.kt +++ b/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)) } } } \ No newline at end of file -- Gitblit v1.7.1