package com.xianning.driver.ui.main
|
|
import android.Manifest
|
import android.content.ActivityNotFoundException
|
import android.content.Intent
|
import android.net.Uri
|
import android.os.Handler
|
import android.os.Looper
|
import android.provider.Settings
|
import android.view.Gravity
|
import android.widget.Toast
|
import cn.sinata.rxnetty.NettyClient
|
import cn.sinata.xldutils.utils.*
|
import com.baidu.location.BDAbstractLocationListener
|
import com.baidu.location.BDLocation
|
import com.baidu.location.LocationClient
|
import com.xianning.driver.R
|
import com.xianning.driver.base.BaseEvent
|
import com.xianning.driver.base.Const
|
import com.xianning.driver.base.MyApplication
|
import com.xianning.driver.base.MyBaseActivity
|
import com.xianning.driver.base.gaode.AMapKit
|
import com.xianning.driver.bean.HomeDataBean
|
import com.xianning.driver.bean.OrderSimpleData
|
import com.xianning.driver.bean.SelectServerModeBean
|
import com.xianning.driver.bean.VersionBean
|
import com.xianning.driver.ui.DialogUtil
|
import com.xianning.driver.ui.main.event.MineEventActivity
|
import com.xianning.driver.ui.mine.MineActivity
|
import com.xianning.driver.ui.mine.MsgActivity
|
import com.xianning.driver.utils.Cache.CacheKey
|
import com.xianning.driver.utils.DateUtil
|
import com.xianning.driver.utils.LogUtils
|
import com.xianning.driver.utils.download.DownloadUtil
|
import com.google.gson.Gson
|
import com.lljjcoder.style.citylist.Toast.ToastUtils
|
import com.lzf.easyfloat.EasyFloat
|
import com.lzf.easyfloat.enums.ShowPattern
|
import com.lzf.easyfloat.enums.SidePattern
|
import com.lzf.easyfloat.interfaces.OnInvokeView
|
import com.tbruyelle.rxpermissions2.RxPermissions
|
//import com.tencent.bugly.crashreport.CrashReport
|
import com.umeng.commonsdk.UMConfigure
|
import com.umeng.socialize.PlatformConfig
|
import com.xianning.driver.netUtls.*
|
import com.xianning.driver.ui.mine.RechargeActivity
|
import kotlinx.android.synthetic.main.activity_main.*
|
import kotlinx.android.synthetic.main.app_title.*
|
import kotlinx.android.synthetic.main.dialog_sure_and_del.view.*
|
import org.greenrobot.eventbus.EventBus
|
import org.jetbrains.anko.dip
|
import org.jetbrains.anko.startActivity
|
import org.jetbrains.anko.toast
|
|
|
class MainActivity : MyBaseActivity(){
|
|
val mainFragment by lazy {
|
MainFragment()
|
}
|
|
var homeDataBean: HomeDataBean? = null
|
|
override fun setContentView() {
|
setContentView(R.layout.activity_main)
|
}
|
private val EasyFloatTag = "BACKGROUND"
|
private var floater: EasyFloat.Builder? = null //浮窗
|
|
|
private var listener:BDAbstractLocationListener? = null
|
private var locationClient:LocationClient? = null
|
|
override fun initView() {
|
LocationClient.setAgreePrivacy(true)
|
MyApplication.getInstance()?.initPersionDate()
|
|
// 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")
|
}else
|
initLocation()
|
}
|
}
|
}else
|
initLocation()
|
}
|
setTitleText("咸宁95128约车司机")
|
tv_Left.setDrawableLeft(R.mipmap.icon_nav_user)
|
iv_right_title.setImageResource(R.mipmap.icon_nav_news)
|
addFragment(mainFragment, R.id.rl_container)
|
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 initLocation(){
|
if (RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)){
|
listener = object :BDAbstractLocationListener(){
|
override fun onReceiveLocation(p0: BDLocation?) {
|
MyApplication.aMapLocation = p0
|
CacheKey.putKeyStr("location",Gson().toJson(p0))
|
}
|
}
|
locationClient = AMapKit.initLocation(this, listener!!)
|
}
|
}
|
|
private fun showFloater() {
|
if (floater == null){
|
floater = EasyFloat.with(applicationContext)
|
.setLayout(R.layout.layout_floter, OnInvokeView {
|
it.setOnClickListener {
|
startActivity<MainActivity>()
|
}
|
})
|
.setShowPattern(ShowPattern.ALL_TIME)
|
.setSidePattern(SidePattern.RESULT_LEFT)
|
.setGravity(Gravity.START or Gravity.BOTTOM, 0, dip(-180))
|
.setDragEnable(true)
|
.setTag(EasyFloatTag)
|
.setMatchParent(widthMatch = false, heightMatch = false)
|
.registerCallback {
|
touchEvent { view, motionEvent ->
|
motionEvent.action
|
}
|
}
|
floater?.show()
|
}
|
}
|
|
private fun callVersion() {
|
var map = getMapByAny()
|
// map["id"] = CacheKey.getUserId()
|
callNet(Api.queryNewData, map) {
|
var data = gson.fromJson<VersionBean>(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, "咸宁95128约车司机")
|
})
|
} else if (data.data.mandatory == 1) {
|
DialogUtil.getDelAndSureDialog(this, "版本已过时,是否强制升级?", {
|
EventBus.getDefault().post(BaseEvent(BaseEvent.OUT_APP))
|
}, {
|
DownloadUtil(this).downloadAPK(data.data.url, "咸宁95128约车司机")
|
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<HomeDataBean>(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)
|
if (!Settings.canDrawOverlays(this) && CacheKey.getKeyStr("isRefusedFloat")
|
.isNullOrEmpty()
|
) { //没有浮窗权限并且没有拒绝过
|
DialogUtil.getDelAndSureDialog(this, "去开启", "取消", "为了增加后台推单的稳定性,我们需要开启悬浮窗口权限", {
|
CacheKey.putKeyStr("isRefusedFloat", "1")
|
}) {
|
var intent = Intent(
|
Settings.ACTION_MANAGE_OVERLAY_PERMISSION,
|
Uri.parse("package:" + packageName)
|
)
|
startActivityForResult(intent, 1234)
|
}
|
}
|
}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<HomeDataBean>(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.main_yellow)
|
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.main_yellow)
|
mainFragment.state = 2
|
mainFragment.autoRefresh()
|
}
|
|
tv_Left.clickDelay {
|
startActivity<MineActivity>()
|
}
|
|
iv_right_title.clickDelay {
|
startActivity<MsgActivity>()
|
}
|
|
tv_history_order.clickDelay {
|
startActivity<HistoryOrderActivity>()
|
}
|
|
ll_task.clickDelay {
|
startActivity<MineEventActivity>()
|
}
|
|
|
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<SelectServerModeActivity>()
|
}else{
|
var map= getMapByAny()
|
map["type"] = bean[0].id
|
callNetNoToast(Api.work,map,{
|
toast("上班成功")
|
beOnDuty(true)
|
EventBus.getDefault().post(BaseEvent(BaseEvent.START_CAR))
|
}){
|
if (it?.contains("余额") == true){
|
val dialog = DialogUtil.getOnlySureDialog(this,it){
|
startActivity<RechargeActivity>()
|
}
|
val view = DialogUtil.getView(dialog)
|
view.tv_sure_base.text = "去充值"
|
}else{
|
showToast(it)
|
}
|
}
|
}
|
}
|
}
|
}
|
|
ll_tests.clickDelay {
|
// :{"orderType":4,"orderId":8,"state":7,"time":10}}
|
// showOrder("3170","2",100,1)
|
// showOrder(
|
// "1944",
|
// "2",
|
// 30,
|
// 2
|
// )
|
}
|
}
|
|
|
|
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()
|
}
|
BaseEvent.APP_BACKGROUND -> {
|
if (getUserId() != -1 &&homeDataBean?.data?.work == 1 && Settings.canDrawOverlays(this) ) {
|
showFloater()
|
EasyFloat.show(EasyFloatTag)
|
}
|
}
|
BaseEvent.APP_FOREGROUND -> {
|
EasyFloat.hide(EasyFloatTag)
|
}
|
}
|
}
|
|
override fun onDestroy() {
|
super.onDestroy()
|
locationClient?.unRegisterLocationListener(listener)
|
}
|
}
|