diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 779f59b..8f890f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellListAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_well_management.* @@ -180,9 +179,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 779f59b..8f890f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellListAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_well_management.* @@ -180,9 +179,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 847164c..39a02e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -20,7 +20,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -260,9 +259,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 779f59b..8f890f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellListAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_well_management.* @@ -180,9 +179,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 847164c..39a02e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -20,7 +20,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -260,9 +259,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt new file mode 100644 index 0000000..86c2cb3 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt @@ -0,0 +1,63 @@ +package com.casic.app.smartwell.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.View +import com.casic.app.smartwell.R +import com.pengxh.kt.lite.extensions.initDialogLayoutParams +import com.pengxh.kt.lite.extensions.show +import kotlinx.android.synthetic.main.dialog_server_ip.* + +class ChangeServerDialog private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedDialogStyle +) { + private val ctx: Context = builder.context + private val listener: OnDialogButtonClickListener = builder.listener + + class Builder { + lateinit var context: Context + lateinit var listener: OnDialogButtonClickListener + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): ChangeServerDialog { + return ChangeServerDialog(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.initDialogLayoutParams(0.85f) + setContentView(R.layout.dialog_server_ip) + setCancelable(true) + setCanceledOnTouchOutside(true) + + confirmButton.setOnClickListener(View.OnClickListener { + val address = addressView.text.toString() + val port = portNumberView.text.toString() + if (address.isBlank()) { + "请输入服务器地址".show(ctx) + return@OnClickListener + } + if (port.isBlank()) { + "请输入服务器端口".show(ctx) + return@OnClickListener + } + listener.onConfirmClick(address, port) + dismiss() + }) + } + + interface OnDialogButtonClickListener { + fun onConfirmClick(address: String, port: String) + } +} \ No newline at end of file diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 779f59b..8f890f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellListAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_well_management.* @@ -180,9 +179,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 847164c..39a02e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -20,7 +20,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -260,9 +259,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt new file mode 100644 index 0000000..86c2cb3 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt @@ -0,0 +1,63 @@ +package com.casic.app.smartwell.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.View +import com.casic.app.smartwell.R +import com.pengxh.kt.lite.extensions.initDialogLayoutParams +import com.pengxh.kt.lite.extensions.show +import kotlinx.android.synthetic.main.dialog_server_ip.* + +class ChangeServerDialog private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedDialogStyle +) { + private val ctx: Context = builder.context + private val listener: OnDialogButtonClickListener = builder.listener + + class Builder { + lateinit var context: Context + lateinit var listener: OnDialogButtonClickListener + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): ChangeServerDialog { + return ChangeServerDialog(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.initDialogLayoutParams(0.85f) + setContentView(R.layout.dialog_server_ip) + setCancelable(true) + setCanceledOnTouchOutside(true) + + confirmButton.setOnClickListener(View.OnClickListener { + val address = addressView.text.toString() + val port = portNumberView.text.toString() + if (address.isBlank()) { + "请输入服务器地址".show(ctx) + return@OnClickListener + } + if (port.isBlank()) { + "请输入服务器端口".show(ctx) + return@OnClickListener + } + listener.onConfirmClick(address, port) + dismiss() + }) + } + + interface OnDialogButtonClickListener { + fun onConfirmClick(address: String, port: String) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_right_main.xml b/app/src/main/res/drawable/ic_right_main.xml new file mode 100644 index 0000000..ee29d4e --- /dev/null +++ b/app/src/main/res/drawable/ic_right_main.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/libs/lite-release.aar b/app/libs/lite-release.aar index 95567db..bd136e7 100644 --- a/app/libs/lite-release.aar +++ b/app/libs/lite-release.aar Binary files differ diff --git a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt index d11f4ed..6e5e672 100644 --- a/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt +++ b/app/src/main/java/com/casic/app/smartwell/fragment/HomePageFragment.kt @@ -11,20 +11,21 @@ import androidx.fragment.app.Fragment import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.GridLayoutManager -import com.amap.api.location.AMapLocation import com.amap.api.maps.AMap import com.amap.api.maps.AMapOptions import com.amap.api.maps.CameraUpdateFactory import com.amap.api.maps.CoordinateConverter -import com.amap.api.maps.model.* +import com.amap.api.maps.model.CameraPosition +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Marker +import com.amap.api.maps.model.MarkerOptions import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.HomeRecycleAdapter import com.casic.app.smartwell.base.BaseApplication -import com.casic.app.smartwell.callback.ILocationListener import com.casic.app.smartwell.model.MapWellListModel import com.casic.app.smartwell.utils.DialogHelper import com.casic.app.smartwell.utils.LocaleConstant -import com.casic.app.smartwell.utils.LocationHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.view.OvertimeOrderActivity import com.casic.app.smartwell.view.WellManagementActivity import com.casic.app.smartwell.view.WellOperationActivity @@ -33,7 +34,10 @@ import com.casic.app.smartwell.vm.WorkOrderViewModel import com.casic.app.smartwell.widgets.GaoDeClusterMarkerView import com.google.android.material.bottomsheet.BottomSheetBehavior -import com.pengxh.kt.lite.extensions.* +import com.pengxh.kt.lite.extensions.dp2px +import com.pengxh.kt.lite.extensions.navigatePageTo +import com.pengxh.kt.lite.extensions.obtainScreenHeight +import com.pengxh.kt.lite.extensions.show import com.pengxh.kt.lite.widget.EasyPopupWindow import com.pengxh.kt.lite.widget.dialog.AlertControlDialog import kotlinx.android.synthetic.main.fragment_home.view.* @@ -144,23 +148,23 @@ } } - LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { - override fun onAMapLocationGet(aMapLocation: AMapLocation?) { - if (aMapLocation != null) { - val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) - //移动到指定经纬度 - val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) - val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) - aMap.animateCamera(cameraUpdate, 1500, null) - } - } - }, false) +// LocationHelper.obtainCurrentLocation(requireContext(), object : ILocationListener { +// override fun onAMapLocationGet(aMapLocation: AMapLocation?) { +// if (aMapLocation != null) { +// val centerLatLng = LatLng(aMapLocation.latitude, aMapLocation.longitude) +// //移动到指定经纬度 +// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) +// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) +// aMap.animateCamera(cameraUpdate, 1500, null) +// } +// } +// }, false) //计算所有点的中心点位置 -// val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) -// //移动到指定经纬度 -// val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) -// val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) -// aMap.animateCamera(cameraUpdate, 1500, null) + val centerLatLng = LatLng(latitudeList.average(), longitudeList.average()) + //移动到指定经纬度 + val cameraPosition = CameraPosition(centerLatLng, 12f, 0f, 0f) + val cameraUpdate = CameraUpdateFactory.newCameraPosition(cameraPosition) + aMap.animateCamera(cameraUpdate, 1500, null) } }) @@ -373,8 +377,8 @@ "窨井经纬度异常,无法开启导航".show(BaseApplication.obtainInstance()) return } - Poi(p0.snippet, LatLng(lat.toDouble(), lng.toDouble()), "").showRouteOnMap( - requireContext() + RouteOnMap.startNavigation( + requireContext(), p0.snippet, LatLng(lat.toDouble(), lng.toDouble()) ) } diff --git a/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt new file mode 100644 index 0000000..084f475 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/utils/RouteOnMap.kt @@ -0,0 +1,27 @@ +package com.casic.app.smartwell.utils + +import android.content.Context +import android.graphics.Color +import com.amap.api.maps.model.LatLng +import com.amap.api.maps.model.Poi +import com.pengxh.kt.lite.extensions.showBusRouteOnMap +import com.pengxh.kt.lite.extensions.showRouteOnMap +import com.pengxh.kt.lite.widget.dialog.BottomActionSheet + +object RouteOnMap { + fun startNavigation(context: Context, s: String, latlng: LatLng) { + BottomActionSheet.Builder() + .setContext(context) + .setItemTextColor(Color.BLUE) + .setActionItemTitle(arrayListOf("步行导航", "驾驶模式")) + .setOnActionSheetListener(object : + BottomActionSheet.OnActionSheetListener { + override fun onActionItemClick(position: Int) { + when (position) { + 0 -> Poi(s, latlng, "").showRouteOnMap(context) + 1 -> Poi(s, latlng, "").showBusRouteOnMap(context) + } + } + }).build().show() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt index c926c9b..c886d0e 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/LoginActivity.kt @@ -1,21 +1,26 @@ package com.casic.app.smartwell.view +import android.content.Context +import android.os.CountDownTimer import androidx.lifecycle.ViewModelProvider import com.casic.app.smartwell.R import com.casic.app.smartwell.utils.* import com.casic.app.smartwell.vm.AuthenticateViewModel import com.casic.app.smartwell.vm.LoginViewModel import com.casic.app.smartwell.vm.UserViewModel +import com.casic.app.smartwell.widgets.ChangeServerDialog import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show +import com.pengxh.kt.lite.utils.PageNavigationManager import com.pengxh.kt.lite.utils.SaveKeyValues -import com.pengxh.kt.lite.vm.LoadState import kotlinx.android.synthetic.main.activity_login.* class LoginActivity : KotlinBaseActivity() { + private val context: Context = this@LoginActivity + private lateinit var dialogManager: DialogManager private lateinit var authenticateViewModel: AuthenticateViewModel private lateinit var loginViewModel: LoginViewModel private lateinit var userViewModel: UserViewModel @@ -30,12 +35,42 @@ // 设置默认账号密码 userNameView.setText(SaveKeyValues.getValue(LocaleConstant.ACCOUNT, "") as String) userPasswordView.setText(SaveKeyValues.getValue(LocaleConstant.PASSWORD, "") as String) + dialogManager = DialogManager.obtainInstance(this) authenticateViewModel = ViewModelProvider(this).get(AuthenticateViewModel::class.java) loginViewModel = ViewModelProvider(this).get(LoginViewModel::class.java) userViewModel = ViewModelProvider(this).get(UserViewModel::class.java) } override fun initEvent() { + //修改IP和端口 + changeServerLayout.setOnClickListener { + ChangeServerDialog.Builder() + .setContext(this) + .setOnDialogButtonClickListener(object : + ChangeServerDialog.OnDialogButtonClickListener { + override fun onConfirmClick(address: String, port: String) { + /** + * 例如:http://60.208.121.150:5001 + * */ + val newServerConfig = "http://$address:$port" + SaveKeyValues.putValue( + LocaleConstant.DEFAULT_SERVER_CONFIG, + newServerConfig + ) + object : CountDownTimer(2000, 1000) { + override fun onTick(millisUntilFinished: Long) { + "修改完成,请重新打开应用".show(context) + } + + override fun onFinish() { + PageNavigationManager.finishAllActivity() + } + }.start() + } + }) + .build().show() + } + loginButton.setOnClickListener { val account = userNameView.text.toString().trim() val userPassword = userPasswordView.text.toString().trim() @@ -76,20 +111,13 @@ finish() } }) - loginViewModel.loadState.observe(this, { loginState -> - when (loginState) { - is LoadState.Success -> { - DialogHelper.dismissLoadingDialog() - } - else -> { - DialogHelper.dismissLoadingDialog() - } - } + loginViewModel.loadState.observe(this, { + dialogManager.dismissLoadingDialog() }) } }) authenticateViewModel.loadState.observe(this, { - DialogHelper.showLoadingDialog(this, "登录中,请稍后") + dialogManager.showLoadingDialog("登录中,请稍后") }) } } \ No newline at end of file diff --git a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt index bacc6d3..c19928a 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/OrderNotProcessedDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.toChinese import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.OperationViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.vm.WorkOrderViewModel @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.base.KotlinBaseActivity import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -134,9 +133,11 @@ if (lat.isBlank() || lng.isBlank()) { "窨井经纬度异常,无法开启导航".show(context) } else { - Poi( - orderDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + orderDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt index 6d08f45..816205d 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellDetailActivity.kt @@ -4,10 +4,10 @@ import android.view.View import androidx.lifecycle.ViewModelProvider import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.extensions.combineImagePath import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellViewModel import com.gyf.immersionbar.ImmersionBar import com.pengxh.kt.lite.adapter.ReadOnlyImageAdapter @@ -15,7 +15,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.Constant import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.vm.LoadState @@ -120,9 +119,11 @@ "窨井经纬度异常,无法开启导航".show(this) return@setOnClickListener } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(this) + RouteOnMap.startNavigation( + this, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } } }) diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt index 779f59b..8f890f9 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellManagementActivity.kt @@ -5,12 +5,12 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellListAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -19,7 +19,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import kotlinx.android.synthetic.main.activity_well_management.* @@ -180,9 +179,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt index 847164c..39a02e6 100644 --- a/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt +++ b/app/src/main/java/com/casic/app/smartwell/view/WellOperationActivity.kt @@ -5,13 +5,13 @@ import androidx.lifecycle.ViewModelProvider import androidx.recyclerview.widget.LinearLayoutManager import com.amap.api.maps.model.LatLng -import com.amap.api.maps.model.Poi import com.casic.app.smartwell.R import com.casic.app.smartwell.adapter.WellOperationAdapter import com.casic.app.smartwell.extensions.* import com.casic.app.smartwell.model.WellListModel import com.casic.app.smartwell.model.WellTypeModel import com.casic.app.smartwell.utils.DialogHelper +import com.casic.app.smartwell.utils.RouteOnMap import com.casic.app.smartwell.vm.WellListViewModel import com.casic.app.smartwell.vm.WellViewModel import com.casic.app.smartwell.widgets.WellTypePopupWindow @@ -20,7 +20,6 @@ import com.pengxh.kt.lite.extensions.convertColor import com.pengxh.kt.lite.extensions.navigatePageTo import com.pengxh.kt.lite.extensions.show -import com.pengxh.kt.lite.extensions.showRouteOnMap import com.pengxh.kt.lite.utils.ImmerseStatusBarUtil import com.pengxh.kt.lite.utils.WeakReferenceHandler import com.pengxh.kt.lite.vm.LoadState @@ -260,9 +259,11 @@ "窨井经纬度异常,无法开启导航".show(context) return } - Poi( - wellDetail.position, LatLng(lat.toDouble(), lng.toDouble()), "" - ).showRouteOnMap(context) + RouteOnMap.startNavigation( + context, + wellDetail.position, + LatLng(lat.toDouble(), lng.toDouble()) + ) } }) } diff --git a/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt new file mode 100644 index 0000000..86c2cb3 --- /dev/null +++ b/app/src/main/java/com/casic/app/smartwell/widgets/ChangeServerDialog.kt @@ -0,0 +1,63 @@ +package com.casic.app.smartwell.widgets + +import android.app.Dialog +import android.content.Context +import android.os.Bundle +import android.view.View +import com.casic.app.smartwell.R +import com.pengxh.kt.lite.extensions.initDialogLayoutParams +import com.pengxh.kt.lite.extensions.show +import kotlinx.android.synthetic.main.dialog_server_ip.* + +class ChangeServerDialog private constructor(builder: Builder) : Dialog( + builder.context, R.style.UserDefinedDialogStyle +) { + private val ctx: Context = builder.context + private val listener: OnDialogButtonClickListener = builder.listener + + class Builder { + lateinit var context: Context + lateinit var listener: OnDialogButtonClickListener + + fun setContext(context: Context): Builder { + this.context = context + return this + } + + fun setOnDialogButtonClickListener(listener: OnDialogButtonClickListener): Builder { + this.listener = listener + return this + } + + fun build(): ChangeServerDialog { + return ChangeServerDialog(this) + } + } + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + this.initDialogLayoutParams(0.85f) + setContentView(R.layout.dialog_server_ip) + setCancelable(true) + setCanceledOnTouchOutside(true) + + confirmButton.setOnClickListener(View.OnClickListener { + val address = addressView.text.toString() + val port = portNumberView.text.toString() + if (address.isBlank()) { + "请输入服务器地址".show(ctx) + return@OnClickListener + } + if (port.isBlank()) { + "请输入服务器端口".show(ctx) + return@OnClickListener + } + listener.onConfirmClick(address, port) + dismiss() + }) + } + + interface OnDialogButtonClickListener { + fun onConfirmClick(address: String, port: String) + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_right_main.xml b/app/src/main/res/drawable/ic_right_main.xml new file mode 100644 index 0000000..ee29d4e --- /dev/null +++ b/app/src/main/res/drawable/ic_right_main.xml @@ -0,0 +1,9 @@ + + + diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index c7ac8fb..5ba7506 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -48,7 +48,7 @@ android:id="@+id/userPasswordLayout" android:layout_width="match_parent" android:layout_height="@dimen/titleViewHeight" - android:layout_above="@id/anchorView" + android:layout_above="@id/changeServerLayout" android:layout_marginHorizontal="@dimen/dp_50" android:layout_marginTop="@dimen/dp_5" android:background="@drawable/bg_solid_layout_gray_radius_5" @@ -73,18 +73,38 @@ android:theme="@style/EditTextTheme" /> - + + + + + +