fix: 增加omdb图层管理

This commit is contained in:
2023-05-05 14:02:32 +08:00
81 changed files with 605 additions and 153 deletions

View File

@@ -13,6 +13,7 @@ import androidx.navigation.NavOptions
import androidx.recyclerview.widget.LinearLayoutManager
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.databinding.FragmentEvaluationResultBinding
import com.navinfo.omqs.ui.fragment.BaseFragment
import com.navinfo.omqs.ui.other.shareViewModels
@@ -24,6 +25,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
private lateinit var binding: FragmentEvaluationResultBinding
private val viewModel by shareViewModels<EvaluationResultViewModel>("QsRecode")
// private val args:EmptyFragmentArgs by navArgs()
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
): View {
@@ -80,15 +82,15 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
binding.evaluationVoice.setOnTouchListener(object : View.OnTouchListener {
@RequiresApi(Build.VERSION_CODES.Q)
override fun onTouch(v: View?, event: MotionEvent?): Boolean {
Log.e("qj",event?.action.toString())
Log.e("qj", event?.action.toString())
when (event?.action) {
MotionEvent.ACTION_DOWN ->{
MotionEvent.ACTION_DOWN -> {
voiceOnTouchStart()//Do Something
Log.e("qj","voiceOnTouchStart")
Log.e("qj", "voiceOnTouchStart")
}
MotionEvent.ACTION_UP ->{
MotionEvent.ACTION_UP -> {
voiceOnTouchStop()//Do Something
Log.e("qj","voiceOnTouchStop")
Log.e("qj", "voiceOnTouchStop")
}
}
return v?.onTouchEvent(event) ?: true
@@ -98,17 +100,23 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
/**
* 读取元数据
*/
if (arguments != null) {
val id = requireArguments().getString("QsId")
//语音路径
val filePath = requireArguments().getString("filePath")
if (id != null) {
viewModel.initData(id)
} else {
viewModel.initNewData(filePath!!)
// val id = args.qsId
var id: String = ""
var signBean: SignBean? = null
var filePath: String = ""
arguments?.let {
id = it.getString("QsId", "")
filePath = it.getString("filePath", "")
try {
signBean = it.getParcelable("SignBean")
} catch (e: java.lang.Exception) {
}
}
if (id == null || id.isEmpty()) {
viewModel.initNewData(signBean, filePath)
} else {
viewModel.initNewData("")
viewModel.initData(id)
}
// //监听大分类数据变化
// viewModel.liveDataClassTypeList.observe(viewLifecycleOwner) {
@@ -271,13 +279,13 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener {
}
}
fun voiceOnTouchStart(){
viewModel!!.startSoundMetter(requireActivity(),binding.evaluationVoice)
fun voiceOnTouchStart() {
viewModel!!.startSoundMetter(requireActivity(), binding.evaluationVoice)
}
@RequiresApi(Build.VERSION_CODES.Q)
fun voiceOnTouchStop(){
if(Constant.IS_VIDEO_SPEED){
fun voiceOnTouchStop() {
if (Constant.IS_VIDEO_SPEED) {
viewModel!!.stopSoundMeter()
}
}

View File

@@ -26,6 +26,7 @@ import com.navinfo.collect.library.data.entity.QsRecordBean
import com.navinfo.collect.library.data.entity.RenderEntity.Companion.LinkTable
import com.navinfo.collect.library.map.NIMapController
import com.navinfo.collect.library.utils.GeometryTools
import com.navinfo.omqs.bean.SignBean
import com.navinfo.omqs.Constant
import com.navinfo.omqs.R
import com.navinfo.omqs.bean.ChatMsgEntity
@@ -108,7 +109,7 @@ class EvaluationResultViewModel @Inject constructor(
super.onCleared()
Log.e("jingo", "EvaluationResultViewModel 销毁了 ${hashCode()}")
mapController.markerHandle.removeMarker(markerTitle)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
mapController.lineHandler.removeLine()
}
}
@@ -117,25 +118,44 @@ class EvaluationResultViewModel @Inject constructor(
/**
* 查询数据库,获取问题分类
*/
fun initNewData(filePath: String) {
fun initNewData(bean: SignBean?,filePath: String) {
viewModelScope.launch(Dispatchers.IO) {
getClassTypeList()
getProblemLinkList()
}
val geoPoint = mapController.locationLayerHandler.getCurrentGeoPoint()
geoPoint?.let {
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
mapController.markerHandle.addMarker(geoPoint, markerTitle)
viewModelScope.launch {
captureLink(geoPoint.longitude, geoPoint.latitude)
if (bean == null) {
geoPoint?.let {
liveDataQsRecordBean.value!!.geometry = GeometryTools.createGeometry(it).toText()
mapController.markerHandle.addMarker(geoPoint, markerTitle)
viewModelScope.launch {
captureLink(geoPoint.longitude, geoPoint.latitude)
}
}
} else {
liveDataQsRecordBean.value?.run {
elementId = bean.elementId
linkId = bean.linkId
if (linkId.isNotEmpty()) {
viewModelScope.launch {
val link = realmOperateHelper.queryLink(linkId)
link?.let { l ->
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
mapController.lineHandler.showLine(l.geometry)
}
}
}
}
}
val point = GeometryTools.createGeoPoint(bean.geometry)
mapController.markerHandle.addMarker(point, markerTitle)
}
addChatMsgEntity(filePath)
}
/**
* 捕捉
* 捕捉
*/
private suspend fun captureLink(longitude: Double, latitude: Double) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
@@ -364,7 +384,7 @@ class EvaluationResultViewModel @Inject constructor(
fun addChatMsgEntity(filePath: String) {
if(filePath!=null){
if(filePath.isNotEmpty()){
var chatMsgEntityList: MutableList<ChatMsgEntity> = ArrayList()
if(listDataChatMsgEntityList.value?.isEmpty() == false){
chatMsgEntityList = listDataChatMsgEntityList.value!!

View File

@@ -1,7 +1,9 @@
package com.navinfo.omqs.ui.fragment.evaluationresult
import android.os.Build
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.annotation.RequiresApi
import com.navinfo.omqs.R
import com.navinfo.omqs.databinding.TextItemSelectBinding
import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter
@@ -21,6 +23,7 @@ class LeftAdapter(private var itemListener: ((Int, String) -> Unit?)? = null) :
return BaseViewHolder(viewBinding)
}
@RequiresApi(Build.VERSION_CODES.M)
override fun onBindViewHolder(holder: BaseViewHolder, position: Int) {
val bd = holder.viewBinding as TextItemSelectBinding
val title = data[position]

View File

@@ -8,29 +8,17 @@ import com.google.gson.Gson
import com.google.gson.reflect.TypeToken
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.launch
import java.io.File
class LayerManagerViewModel(): ViewModel() {
private val omdbConfigFile = File("${Constant.USER_DATA_PATH}", Constant.OMDB_CONFIG)
private val otherConfigFile = File("${Constant.USER_DATA_PATH}", Constant.OTHER_CONFIG)
private val gson = Gson()
fun getLayerConfigList(): List<ImportConfig> {
// 首先读取Shared文件如果存在则直接返回否则读取config文件
val importConfigList: List<ImportConfig>? = SPStaticUtils.getString(Constant.LAYER_MANAGER_CONFIG, null).run {
if (this!=null) {
gson.fromJson(this, object : TypeToken<List<ImportConfig>>(){}.type)
} else {
null
}
}
if (importConfigList==null) {
return getLayerConfigListFromAssetsFile()
} else {
return importConfigList as List<ImportConfig>
}
return LayerConfigUtils.getLayerConfigList()
}
fun saveLayerConfigList(listData: List<ImportConfig>) {
@@ -41,18 +29,4 @@ class LayerManagerViewModel(): ViewModel() {
}
}
private fun getLayerConfigListFromAssetsFile(): List<ImportConfig> {
val resultList = mutableListOf<ImportConfig>()
if (omdbConfigFile.exists()) {
val omdbConfiStr = FileIOUtils.readFile2String(omdbConfigFile)
val omdbConfig = gson.fromJson<ImportConfig>(omdbConfiStr, ImportConfig::class.java)
resultList.add(omdbConfig)
}
if (otherConfigFile.exists()) {
val otherConfiStr = FileIOUtils.readFile2String(otherConfigFile)
val otherConfig = gson.fromJson<ImportConfig>(otherConfiStr, ImportConfig::class.java)
resultList.add(otherConfig)
}
return resultList
}
}

View File

@@ -50,7 +50,7 @@ class QsRecordListFragment : BaseFragment(){
binding.qsRecyclerview.addItemDecoration(itemDecoration)
viewModel.getList(requireContext())
// itemClick
adapter!!.setOnKotlinItemClickListener(object : QsRecordListAdapter.IKotlinItemClickListener {
adapter.setOnKotlinItemClickListener(object : QsRecordListAdapter.IKotlinItemClickListener {
override fun onItemClickListener(position: Int) {
viewModel.onItemClickListener(activity as MainActivity,position)
findNavController().popBackStack()