| | |
| | | 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 |
| | |
| | | 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.* |
| | |
| | | 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) |
| | |
| | | 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("有用户订单被取消或改派") |
| | | } |
| | | } |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | 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; |
| | |
| | | } |
| | | |
| | | private fun showFloater() { |
| | | if (floater == null){ |
| | | if (floater == null) { |
| | | floater = EasyFloat.with(applicationContext) |
| | | .setLayout(R.layout.layout_floter, OnInvokeView { |
| | | it.setOnClickListener { |
| | |
| | | download(data.data.url) |
| | | ToastUtils.showShortToast(this, "后台开始下载,请等待") |
| | | }) |
| | | }else{ |
| | | } else { |
| | | // toast("已经是最新版本") |
| | | } |
| | | } else { |
| | |
| | | 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, "子昂出行司机") |
| | |
| | | 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() { |
| | |
| | | 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) |
| | | } |
| | | } |
| | | |
| | |
| | | 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) |
| | |
| | | startActivityForResult(intent, 1234) |
| | | } |
| | | } |
| | | }else{ |
| | | } else { |
| | | MyApplication.getTTsManager().setVideoText("您已下班") |
| | | beOnDuty(false) |
| | | } |
| | |
| | | } |
| | | } |
| | | |
| | | fun callNum(){ |
| | | fun callNum() { |
| | | var map = getMapByAny() |
| | | callNet(Api.queryHomeData, map) { |
| | | var data = gson.fromJson<HomeDataBean>(it, HomeDataBean::class.java) |
| | |
| | | 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() |
| | | } |
| | |
| | | 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 { |
| | |
| | | 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) |
| | | } |
| | | } |
| | |
| | | } |
| | | |
| | | |
| | | |
| | | private |
| | | var mBackAppTime: Long = 0 |
| | | |
| | |
| | | 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)" |
| | | } |
| | | } |
| | | } |
| | |
| | | override fun onLocationChanged(p0: AMapLocation?) { |
| | | if (p0?.errorCode == 0) { |
| | | MyApplication.aMapLocation = p0 |
| | | CacheKey.putKeyStr("location",Gson().toJson(p0)) |
| | | CacheKey.putKeyStr("location", Gson().toJson(p0)) |
| | | } |
| | | } |
| | | } |