package com.fuban.driver.ui.main import android.Manifest import android.content.ActivityNotFoundException import android.content.Intent import android.os.Handler import android.os.Looper import android.provider.Settings import android.widget.Toast import androidx.core.app.ActivityCompat import cn.sinata.rxnetty.NettyClient import cn.sinata.xldutils.utils.* import com.amap.api.location.AMapLocation import com.amap.api.location.AMapLocationListener import com.fuban.driver.R import com.fuban.driver.base.BaseEvent import com.fuban.driver.base.Const import com.fuban.driver.base.MyApplication import com.fuban.driver.base.MyBaseActivity import com.fuban.driver.base.gaode.AMapKit import com.fuban.driver.bean.HomeDataBean import com.fuban.driver.bean.OrderSimpleData import com.fuban.driver.bean.SelectServerModeBean import com.fuban.driver.bean.VersionBean import com.fuban.driver.netUtls.Api import com.fuban.driver.netUtls.callNet import com.fuban.driver.netUtls.getMapByAny import com.fuban.driver.ui.DialogUtil import com.fuban.driver.ui.main.add_order.AddCityOrderActivity import com.fuban.driver.ui.main.event.MineEventActivity import com.fuban.driver.ui.mine.MineActivity import com.fuban.driver.ui.mine.MsgActivity import com.fuban.driver.utils.Cache.CacheKey import com.fuban.driver.utils.DateUtil import com.fuban.driver.utils.download.DownloadUtil import com.google.gson.Gson import com.lljjcoder.style.citylist.Toast.ToastUtils import com.tbruyelle.rxpermissions2.RxPermissions import kotlinx.android.synthetic.main.activity_main.* import kotlinx.android.synthetic.main.app_title.* import org.greenrobot.eventbus.EventBus import org.jetbrains.anko.startActivity import org.jetbrains.anko.toast class MainActivity : MyBaseActivity(), AMapLocationListener { val mainFragment by lazy { MainFragment() } var homeDataBean: HomeDataBean? = null override fun setContentView() { setContentView(R.layout.activity_main) } override fun initView() { MyApplication.canPlayVoice = 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); 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)){ DialogUtil.getDelAndSureDialog(this,"去授权","否","《福伴司机》需要获取您的当前位置信息,用于查询当前城市是否开通服务,我们会将您的位置实时上传至后端为您匹配和推送附近订单。如果拒绝定位权限,您将无法正常接单。",{ }){ val subscribe = RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION).subscribe { if (!it){ toast("没有定位权限,您将无法收到新订单推送") CacheKey.putKeyStr(Const.REFUSE_LOCATION,"1") } } } } } setTitleText("福伴司机") tv_Left.setDrawableLeft(R.mipmap.icon_nav_user) iv_right_title.setImageResource(R.mipmap.icon_nav_news) addFragment(mainFragment, R.id.rl_container) AMapKit.initLocation(this, this) MyApplication.isLogin = true beOnDuty(false) initCall() NettyClient.getInstance().startService() callVersion() checkGps() MyApplication.addOrderView(qeeOrderView) } var qeeOrderView = object : MyApplication.OrderStatueView { override fun orderInfo(data: OrderSimpleData?) { data?.let { when(it.orderType){ 1,2,3 -> { if (it.status == 10 || it.status == 12) { Handler(Looper.getMainLooper()).post { mainFragment?.refresh() MyApplication.getTTsManager().setVideoText("有用户订单被取消或改派") } } } } } } } private fun checkGps() { 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; try { startActivity(intent) } catch (ex: ActivityNotFoundException) { //如果页面无法打开,进入设置页面 intent.action = Settings.ACTION_SETTINGS try { startActivity(intent) } catch (e: Exception) { e.printStackTrace() } } } } } private fun callVersion() { var map = getMapByAny() // map["id"] = CacheKey.getUserId() callNet(Api.queryNewData, map) { var data = gson.fromJson(it, VersionBean::class.java) if (data.data.version != "" && data.data.version != Utils.getAppVersion(this)) { if (data.data.mandatory == 2) { DialogUtil.getDelAndSureDialog(this, "有新版本是否更新?", {}, { DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") }) } else if (data.data.mandatory == 1) { DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", { EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP)) }, { DownloadUtil(this).downloadAPK(data.data.url, "福伴司机端") ToastUtils.showShortToast(this, "后台开始下载,请等待") }) }else{ // toast("已经是最新版本") } } else { // toast("已经是最新版本") } } } override fun onResume() { super.onResume() mainFragment?.refresh() } fun beOnDuty(b:Boolean){ if (b){ avv_anim.visible() tv_up_avv.visible() }else{ avv_anim.gone() tv_up_avv.gone() } } private fun initCall() { var map = getMapByAny() callNet(Api.queryHomeData, map) { var data = gson.fromJson(it, HomeDataBean::class.java) homeDataBean = data tv_order_num.text = data.data.dayNum.toString() tv_month_order.text = data.data.mouthNum.toString() tv_grade.text = getFormatOne(data.data.score) tv_task.text = data.data.activity.toString() 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){ MyApplication.getTTsManager().setVideoText("您正在上班中") beOnDuty(true) }else{ MyApplication.getTTsManager().setVideoText("您已收车") beOnDuty(false) } tv_time.text = DateUtil.getTime( DateUtil.TYPE7, System.currentTimeMillis() ) + " " + DateUtil.getWeek(System.currentTimeMillis()) } } fun callNum(){ var map = getMapByAny() callNet(Api.queryHomeData, map) { var data = gson.fromJson(it, HomeDataBean::class.java) homeDataBean = data tv_order_num.text = data.data.dayNum.toString() tv_month_order.text = data.data.mouthNum.toString() tv_grade.text = getFormatOne(data.data.score) tv_task.text = data.data.activity.toString() tv_car_num.text = data.data.licensePlate tv_lien_name.text = data.data.brand.toString() tv_time.text = DateUtil.getTime( DateUtil.TYPE7, System.currentTimeMillis() ) + " " + DateUtil.getWeek(System.currentTimeMillis()) } } override fun setOnclick() { tv_server_ing.setOnClickListener { tv_server_ing.textColor(this, R.color.color_f07207) tv_wait_server.textColor(this, R.color.main_gray) 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.color_f07207) mainFragment.state = 2 mainFragment.autoRefresh() } tv_Left.clickDelay { startActivity() } iv_right_title.clickDelay { startActivity() } tv_history_order.clickDelay { startActivity() } ll_task.clickDelay { startActivity() } tv_help_order.clickDelay { startActivity() } tv_car.clickDelay { if (homeDataBean?.data?.work == 1) { callNet(Api.work, getMapByAny()) { homeDataBean?.data?.work = 2 tv_car.text = "出车" beOnDuty(false) MyApplication.getTTsManager().setVideoText("您已收车") } } else { callNet(Api.queryMyBusiness, getMapByAny()){ var bean = gson.fromJson(it, SelectServerModeBean::class.java).data if (bean.isEmpty()){ toast("请选择接单业务") return@callNet } if (bean.size > 1){ startActivity() }else{ var map= getMapByAny() map["type"] = bean[0].id callNet(Api.work,map) { toast("上班成功") beOnDuty(true) EventBus.getDefault().post(BaseEvent(BaseEvent.START_CAR)) } } } } } ll_tests.clickDelay { // :{"orderType":4,"orderId":8,"state":7,"time":10}} // showOrder("3170","2",100,1) showOrder( "102", "1", 30, 1 ) } } private var mBackAppTime: Long = 0 override fun onBackPressed() { if (System.currentTimeMillis() - mBackAppTime > 2000) { Toast.makeText(this, "再按一次退出程序", Toast.LENGTH_SHORT).show() mBackAppTime = System.currentTimeMillis() } else { closeAll() } } override fun onEventMainThread(event: BaseEvent?) { super.onEventMainThread(event) when (event!!.code) { BaseEvent.START_CAR -> { beOnDuty(true) initCall() } BaseEvent.CHANGE_CAR_SUCCESS -> { initCall() } BaseEvent.CALL_NUM_MAIN -> { callNum() } BaseEvent.REFREASH_MAIN -> { mainFragment?.refresh() } } } override fun onLocationChanged(p0: AMapLocation?) { if (p0?.errorCode == 0) { MyApplication.aMapLocation = p0 CacheKey.putKeyStr("location",Gson().toJson(p0)) } } override fun onDestroy() { super.onDestroy() MyApplication.canPlayVoice = false MyApplication.removeOrderView(qeeOrderView) } }