From e0b6d687f67948aa04239f5bd50a418c4c966b6e Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 13 Jun 2023 17:00:02 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=B8=83=E5=B1=80=E5=85=81?= =?UTF-8?q?=E8=AE=B8=E6=B0=B4=E5=B9=B3=E6=97=8B=E8=BD=AC2.=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=B8=BB=E9=A1=B5=E8=AE=BF=E9=97=AE=E5=9B=BE=E5=B1=82?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E5=B4=A9=E6=BA=83=E9=97=AE=E9=A2=983.?= =?UTF-8?q?=E6=89=A9=E5=85=85=E8=BD=A8=E8=BF=B9=E5=AD=97=E6=AE=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 3 - .../java/com/navinfo/omqs/OMQSApplication.kt | 6 +- .../navinfo/omqs/ui/activity/BaseActivity.kt | 7 +- .../ui/activity/console/ConsoleActivity.kt | 5 +- .../omqs/ui/activity/map/MainViewModel.kt | 19 +++--- .../layermanager/LayerManagerViewModel.kt | 10 ++- .../layermanager/LayermanagerFragment.kt | 15 +++-- .../res/layout/fragment_layer_manager.xml | 66 ++++++++++--------- .../library/data/dao/impl/TraceDataBase.java | 17 ++++- .../library/data/entity/NiLocation.java | 21 ++++++ .../map/handler/LocationLayerHandler.kt | 2 + 11 files changed, 116 insertions(+), 55 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 184ccfd4..c1bdcd10 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -49,7 +49,6 @@ android:exported="true" android:label="@string/app_name" android:launchMode="singleTask" - android:screenOrientation="landscape" android:theme="@style/Theme.OMQualityInspection"> @@ -61,7 +60,6 @@ android:name=".ui.activity.map.MainActivity" android:exported="false" android:launchMode="singleTask" - android:screenOrientation="landscape" android:theme="@style/Theme.OMQualityInspection" /> diff --git a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt index d6d09a80..07c6b4dc 100644 --- a/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt +++ b/app/src/main/java/com/navinfo/omqs/OMQSApplication.kt @@ -1,6 +1,11 @@ package com.navinfo.omqs +import android.app.Activity import android.app.Application +import android.content.pm.ActivityInfo +import android.content.res.Configuration +import android.view.Surface +import android.view.WindowManager import com.navinfo.omqs.tools.FileManager import com.navinfo.omqs.ui.manager.TakePhotoManager import com.navinfo.omqs.util.NetUtils @@ -23,5 +28,4 @@ class OMQSApplication : Application() { val hashBytes = messageDigest.digest(inputString.toByteArray()) return hashBytes.joinToString("") { "%02x".format(it) }; } - } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/BaseActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/BaseActivity.kt index a1314579..7cd9155e 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/BaseActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/BaseActivity.kt @@ -13,10 +13,15 @@ import com.google.android.material.dialog.MaterialAlertDialogBuilder open class BaseActivity : AppCompatActivity() { private var loadingDialog: AlertDialog? = null override fun onCreate(savedInstanceState: Bundle?) { - requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE//横屏 super.onCreate(savedInstanceState) } + override fun onResume() { + super.onResume() + requestedOrientation = ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE; + } + + /** * 显示loading dialog */ diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt index 589d33f2..4189b8c9 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/console/ConsoleActivity.kt @@ -1,6 +1,7 @@ package com.navinfo.omqs.ui.activity.console import android.content.Intent +import android.content.pm.ActivityInfo import android.os.Bundle import android.util.Log import android.view.View @@ -199,7 +200,7 @@ class ConsoleActivity : BaseActivity(), OnClickListener { * 图层设置 */ R.id.console_layer_setting_bg, R.id.console_layer_setting_icon_bg -> { -/* if (sceneFlag) { + if (sceneFlag) { mFragment = LayermanagerFragment() sceneFlag = false TransitionManager.go(bScene, bTransition) @@ -210,7 +211,7 @@ class ConsoleActivity : BaseActivity(), OnClickListener { .replace(fragmentId, mFragment!!).commit() } return - }*/ + } } /** * 测评结果列表 diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt index 6b26f55d..c8f575ca 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainViewModel.kt @@ -78,6 +78,9 @@ class MainViewModel @Inject constructor( // var testPoint = GeoPoint(0, 0) + //uuid标识,用于记录轨迹组 + val uuid = UUID.randomUUID().toString() + //语音窗体 private var pop: PopupWindow? = null @@ -160,15 +163,9 @@ class MainViewModel @Inject constructor( } private fun initLocation() { - // mapController.locationLayerHandler.setNiLocationListener(NiLocationListener { -// addSaveTrace(it) -// -// }) //用于定位点存储到数据库 viewModelScope.launch(Dispatchers.Default) { mapController.locationLayerHandler.niLocationFlow.collect { location -> -// location.longitude = testPoint.longitude -// location.latitude = testPoint.latitude val geometry = GeometryTools.createGeometry( GeoPoint( location.latitude, location.longitude @@ -186,7 +183,13 @@ class MainViewModel @Inject constructor( location.tiley = y } } - Log.e("jingo", "定位点插入 ${Thread.currentThread().name}") + Log.e("jingo", "定位点插入 ${location.longitude}") + location.groupId = uuid + try { + location.timeStamp = DateTimeUtil.getTime(location.time).toString() + }catch (e: Exception){ + + } traceDataBase.niLocationDao.insert(location) mapController.mMapView.vtmMap.updateMap(true) } @@ -194,8 +197,6 @@ class MainViewModel @Inject constructor( //用于定位点捕捉道路 viewModelScope.launch(Dispatchers.Default) { mapController.locationLayerHandler.niLocationFlow.collectLatest { location -> -// location.longitude = testPoint.longitude -// location.latitude = testPoint.latitude if (!isSelectRoad()) captureLink(GeoPoint(location.latitude, location.longitude)) } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt index 82861c12..c747c423 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayerManagerViewModel.kt @@ -1,5 +1,7 @@ package com.navinfo.omqs.ui.fragment.layermanager +import android.content.Context +import android.widget.Toast import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import com.blankj.utilcode.util.FileIOUtils @@ -10,7 +12,9 @@ import com.navinfo.omqs.Constant import com.navinfo.omqs.bean.ImportConfig import com.navinfo.omqs.tools.LayerConfigUtils import com.navinfo.omqs.util.FlowEventBus +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch +import kotlinx.coroutines.withContext import java.io.File class LayerManagerViewModel(): ViewModel() { @@ -21,11 +25,15 @@ class LayerManagerViewModel(): ViewModel() { return LayerConfigUtils.getLayerConfigList() } - fun saveLayerConfigList(listData: List) { + fun saveLayerConfigList(context: Context, listData: List) { SPStaticUtils.put(Constant.EVENT_LAYER_MANAGER_CHANGE, gson.toJson(listData)) // 发送新的配置数据 viewModelScope.launch { FlowEventBus.post(Constant.EVENT_LAYER_MANAGER_CHANGE, listData) + withContext(Dispatchers.Main) { + Toast.makeText(context, "设置成功", Toast.LENGTH_SHORT) + .show() + } } } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt index ba11a236..b37f0871 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/layermanager/LayermanagerFragment.kt @@ -4,7 +4,10 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast import androidx.fragment.app.Fragment +import androidx.fragment.app.FragmentActivity +import androidx.fragment.app.FragmentController import androidx.fragment.app.viewModels import androidx.navigation.fragment.findNavController import com.blankj.utilcode.util.SPStaticUtils @@ -30,7 +33,9 @@ class LayermanagerFragment : BaseFragment(){ override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) + val adapter = LayerManagerExpandableListAdapter(requireContext(), viewModel.getLayerConfigList()) + binding.elvLayerManager.setAdapter(adapter) // 默认显示第一个父项下的子类 binding.elvLayerManager.expandGroup(0) @@ -43,15 +48,15 @@ class LayermanagerFragment : BaseFragment(){ } } + binding.imgConfirm.setOnClickListener { + viewModel.saveLayerConfigList(requireContext(),adapter.parentItems) + } + binding.imgBack.setOnClickListener { findNavController().navigateUp() } - binding.tvTitle.text = findNavController().currentDestination?.label - - binding.imgConfirm.setOnClickListener { // 用户点击确认,重新设置当前的图层显隐控制 - viewModel.saveLayerConfigList(adapter.parentItems) - } + binding.tvTitle.text = "图层管理" } override fun onDestroyView() { diff --git a/app/src/main/res/layout/fragment_layer_manager.xml b/app/src/main/res/layout/fragment_layer_manager.xml index a70aafe6..78f91573 100644 --- a/app/src/main/res/layout/fragment_layer_manager.xml +++ b/app/src/main/res/layout/fragment_layer_manager.xml @@ -1,64 +1,68 @@ + android:layout_height="match_parent" + android:background="@color/bg_left_pannel" + android:orientation="vertical"> + + + app:layout_constraintTop_toTopOf="parent"> + + + + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:layout_marginTop="5dp" + android:background="@drawable/selector_bg_round_button" + android:foreground="@drawable/ripple_btn_press" + android:src="@drawable/ic_baseline_check_24" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintRight_toRightOf="parent" + app:layout_constraintTop_toTopOf="parent"> - - + app:layout_constraintTop_toTopOf="parent"> + + app:layout_constraintTop_toBottomOf="@id/title_layout"> + + android:layout_height="match_parent" + android:divider="@android:drawable/divider_horizontal_dim_dark" + android:dividerHeight="0.1dp" /> \ No newline at end of file diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/dao/impl/TraceDataBase.java b/collect-library/src/main/java/com/navinfo/collect/library/data/dao/impl/TraceDataBase.java index 99e861bd..ba6195d1 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/dao/impl/TraceDataBase.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/dao/impl/TraceDataBase.java @@ -8,6 +8,7 @@ import androidx.annotation.NonNull; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; +import androidx.room.migration.Migration; import androidx.sqlite.db.SupportSQLiteDatabase; import com.navinfo.collect.library.data.entity.NiLocation; @@ -18,7 +19,7 @@ import com.tencent.wcdb.repair.RecoverKit; import com.tencent.wcdb.room.db.WCDBDatabase; import com.tencent.wcdb.room.db.WCDBOpenHelperFactory; -@Database(entities = { NiLocation.class},version = 1, exportSchema = false) +@Database(entities = { NiLocation.class},version = 2, exportSchema = false) public abstract class TraceDataBase extends RoomDatabase { // marking the instance as volatile to ensure atomic access to the variable /** @@ -63,7 +64,7 @@ public abstract class TraceDataBase extends RoomDatabase { // Wipes and rebuilds instead of migrating if no Migration object. // Migration is not part of this codelab. .fallbackToDestructiveMigration() - .addCallback(sRoomDatabaseCallback) + .addCallback(sRoomDatabaseCallback).addMigrations(MIGRATION_1_2) .build(); } } @@ -71,6 +72,18 @@ public abstract class TraceDataBase extends RoomDatabase { return INSTANCE; } + /** + *扩充字段 + */ + public static final Migration MIGRATION_1_2 = new Migration(1, 2) { + @Override + public void migrate(SupportSQLiteDatabase database) { + // 增加字段 + database.execSQL("ALTER TABLE niLocation " + " ADD COLUMN groupId " + " TEXT"); + database.execSQL("ALTER TABLE niLocation " + " ADD COLUMN timeStamp " + " TEXT"); + } + }; + /** * Override the onOpen method to populate the database. * For this sample, we clear the database every time it is created or opened. diff --git a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/NiLocation.java b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/NiLocation.java index 1bffbcd3..21e3a1fc 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/data/entity/NiLocation.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/data/entity/NiLocation.java @@ -61,6 +61,11 @@ public class NiLocation extends Feature{ private int tilex; @ColumnInfo(name = "tiley") private int tiley; + @ColumnInfo(name = "groupId") + private String groupId; + @ColumnInfo(name = "timeStamp") + private String timeStamp; + private boolean isAccouracy; private boolean isSpeed; private boolean isAltitude; @@ -297,4 +302,20 @@ public class NiLocation extends Feature{ public void setErrorCode(String errorCode) { this.errorCode = errorCode; } + + public String getGroupId() { + return groupId; + } + + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + public String getTimeStamp() { + return timeStamp; + } + + public void setTimeStamp(String timeStamp) { + this.timeStamp = timeStamp; + } } diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt index 823510f8..851d095c 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/handler/LocationLayerHandler.kt @@ -11,6 +11,7 @@ import com.baidu.location.LocationClientOption import com.baidu.location.LocationClientOption.LocationMode import com.navinfo.collect.library.data.entity.NiLocation import com.navinfo.collect.library.map.NIMapView +import com.navinfo.collect.library.utils.DateUtils import kotlinx.coroutines.flow.MutableSharedFlow import kotlinx.coroutines.launch import org.oscim.core.GeoPoint @@ -195,6 +196,7 @@ class LocationLayerHandler(context: AppCompatActivity, mapView: NIMapView) : niLocation.address = mCurrentLocation!!.addrStr niLocation.street = mCurrentLocation!!.street niLocation.town = mCurrentLocation!!.town + niLocation.speed = mCurrentLocation!!.speed niLocation.streetNumber = mCurrentLocation!!.streetNumber niLocation.errorCode = mCurrentLocation!!.locType.toString() return niLocation