From 9404fc9fce1d2f8678a5d1e6da2374b7a67783fe Mon Sep 17 00:00:00 2001
From: 18034727885 <973609879@qq.com>
Date: 星期四, 10 九月 2026 16:55:57 +0800
Subject: [PATCH] 修复问题,升级版本
---
app/src/main/java/com/driver/igotrip/ui/main/MainActivity.kt | 119 ++++++++++++++++++++++++++++++++---------------------------
1 files changed, 64 insertions(+), 55 deletions(-)
diff --git a/app/src/main/java/com/driver/igotrip/ui/main/MainActivity.kt b/app/src/main/java/com/driver/igotrip/ui/main/MainActivity.kt
index a3598db..3e24771 100644
--- a/app/src/main/java/com/driver/igotrip/ui/main/MainActivity.kt
+++ b/app/src/main/java/com/driver/igotrip/ui/main/MainActivity.kt
@@ -1,20 +1,23 @@
package com.driver.igotrip.ui.main
import android.Manifest
-import android.annotation.SuppressLint
import android.content.ActivityNotFoundException
import android.content.Intent
+import android.content.pm.PackageManager
+import android.os.Build
import android.os.Bundle
import android.os.Handler
import android.os.Looper
import android.os.Message
import android.provider.Settings
-import android.util.Log
import android.view.View
import android.widget.ImageView
import android.widget.LinearLayout
import android.widget.TextView
import android.widget.Toast
+import androidx.core.app.ActivityCompat
+import androidx.core.net.toUri
+import cn.sinata.rxnetty.LogHelper
import cn.sinata.rxnetty.NettyClient
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.clickDelay
@@ -41,6 +44,7 @@
import com.driver.igotrip.netUtls.Api
import com.driver.igotrip.netUtls.callNet
import com.driver.igotrip.netUtls.getMapByAny
+import com.driver.igotrip.service.LocationForegroundService
import com.driver.igotrip.ui.DialogUtil
import com.driver.igotrip.ui.DialogUtil.getDelAndSureDialog
import com.driver.igotrip.ui.main.event.MineEventActivity
@@ -56,7 +60,6 @@
import com.driver.mask_talk.utils.toTimeEnglish
import com.driver.mask_talk.utils.toTimeFrench
import com.google.android.gms.maps.GoogleMap
-import com.google.android.gms.maps.SupportMapFragment
import com.google.gson.Gson
import com.tbruyelle.rxpermissions2.RxPermissions
import com.wang.avi.AVLoadingIndicatorView
@@ -85,7 +88,6 @@
private val tv_today_time by lazy { find<TextView>(R.id.tv_today_time) }
private val tv_week_time by lazy { find<TextView>(R.id.tv_week_time) }
private val tv_month_time by lazy { find<TextView>(R.id.tv_month_time) }
- private val map_view by lazy { supportFragmentManager.findFragmentById(R.id.map_view) }
private val avv_anim by lazy { find<AVLoadingIndicatorView>(R.id.avv_anim) }
private val tv_up_avv by lazy { find<TextView>(R.id.tv_up_avv) }
private val tv_order_num by lazy { find<TextView>(R.id.tv_order_num) }
@@ -380,12 +382,10 @@
lateinit var aMap: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
- if (CacheKey.getKeyStr(Const.REFUSE_LOCATION)
- .isNotEmpty() && !RxPermissions(this).isGranted(
- Manifest.permission.ACCESS_FINE_LOCATION
- )
+ if (CacheKey.getKeyStr(Const.REFUSE_LOCATION).isNotEmpty() &&
+ !RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)
) {
- toast("Without positioning permission, you will not be able to receive new order push notifications")
+ toast(getString(R.string.没有定位权限提示))
} else {
if (!RxPermissions(this).isGranted(Manifest.permission.ACCESS_FINE_LOCATION)) {
DialogUtil.getDelAndSureDialog(
@@ -394,57 +394,72 @@
getString(R.string.拒绝权限),
getString(R.string.定位权限说明),
{
+ LogHelper.logRecord("用户拒绝定位权限1")
}) {
val subscribe =
RxPermissions(this).request(Manifest.permission.ACCESS_FINE_LOCATION)
- .subscribe {
+ .subscribe { it ->
if (!it) {
- toast("Without positioning permission, you will not be able to receive new order push notifications")
+ toast(getString(R.string.没有定位权限提示))
CacheKey.putKeyStr(Const.REFUSE_LOCATION, "1")
- } else
- initLocation()
+ LogHelper.logRecord("用户拒绝定位权限2")
+ } else {
+ val subscribe = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
+ RxPermissions(this).request(Manifest.permission.ACCESS_BACKGROUND_LOCATION)
+ .subscribe {
+ if (!it) {
+ toast(getString(R.string.没有定位权限提示))
+ CacheKey.putKeyStr(Const.REFUSE_LOCATION, "1")
+ LogHelper.logRecord("用户拒绝定位权限3")
+ } else {
+ initLocation()
+ initFloatingWindow()
+ }
+ }
+ } else {
+ initLocation()
+ initFloatingWindow()
+ }
+ }
}
}
- } else
+ } else {
initLocation()
- }
- }
-
- @SuppressLint("MissingPermission", "CheckResult")
- private fun initLocation() {
- val fragment = map_view as SupportMapFragment
- AMapKit.initMap(fragment) { it ->
- // zmc-remark 测试代码 给个初始位置
-// MyApplication.aMapLocation = LatLng(30.659221715540937,104.06676612263988)
- aMap = it
- aMap.isMyLocationEnabled = true
- aMap.setOnMyLocationChangeListener {
- it?.let {
- Log.e("定位==============》", "${it.latitude},${it.longitude}")
- MyApplication.setLocation(it.latitude, it.longitude)
- }
+ initFloatingWindow()
}
-
-// val fusedLocationClient = LocationServices.getFusedLocationProviderClient(this)
-// val locationRequest = LocationRequest.create().apply {
-// interval = 10000 // 10秒间隔
-// priority = LocationRequest.PRIORITY_HIGH_ACCURACY
-// }
-//
-// fusedLocationClient.requestLocationUpdates(locationRequest,
-// object : LocationCallback() {
-// override fun onLocationResult(it: LocationResult) {
-// // 处理位置更新
-// Log.e("定位 by fusedLocationClient ==============》","${it.lastLocation?.latitude},${it.lastLocation?.longitude}")
-// }
-// }, Looper.getMainLooper()
-// )
}
}
+ //初始化定位
+ private fun initLocation() {
+ if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
+ return
+ }
+ LocationForegroundService.start()
+ }
+
+ //初始化悬浮窗
+ private fun initFloatingWindow() {
+ if (!Settings.canDrawOverlays(this) && CacheKey.getKeyStr(Const.REFUSE_FLOATING_WINDOW) != "1") {
+ DialogUtil.getDelAndSureDialog(
+ this,
+ getString(R.string.确认),
+ getString(R.string.拒绝权限),
+ getString(R.string.悬浮窗说明),
+ {
+ CacheKey.putKeyStr(Const.REFUSE_FLOATING_WINDOW, "1")
+ }) {
+ val intent = Intent(Settings.ACTION_MANAGE_OVERLAY_PERMISSION, "package:${packageName}".toUri()).apply {
+ putExtra("package", packageName)
+ }
+ startActivity(intent)
+ }
+ }
+ }
override fun onResume() {
super.onResume()
+ MyApplication.couldShowFloatingWindow = Settings.canDrawOverlays(this) && CacheKey.getKeyStr(Const.REFUSE_FLOATING_WINDOW) != "1"
mainFragment?.refresh()
callNet(Api.needToSettle, getMapByAny()) {
var bean = gson.fromJson(it, BooleanBean::class.java).data
@@ -480,6 +495,7 @@
tv_lien_name.text = data.data.brand.toString()
tv_car.text =
if (data.data.work == 1) getString(R.string.下班) else getString(R.string.出车)
+ MyApplication.isWorking = data.data.work == 1
if (data.data.work == 1) {
/*try {
vehicleReporter?.setVehicleState(RidesharingVehicleReporter.VehicleState.ONLINE)
@@ -569,6 +585,7 @@
callNet(Api.work, getMapByAny()) {
homeDataBean?.data?.work = 2
tv_car.text = getString(R.string.出车)
+ MyApplication.isWorking = false
beOnDuty(false)
val bean = Gson().fromJson<UpCarInfo>(it, UpCarInfo::class.java)
MyApplication.getTTsManager().setVideoText(bean.data?.audioUrl)
@@ -765,16 +782,6 @@
mainFragment?.refresh()
}
- BaseEvent.OFF_LINE -> {
- Thread() {
- try {
- /* vehicleReporter?.disableLocationTracking()
- RidesharingDriverApi.clearInstance()*/
- } catch (e: Exception) {
- }
- }.start()
- }
-
BaseEvent.FORCED_OFFLINE -> {
initCall()
}
@@ -800,6 +807,8 @@
*/
override fun onDestroy() {
+ MyApplication.couldShowFloatingWindow = false
+ LocationForegroundService.stop()
super.onDestroy()
MyApplication.removeOrderView(qeeOrderView)
}
--
Gitblit v1.7.1