完善室内整理功能

This commit is contained in:
qiji4215
2023-07-20 16:01:42 +08:00
parent 0848ee491b
commit c83ed1b97e
5 changed files with 69 additions and 29 deletions

View File

@@ -334,7 +334,10 @@ class MainActivity : BaseActivity() {
if (viewModel.indoorToolsCommand == IndoorToolsCommand.SELECT_POINT) { if (viewModel.indoorToolsCommand == IndoorToolsCommand.SELECT_POINT) {
selectPointFinish(true) selectPointFinish(true)
} }
//启动自动播放
if (viewModel.indoorToolsCommand == IndoorToolsCommand.PLAY) {
viewModel.startTimer()
}
} }
IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE -> { IndoorToolsResp.QR_CODE_STATUS_UPDATE_VIDEO_INFO_FAILURE -> {
@@ -627,7 +630,7 @@ class MainActivity : BaseActivity() {
viewModel.setSelectPauseTrace(false) viewModel.setSelectPauseTrace(false)
binding.mainActivityMenuIndoorGroup.visibility = View.GONE binding.mainActivityMenuIndoorGroup.visibility = View.GONE
binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace() binding.mainActivityTraceSnapshotPoints.isSelected = viewModel.isSelectTrace()
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag() //binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()
binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace() binding.mainActivitySnapshotPause.isSelected = viewModel.isSelectPauseTrace()
} }
@@ -636,8 +639,8 @@ class MainActivity : BaseActivity() {
*/ */
@RequiresApi(Build.VERSION_CODES.N) @RequiresApi(Build.VERSION_CODES.N)
fun mediaFlagOnclick() { fun mediaFlagOnclick() {
viewModel.setMediaFlag(!viewModel.isMediaFlag()) /* viewModel.setMediaFlag(!viewModel.isMediaFlag())
binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag() binding.mainActivitySnapshotMediaFlag.isSelected = viewModel.isMediaFlag()*/
} }
/** /**
@@ -650,11 +653,11 @@ class MainActivity : BaseActivity() {
mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() - 1) mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() - 1)
if (item != null) { if (item != null) {
viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex() - 1) viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex() - 1)
viewModel.showMarker(this, (item as MarkerItem).uid as NiLocation) viewModel.showMarker(this, item)
val traceVideoBean = TraceVideoBean( val traceVideoBean = TraceVideoBean(
command = "videotime?", command = "videotime?",
userid = Constant.USER_ID, userid = Constant.USER_ID,
time = "${(item.uid as NiLocation).time}:000" time = "${item.time}:000"
) )
viewModel.sendServerCommand(this, traceVideoBean, IndoorToolsCommand.REWIND) viewModel.sendServerCommand(this, traceVideoBean, IndoorToolsCommand.REWIND)
} else { } else {
@@ -718,11 +721,11 @@ class MainActivity : BaseActivity() {
mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() + 1) mapController.markerHandle.getNILocation(viewModel.getCurrentNiLocationIndex() + 1)
if (item != null) { if (item != null) {
viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex() + 1) viewModel.setCurrentIndexLoction(viewModel.getCurrentNiLocationIndex() + 1)
viewModel.showMarker(this, (item as MarkerItem).uid as NiLocation) viewModel.showMarker(this, item)
val traceVideoBean = TraceVideoBean( val traceVideoBean = TraceVideoBean(
command = "videotime?", command = "videotime?",
userid = Constant.USER_ID, userid = Constant.USER_ID,
time = "${(item.uid as NiLocation).time}:000" time = "${item.time}:000"
) )
viewModel.sendServerCommand(this, traceVideoBean, IndoorToolsCommand.NEXT) viewModel.sendServerCommand(this, traceVideoBean, IndoorToolsCommand.NEXT)
} else { } else {

View File

@@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope import androidx.lifecycle.viewModelScope
import androidx.navigation.findNavController import androidx.navigation.findNavController
import com.blankj.utilcode.util.ToastUtils import com.blankj.utilcode.util.ToastUtils
import com.blankj.utilcode.util.ViewUtils.runOnUiThread
import com.navinfo.collect.library.data.dao.impl.TraceDataBase import com.navinfo.collect.library.data.dao.impl.TraceDataBase
import com.navinfo.collect.library.data.entity.* import com.navinfo.collect.library.data.entity.*
import com.navinfo.collect.library.garminvirbxe.HostBean import com.navinfo.collect.library.garminvirbxe.HostBean
@@ -56,12 +57,14 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import org.oscim.core.GeoPoint import org.oscim.core.GeoPoint
import org.oscim.core.MapPosition import org.oscim.core.MapPosition
import org.oscim.layers.marker.MarkerItem
import org.oscim.map.Map import org.oscim.map.Map
import org.videolan.libvlc.LibVlcUtil import org.videolan.libvlc.LibVlcUtil
import java.io.File import java.io.File
import java.io.IOException import java.io.IOException
import java.util.* import java.util.*
import javax.inject.Inject import javax.inject.Inject
import kotlin.concurrent.fixedRateTimer
/** /**
* 创建Activity全局viewmode * 创建Activity全局viewmode
@@ -168,6 +171,10 @@ class MainViewModel @Inject constructor(
private var shareUtil: ShareUtil? = null private var shareUtil: ShareUtil? = null
private var timer: Timer? = null
private var disTime :Long = 1000
init { init {
mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition -> mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition ->
when (e) { when (e) {
@@ -352,12 +359,14 @@ class MainViewModel @Inject constructor(
) )
) )
} }
withContext(Dispatchers.Main){
if(Constant.AUTO_LOCATION){ if(Constant.AUTO_LOCATION){
mapController.mMapView.vtmMap.animator() mapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint( location.longitude, location.latitude)) .animateTo(GeoPoint( location.longitude, location.latitude))
} }
} }
} }
}
//显示轨迹图层 //显示轨迹图层
mapController.layerManagerHandler.showNiLocationLayer() mapController.layerManagerHandler.showNiLocationLayer()
} }
@@ -866,13 +875,6 @@ class MainViewModel @Inject constructor(
return currentIndexNiLocation return currentIndexNiLocation
} }
/**
* 结束自动播放
*/
fun cancelTrace() {
}
override fun onConnect(success: Boolean) { override fun onConnect(success: Boolean) {
if (!success && socketServer != null) { if (!success && socketServer != null) {
BaseToast.makeText( BaseToast.makeText(
@@ -928,4 +930,40 @@ class MainViewModel @Inject constructor(
mCameraDialog?.connection(hostBean1) mCameraDialog?.connection(hostBean1)
} }
} }
fun startTimer() {
if(timer!=null){
cancelTrace()
} }
timer = fixedRateTimer("", false, disTime, disTime) {
if(currentIndexNiLocation<mapController.markerHandle.getNILocationItemizedLayerSize()){
Log.e("qj","定时器")
val niLocation = mapController.markerHandle.getNILocation(currentIndexNiLocation)
val nextNiLocation = mapController.markerHandle.getNILocation(currentIndexNiLocation+1)
if(nextNiLocation!=null&&niLocation!=null){
var nilocationDisTime = nextNiLocation.timeStamp.toLong() - niLocation.timeStamp.toLong()
disTime = if(nilocationDisTime<1000){
1000
}else{
nilocationDisTime
}
showMarker(mapController.mMapView.context,nextNiLocation)
currentIndexNiLocation += 1
//再次启动
startTimer()
}
}else{
Toast.makeText(mapController.mMapView.context,"无数据了!",Toast.LENGTH_LONG).show()
cancelTrace()
}
}
}
/**
* 结束自动播放
*/
fun cancelTrace() {
timer?.cancel()
}
}

View File

@@ -345,7 +345,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:visibility="gone" android:visibility="gone"
app:constraint_referenced_ids="main_activity_snapshot_finish,main_activity_trace_snapshot_points,main_activity_snapshot_media_flag,main_activity_snapshot_rewind,main_activity_snapshot_pause,main_activity_snapshot_next" /> app:constraint_referenced_ids="main_activity_snapshot_finish,main_activity_trace_snapshot_points,main_activity_snapshot_rewind,main_activity_snapshot_pause,main_activity_snapshot_next" />
<ImageButton <ImageButton
android:id="@+id/main_activity_snapshot_finish" android:id="@+id/main_activity_snapshot_finish"
@@ -359,12 +359,12 @@
android:onClick="@{()->mainActivity.tracePointsOnclick()}" android:onClick="@{()->mainActivity.tracePointsOnclick()}"
android:src="@drawable/map_trace_select_point" /> android:src="@drawable/map_trace_select_point" />
<ImageButton <!-- <ImageButton
android:id="@+id/main_activity_snapshot_media_flag" android:id="@+id/main_activity_snapshot_media_flag"
style="@style/top_right_drawer_btns_style" style="@style/top_right_drawer_btns_style"
android:visibility="gone" android:visibility="gone"
android:onClick="@{()->mainActivity.mediaFlagOnclick()}" android:onClick="@{()->mainActivity.mediaFlagOnclick()}"
android:src="@drawable/map_trace_mediaflag" /> android:src="@drawable/map_trace_mediaflag" />-->
<ImageButton <ImageButton
android:id="@+id/main_activity_snapshot_rewind" android:id="@+id/main_activity_snapshot_rewind"

View File

@@ -1713,7 +1713,7 @@
</m> </m>
<m k="boundaryType" v="1"> <m k="boundaryType" v="1">
<!--无标线无可区分边界--> <!--无标线无可区分边界-->
<line dasharray="10,2,2,2,2,2,2,2" repeat-start="0" stroke="#ffffff" width="0.2" /> <line dasharray="20,8" repeat-start="0" stroke="#ffffff" width="0.2"/>
</m> </m>
<!-- <outline-layer id="boundaryType" stroke="#fcba5a" width="0.2" /> <!-- <outline-layer id="boundaryType" stroke="#fcba5a" width="0.2" />
<m k="boundaryType" v="0"> <m k="boundaryType" v="0">
@@ -1771,7 +1771,6 @@
<m v="1"> <m v="1">
<line stroke="#ffffff" use="boundaryType" /> <line stroke="#ffffff" use="boundaryType" />
</m> </m>
<!--只区分虚线与实线-->
<m v="2"> <m v="2">
<line dasharray="10,2,2,2,2,2,2,2" repeat-start="0" stroke="#eccc68" use="boundaryType" /> <line dasharray="10,2,2,2,2,2,2,2" repeat-start="0" stroke="#eccc68" use="boundaryType" />
</m> </m>
@@ -1819,12 +1818,12 @@
</m>--> </m>-->
</m> </m>
</m> </m>
<m v="0|1|3|4|5|6|7|8|9"> <m v="0|3|4|5|6|7|8|9">
<line stroke="#ffffff" use="boundaryType" /> <line stroke="#ffffff" use="boundaryType" />
</m> </m>
<!--只区分虚线与实线--> <!--只区分虚线与实线-->
<m v="0|3|4|5|6|7|8|9"> <m v="1">
<line dasharray="10,2,2,2,2,2,2,2" repeat-start="0" stroke="#ffffff" /> <line dasharray="20,8" repeat-start="0" stroke="#ffffff" width="0.2"/>
</m> </m>
</m> </m>
</m> </m>

View File

@@ -758,9 +758,9 @@ class MarkHandler(context: AppCompatActivity, mapView: NIMapView) :
return niLocationItemizedLayer.itemList.size return niLocationItemizedLayer.itemList.size
} }
fun getNILocation(index:Int):MarkerInterface?{ fun getNILocation(index:Int):NiLocation?{
return if(index>-1&&index<getNILocationItemizedLayerSize()){ return if(index>-1&&index<getNILocationItemizedLayerSize()){
niLocationItemizedLayer.itemList[index] ((niLocationItemizedLayer.itemList[index])as MarkerItem).uid as NiLocation
}else{ }else{
null null
} }