完善室内整理功能

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

View File

@ -22,6 +22,7 @@ import androidx.lifecycle.ViewModel
import androidx.lifecycle.viewModelScope
import androidx.navigation.findNavController
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.entity.*
import com.navinfo.collect.library.garminvirbxe.HostBean
@ -56,12 +57,14 @@ import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext
import org.oscim.core.GeoPoint
import org.oscim.core.MapPosition
import org.oscim.layers.marker.MarkerItem
import org.oscim.map.Map
import org.videolan.libvlc.LibVlcUtil
import java.io.File
import java.io.IOException
import java.util.*
import javax.inject.Inject
import kotlin.concurrent.fixedRateTimer
/**
* 创建Activity全局viewmode
@ -168,6 +171,10 @@ class MainViewModel @Inject constructor(
private var shareUtil: ShareUtil? = null
private var timer: Timer? = null
private var disTime :Long = 1000
init {
mapController.mMapView.vtmMap.events.bind(Map.UpdateListener { e, mapPosition ->
when (e) {
@ -352,9 +359,11 @@ class MainViewModel @Inject constructor(
)
)
}
if(Constant.AUTO_LOCATION){
mapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint( location.longitude, location.latitude))
withContext(Dispatchers.Main){
if(Constant.AUTO_LOCATION){
mapController.mMapView.vtmMap.animator()
.animateTo(GeoPoint( location.longitude, location.latitude))
}
}
}
}
@ -866,13 +875,6 @@ class MainViewModel @Inject constructor(
return currentIndexNiLocation
}
/**
* 结束自动播放
*/
fun cancelTrace() {
}
override fun onConnect(success: Boolean) {
if (!success && socketServer != null) {
BaseToast.makeText(
@ -928,4 +930,40 @@ class MainViewModel @Inject constructor(
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_height="wrap_content"
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
android:id="@+id/main_activity_snapshot_finish"
@ -359,12 +359,12 @@
android:onClick="@{()->mainActivity.tracePointsOnclick()}"
android:src="@drawable/map_trace_select_point" />
<ImageButton
<!-- <ImageButton
android:id="@+id/main_activity_snapshot_media_flag"
style="@style/top_right_drawer_btns_style"
android:visibility="gone"
android:onClick="@{()->mainActivity.mediaFlagOnclick()}"
android:src="@drawable/map_trace_mediaflag" />
android:src="@drawable/map_trace_mediaflag" />-->
<ImageButton
android:id="@+id/main_activity_snapshot_rewind"

View File

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

View File

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