From 5ff8509c952d0070b34ebe6a4167a22627d99c2f Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Fri, 26 May 2023 17:35:15 +0800 Subject: [PATCH 1/4] merge code --- vtm | 1 + 1 file changed, 1 insertion(+) create mode 160000 vtm diff --git a/vtm b/vtm new file mode 160000 index 00000000..dd13e533 --- /dev/null +++ b/vtm @@ -0,0 +1 @@ +Subproject commit dd13e533c38b5738ab404c2737d7ccadeff01323 From 7a7eb61401308180df2f44d8e24691e00050c55c Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Tue, 30 May 2023 14:00:32 +0800 Subject: [PATCH 2/4] merge code --- .../com/navinfo/omqs/ui/activity/map/MainActivity.kt | 2 +- .../com/navinfo/collect/library/map/NIMapView.java | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index 43c20509..fadd8700 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -253,7 +253,7 @@ class MainActivity : BaseActivity() { //开启定位 mapController.locationLayerHandler.startLocation() - + mapController.mMapView.setLogoVisable(View.GONE) //启动轨迹存储 // viewModel.startSaveTraceThread(this) diff --git a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java index c60c3bbe..380d0f45 100644 --- a/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java +++ b/collect-library/src/main/java/com/navinfo/collect/library/map/NIMapView.java @@ -800,6 +800,17 @@ public final class NIMapView extends RelativeLayout { } } + /** + * 设置logo显隐 + * + * @param position 按钮位置 + */ + public void setLogoVisable(int visable) { + if (logoImage != null) { + logoImage.setVisibility(visable); + } + } + /** * 设置缩放按钮位置 * From 02cf95b83d8d18dfa9eec7cf15920feacde9bb35 Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Thu, 1 Jun 2023 10:18:00 +0800 Subject: [PATCH 3/4] merge code --- app/src/main/res/layout/activity_login.xml | 2 ++ app/src/main/res/values-w1024dp/dimens.xml | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/layout/activity_login.xml b/app/src/main/res/layout/activity_login.xml index a756f978..c09460d9 100644 --- a/app/src/main/res/layout/activity_login.xml +++ b/app/src/main/res/layout/activity_login.xml @@ -117,6 +117,8 @@ tools:ignore="TouchTargetSizeCheck" /> + + - 200dp + 48dp 54dp 42dp 44dp From 5f953aa816c9ba52a375da88134cd63669fcb3ea Mon Sep 17 00:00:00 2001 From: qiji4215 Date: Fri, 2 Jun 2023 13:57:50 +0800 Subject: [PATCH 4/4] =?UTF-8?q?1.=E8=A7=A3=E5=86=B3=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E9=97=AE=E9=A2=98=E5=90=8E=E7=82=B9=E5=87=BB=E8=8E=B7=E5=8F=96?= =?UTF-8?q?=E6=95=B0=E6=8D=AE=E6=97=A0=E6=95=882.=E9=A2=84=E8=AD=A6?= =?UTF-8?q?=E9=9D=A2=E6=9D=BF=E5=A2=9E=E5=8A=A0=E5=BF=AB=E9=80=9F=E9=97=AE?= =?UTF-8?q?=E9=A2=98=E8=AE=B0=E5=BD=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../omqs/ui/activity/login/LoginViewModel.kt | 2 +- .../omqs/ui/activity/map/MainActivity.kt | 3 +- .../omqs/ui/activity/map/MainViewModel.kt | 131 ++++++++++-------- .../omqs/ui/activity/map/SignAdapter.kt | 7 +- .../EvaluationResultFragment.kt | 20 ++- .../EvaluationResultViewModel.kt | 43 +++--- .../res/drawable-xhdpi/icon_evaluation.png | Bin 0 -> 704 bytes .../res/drawable-xxhdpi/icon_evaluation.png | Bin 0 -> 988 bytes app/src/main/res/layout/adapter_sign.xml | 11 ++ 9 files changed, 138 insertions(+), 79 deletions(-) create mode 100644 app/src/main/res/drawable-xhdpi/icon_evaluation.png create mode 100644 app/src/main/res/drawable-xxhdpi/icon_evaluation.png diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt index cd36992d..520c3332 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/login/LoginViewModel.kt @@ -76,7 +76,7 @@ class LoginViewModel @Inject constructor( var jobLogin: Job? = null; init { - loginUser.value = LoginUserBean(userCode = "02911", passWord = "123456") + loginUser.value = LoginUserBean(userCode = "haofuyue00213", passWord = "123456") } diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt index fadd8700..e400c1a7 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/MainActivity.kt @@ -75,11 +75,12 @@ class MainActivity : BaseActivity() { * 提前显示要素看板 */ private val signAdapter by lazy { - SignAdapter { position, signBean -> + SignAdapter { position, autoSave,signBean -> rightController.currentDestination?.let { if (it.id == R.id.RightEmptyFragment) { val bundle = Bundle() bundle.putParcelable("SignBean", signBean) + bundle.putBoolean("AutoSave", autoSave) rightController.navigate(R.id.EvaluationResultFragment, bundle) } } 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 cc45b163..dfd92f34 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 @@ -85,6 +85,7 @@ class MainViewModel @Inject constructor( //录音图标 var volume: ImageView? = null + var mSoundMeter: SoundMeter? = null var menuState: Boolean = false @@ -98,6 +99,8 @@ class MainViewModel @Inject constructor( */ private var bSelectRoad = false + private var linkIdCache = "" + init { mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> when (e) { @@ -210,80 +213,92 @@ class MainViewModel @Inject constructor( val linkList = realmOperateHelper.queryLink( point = point, ) - //看板数据 - val signList = mutableListOf() - val topSignList = mutableListOf() - mapController.lineHandler.linksLayer.clear() if (linkList.isNotEmpty()) { + //看板数据 + val signList = mutableListOf() + val topSignList = mutableListOf() + mapController.lineHandler.linksLayer.clear() + val link = linkList[0] + val linkId = link.properties[RenderEntity.Companion.LinkTable.linkPid] - Log.e("jingo", "捕捉到的linkid $linkId ${link.geometry}") - mapController.lineHandler.showLine(link.geometry) - linkId?.let { - var elementList = realmOperateHelper.queryLinkByLinkPid(it) - for (element in elementList) { - val distance = GeometryTools.distanceToDouble( - point, GeometryTools.createGeoPoint(element.geometry) - ) - val signBean = SignBean( - iconId = SignUtil.getSignIcon(element), - iconText = SignUtil.getSignIconText(element), - distance = distance.toInt(), - elementId = element.id, - linkId = linkId, - geometry = element.geometry, - name = SignUtil.getSignNameText(element), - bottomRightText = SignUtil.getSignBottomRightText(element), - elementCode = element.code - ) + if(linkIdCache!=linkId){ - when (element.code) { - 2002, 2008, 2010, 2041 -> topSignList.add( - signBean + Log.e("jingo", "捕捉到的linkid $linkId ${link.geometry}") + mapController.lineHandler.showLine(link.geometry) + linkId?.let { + var elementList = realmOperateHelper.queryLinkByLinkPid(it) + for (element in elementList) { + val distance = GeometryTools.distanceToDouble( + point, GeometryTools.createGeoPoint(element.geometry) ) - 4002, 4003, 4004, 4022 -> signList.add( - signBean + + val signBean = SignBean( + iconId = SignUtil.getSignIcon(element), + iconText = SignUtil.getSignIconText(element), + distance = distance.toInt(), + elementId = element.id, + linkId = linkId, + geometry = element.geometry, + name = SignUtil.getSignNameText(element), + bottomRightText = SignUtil.getSignBottomRightText(element), + elementCode = element.code ) + + when (element.code) { + 2002, 2008, 2010, 2041 -> topSignList.add( + signBean + ) + 4002, 4003, 4004, 4022 -> signList.add( + signBean + ) + } + } - } - - val realm = Realm.getDefaultInstance() - val entity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RESTRICTION") - .and() - .equalTo( - "properties['linkIn']", - it - ).findFirst() - if (entity != null) { - val outLink = entity.properties["linkOut"] - val linkOutEntity = realm.where(RenderEntity::class.java) - .equalTo("table", "OMDB_RD_LINK") + val realm = Realm.getDefaultInstance() + val entity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RESTRICTION") .and() .equalTo( - "properties['${RenderEntity.Companion.LinkTable.linkPid}']", - outLink + "properties['linkIn']", + it ).findFirst() - if (linkOutEntity != null) { - mapController.lineHandler.linksLayer.addLine( - linkOutEntity.geometry, - 0x7DFF0000 - ) - Log.e("jingo", "捕捉到的linkid $outLink ${linkOutEntity.geometry}") + if (entity != null) { + val outLink = entity.properties["linkOut"] + val linkOutEntity = realm.where(RenderEntity::class.java) + .equalTo("table", "OMDB_RD_LINK") + .and() + .equalTo( + "properties['${RenderEntity.Companion.LinkTable.linkPid}']", + outLink + ).findFirst() + if (linkOutEntity != null) { + mapController.lineHandler.linksLayer.addLine( + linkOutEntity.geometry, + 0x7DFF0000 + ) + Log.e("jingo", "捕捉到的linkid $outLink ${linkOutEntity.geometry}") + } } } + + liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode }) + liveDataSignList.postValue(signList.distinctBy { it.elementCode }) + val speechText = SignUtil.getRoadSpeechText(topSignList) + withContext(Dispatchers.Main) { + speakMode?.speakText(speechText) + } } + linkIdCache = linkId ?: "" + + Log.e("jingo", "自动捕捉数据 共${signList.size}条") + + }else{ + ToastUtils.showLong("未捕捉到数据") } - liveDataTopSignList.postValue(topSignList.distinctBy { it.elementCode }) - liveDataSignList.postValue(signList.distinctBy { it.elementCode }) - val speechText = SignUtil.getRoadSpeechText(topSignList) - withContext(Dispatchers.Main) { - speakMode?.speakText(speechText) - } - Log.e("jingo", "自动捕捉数据 共${signList.size}条") } } @@ -483,6 +498,8 @@ class MainViewModel @Inject constructor( */ fun setSelectRoad(select: Boolean) { bSelectRoad = select + //去掉缓存 + linkIdCache = "" if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { mapController.lineHandler.removeLine() liveDataSignList.value = mutableListOf() diff --git a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt index e1ca6085..b5072080 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/activity/map/SignAdapter.kt @@ -8,7 +8,7 @@ import com.navinfo.omqs.databinding.AdapterSignBinding import com.navinfo.omqs.ui.other.BaseRecyclerViewAdapter import com.navinfo.omqs.ui.other.BaseViewHolder -class SignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null) : +class SignAdapter(private var itemListener: ((Int, Boolean, SignBean) -> Unit?)? = null) : BaseRecyclerViewAdapter() { override fun getItemViewRes(position: Int): Int { return R.layout.adapter_sign @@ -27,9 +27,12 @@ class SignAdapter(private var itemListener: ((Int, SignBean) -> Unit?)? = null) bd.signMainIconBg.setImageResource(item.iconId) bd.signMainIcon.text = item.iconText bd.signBottomText.text = item.name + bd.signMainFastError.setOnClickListener{ + itemListener?.invoke(position, true,item) + } bd.signBottomRightText.text = item.bottomRightText bd.root.setOnClickListener { - itemListener?.invoke(position, item) + itemListener?.invoke(position, false,item) } } } \ No newline at end of file diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt index 210893fa..f44a8f3c 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultFragment.kt @@ -102,12 +102,18 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { voiceOnTouchStart()//Do Something Log.e("qj", "voiceOnTouchStart") } + MotionEvent.ACTION_UP -> { voiceOnTouchStop()//Do Something - Log.e("qj", "voiceOnTouchStop") + Log.e("qj", "ACTION_UP") + } + + MotionEvent.ACTION_CANCEL -> { + voiceOnTouchStop()//Do Something + Log.e("qj", "ACTION_CANCEL") } } - return v?.onTouchEvent(event) ?: true + return true } }) @@ -117,18 +123,26 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { // val id = args.qsId var id = "" var signBean: SignBean? = null + var autoSave: Boolean = false var filePath: String = "" arguments?.let { id = it.getString("QsId", "") filePath = it.getString("filePath", "") try { signBean = it.getParcelable("SignBean") + autoSave = it.getBoolean("AutoSave") } catch (e: java.lang.Exception) { } } if (id == null || id.isEmpty()) { viewModel.initNewData(signBean, filePath) + //增加监听,联动列表自动保存 + viewModel.liveDataRightTypeList.observe(viewLifecycleOwner) { + if (autoSave) { + viewModel.saveData() + } + } } else { viewModel.initData(id) } @@ -288,6 +302,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { } } + else -> {} } } @@ -299,6 +314,7 @@ class EvaluationResultFragment : BaseFragment(), View.OnClickListener { @RequiresApi(Build.VERSION_CODES.Q) fun voiceOnTouchStop() { + Log.e("qj", "voiceOnTouchStop====${Constant.IS_VIDEO_SPEED}") if (Constant.IS_VIDEO_SPEED) { viewModel.stopSoundMeter() } diff --git a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt index 99158c55..5684e00d 100644 --- a/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt +++ b/app/src/main/java/com/navinfo/omqs/ui/fragment/evaluationresult/EvaluationResultViewModel.kt @@ -34,8 +34,12 @@ import com.navinfo.omqs.util.DateTimeUtil import com.navinfo.omqs.util.SoundMeter import com.navinfo.omqs.util.SpeakMode import dagger.hilt.android.lifecycle.HiltViewModel +import io.realm.OrderedCollectionChangeSet import io.realm.Realm import io.realm.RealmList +import io.realm.RealmModel +import io.realm.RealmResults +import io.realm.kotlin.addChangeListener import io.realm.kotlin.where import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -359,28 +363,35 @@ class EvaluationResultViewModel @Inject constructor( fun initData(id: String) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { + viewModelScope.launch(Dispatchers.IO) { - val realm = Realm.getDefaultInstance() - val objects = realm.where().equalTo("id", id).findFirst() - if (objects != null) { - oldBean = realm.copyFromRealm(objects) - oldBean?.let { - liveDataQsRecordBean.postValue(it.copy()) - val p = GeometryTools.createGeoPoint(it.geometry) - mapController.markerHandle.addMarker( - GeoPoint(p.latitude, p.longitude), markerTitle - ) + Realm.getDefaultInstance().use { realm -> + realm.executeTransactionAsync { bgRealm -> + // find the item + val objects = bgRealm.where(QsRecordBean::class.java).equalTo("id", id).findFirst() + if (objects != null) { + oldBean = bgRealm.copyFromRealm(objects) + oldBean?.let { + liveDataQsRecordBean.postValue(it.copy()) + val p = GeometryTools.createGeoPoint(it.geometry) + mapController.markerHandle.addMarker(GeoPoint(p.latitude, p.longitude), markerTitle) - if (it.linkId.isNotEmpty()) { - val link = realmOperateHelper.queryLink(it.linkId) - link?.let { l -> - mapController.lineHandler.showLine(l.geometry) + //获取linkid + if (it.linkId.isNotEmpty()) { + viewModelScope.launch(Dispatchers.IO) { + val link = realmOperateHelper.queryLink(it.linkId) + link?.let { l -> + mapController.lineHandler.showLine(l.geometry) + } + } + } + liveDataQsRecordBean.value?.attachmentBeanList = it.attachmentBeanList + // 显示语音数据到界面 + getChatMsgEntityList() } } } - // 显示语音数据到界面 - getChatMsgEntityList() } } } diff --git a/app/src/main/res/drawable-xhdpi/icon_evaluation.png b/app/src/main/res/drawable-xhdpi/icon_evaluation.png new file mode 100644 index 0000000000000000000000000000000000000000..04625fac73f354fc8f27ddf47d6dab9601d4a9b4 GIT binary patch literal 704 zcmV;x0zdtUP)~sT!9q&|n zkGCc?F)__1lZG|tkceLrQQc&|Vgq`K5FP&;jTWt02=K|XTVVTjk&S0I1G<$9(YY-m zw*m||oi16*>lF+P5Q+VH(U=P`^xS}$_ExZS&IBe_OwA`>#UO8Y1|amD9y1@TcJs^{ zCWypNJ`z&^*J6`rt{q5{rvK%tpG^!sr_apKwF?P@%DHG}nz#W7A5xuN_f&5nov}Os z5r{heS#+dsOU{Erp)UiV9EhSVc@zpjCYZ$LkEY(2jeuGYyz|GRtpJv}a%Cexgvs`q zc%T5nnkz%`_+LgK&6e>#FBAS%9D#B+!5a=Y@9eT=eJJAnssI2SbLcs3W`4UqfSP;6 zM6cEXAce@`Ist%_|3Cw46d{4$r-`WMqNoOlaA+sEDXp=^T_SE2u>;^m3h-CzzaB-_ zgESK^aTR4QC+2*=C-b^_HU&<$$D;AO8Wv2)Wov;goenF0N=P%Zs* zN8~vJVt%GSy>bnS6=Nss4W|H3t5p4Y&lwT%eI11C`|}zAQQM?_m&*6YqLtY z+fY8w61Ka`L_>PLaUOLSJyf*-8MOi-tHn&MMfy-p22+4Y1iFXm%r!I>mC^{KYB8!{ mtB&iMu<_$+VEQc2_WA|DEs6AAh;vi`0000R+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/icon_evaluation.png b/app/src/main/res/drawable-xxhdpi/icon_evaluation.png new file mode 100644 index 0000000000000000000000000000000000000000..a41e13cf87f4d22256c33a5114226e545d99acb9 GIT binary patch literal 988 zcmV<210(#2P)((qD}r-l=ho}h37-~>%iKym`o8-x=OPCz&T;VIBQ5G7RV zV}KWGH=b&pICA`vIO`9Jgr!JGW@qQOGdr_0YeG!V&-Im0rlM>!qXKXaMBB5Xc?d=a zK!*q&Q#a1bztM|2Jw*}FU0>N&i1wJU15i#vR*!(Dsq4qGFj4^51$B=>H2_5krG1AG zbJH}8`m!KP0sMHUR!jv)UiXL#0|0X)`(V^Jh8TvC8XDlbpdB(GRy~cUr;K>_!!JYZ znYqtGfSVk0e^%9#L{~jPMP@!I4~*tKg1G>e@@wiDK$S%+k<@zvYMXt%9wa{y;D1ow zR+@o&xv%@WZy>-`LA{V(dFD%ocM}qc96_&TtQF)=z5rM2Y6A*=m6=G4VblCvzWv*F zkMHKyHW7W2m8*<+%e}EZ03tb&qMXT2k|Y3tUiMz!a)wwBz*RxJiJG92vVgTXuKh3r z&@E^+0uH0Be!>>8RAXJ=uru})U=nq1B+oQ6%t>0n0$@Ha4~%{B_Y~l&pjH7oin{t~ zSU}8?z1QD}z2F3p51TIPq%AO>j=z=qM#BQ=zD1EVYxBnPqy*3@^^GkHAWrv5%Y|$= z8Uy6D76@NrS^fkQnOi^N(eA_o(PO_;csedL&IvXE$F=%tx)2zr6vxrQ4WF6?n9pAT z{9G?B3jjQPvA|PWfW;mdCo=6>Mj;1)I+QK-p40+%9*A1%Jz*FfzAO!l%CsKn7BtZ*exLZnu}$Ep2jV_bi;~aJg#hfw zwMced?5>G>aYUn}GqGC2DeUJ>ATsnQL#?=Cw+zfY<%PVkcVrRVNk;9-7+1vcle7@P4zG`^ zY9q?VUJirrh|T@Y!Kk%pTqporhzPMJWkf$Rxib^vlnuQa_QHE9fT=asv?_r`H(Tny z%eM$(J_mEn?`mqE6_y5YMybbDb%%gzgm8Puj24)i%PPJwj4tv$=X=rJhN_CMQ^c^Y2uCMlZoXOo0000< KMNUMnLSTZ3J;Oo( literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/adapter_sign.xml b/app/src/main/res/layout/adapter_sign.xml index eb570520..189bc7ef 100644 --- a/app/src/main/res/layout/adapter_sign.xml +++ b/app/src/main/res/layout/adapter_sign.xml @@ -47,4 +47,15 @@ android:layout_alignParentRight="true" android:layout_marginRight="15dp" android:textSize="14sp"/> + + + \ No newline at end of file