[Feat]全览模式本地数据库查数据

This commit is contained in:
chenfufeng
2022-07-19 19:07:38 +08:00
parent a37e713882
commit d80e1c4188
19 changed files with 496 additions and 118 deletions

View File

@@ -19,6 +19,8 @@ import android.widget.*
import androidx.core.view.*
import androidx.lifecycle.lifecycleScope
import com.alibaba.android.arouter.facade.annotation.Route
import com.alibaba.android.arouter.launcher.ARouter
import com.mogo.commons.mvp.BaseFragment
import com.mogo.commons.mvp.MvpFragment
import com.mogo.commons.voice.*
import com.mogo.eagle.core.data.bindingcar.AdUpgradeStateHelper
@@ -56,6 +58,7 @@ import com.mogo.eagle.core.function.hmi.ui.bindingcar.ModifyBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.bindingcar.ToBindingCarDialog
import com.mogo.eagle.core.function.hmi.ui.bindingcar.UpgradeAppDialog
import com.mogo.eagle.core.function.hmi.ui.camera.CameraListView
import com.mogo.eagle.core.function.hmi.ui.camera.RoadVideoDialog
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeBannerView
import com.mogo.eagle.core.function.hmi.ui.notice.NoticeNormalBannerView
import com.mogo.eagle.core.function.hmi.ui.setting.DebugSettingView
@@ -137,6 +140,12 @@ import kotlin.collections.ArrayList
private var speakJob: Job? = null
private var roadVideoDialog: RoadVideoDialog? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
override fun vipIdentification(visible: Boolean) {
ThreadUtils.runOnUiThread {
if (visible) {
@@ -275,6 +284,15 @@ import kotlin.collections.ArrayList
mViewNotificationProvider = provider
}
override fun showVideoDialog(url: String, isFlvUrl: Boolean) {
context?.let {
if (roadVideoDialog == null) {
roadVideoDialog = RoadVideoDialog(it)
}
roadVideoDialog?.show(url, isFlvUrl)
}
}
/**
* 设置 红绿灯 代理View
*/
@@ -888,14 +906,6 @@ import kotlin.collections.ArrayList
dismissToolsFloatView()
}
override fun showSmallFragment() {
// TODO:("展示全览模式地图")
}
override fun hideSmallFragment() {
// TODO:("隐藏全览模式地图")
}
private fun showCameraList(cameraList: List<CameraEntity>?) {
context?.let {
if (cameraViewFloat == null) {
@@ -1114,6 +1124,29 @@ import kotlin.collections.ArrayList
}
}
override fun showSmallFragment() {
// 加载 小地图 图层
val fragmentSmpMap = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_SMP)
.navigation() as BaseFragment
activity?.supportFragmentManager?.beginTransaction()
?.setCustomAnimations(R.anim.slide_in, R.anim.fade_out)?.apply {
if (!fragmentSmpMap.isAdded) {
add(R.id.module_main_id_smp_fragment, fragmentSmpMap, fragmentSmpMap.tagName)
} else {
show(fragmentSmpMap)
}.commitAllowingStateLoss()
}
}
override fun hideSmallFragment() {
val fragmentSmpMap = ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_SMP)
.navigation() as BaseFragment
activity?.supportFragmentManager?.beginTransaction()
?.setCustomAnimations(R.anim.slide_in, R.anim.fade_out)
?.hide(fragmentSmpMap)
?.commitAllowingStateLoss()
}
override fun onDestroy() {
super.onDestroy()
CallerLogger.d("$M_HMI$TAG", "onDestroy")

View File

@@ -0,0 +1,119 @@
package com.mogo.eagle.core.function.hmi.ui.camera
import android.content.Context
import android.graphics.PorterDuff
import android.graphics.PorterDuffColorFilter
import android.view.View
import androidx.core.content.ContextCompat
import androidx.lifecycle.LifecycleObserver
import com.mogo.eagle.core.function.call.monitor.CallerMonitorManager
import com.mogo.eagle.core.function.hmi.R
import com.mogo.eagle.core.utilcode.mogo.logger.CallerLogger
import com.mogo.eagle.core.utilcode.mogo.logger.scene.SceneConstant
import com.mogo.eagle.core.utilcode.util.ToastUtils
import com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
import com.mogo.module.common.dialog.BaseFloatDialog
import com.shuyu.gsyvideoplayer.GSYVideoManager
import com.shuyu.gsyvideoplayer.builder.GSYVideoOptionBuilder
import com.shuyu.gsyvideoplayer.model.VideoOptionModel
import com.shuyu.gsyvideoplayer.player.IjkPlayerManager
import com.shuyu.gsyvideoplayer.player.PlayerFactory
import com.shuyu.gsyvideoplayer.utils.GSYVideoType
import kotlinx.android.synthetic.main.road_video_dialog.*
import kotlinx.android.synthetic.main.view_camera_list.view.*
import tv.danmaku.ijk.media.player.IjkMediaPlayer
/**
* @brief 道路视频Dialog
* @author chenfufeng
*/
class RoadVideoDialog(context: Context) : BaseFloatDialog(context), LifecycleObserver {
private val TAG = "RoadVideoDialog"
private var mVideoUrl: String = ""
private val gsyVideoOptionBuilder by lazy {
GSYVideoOptionBuilder()
}
init {
setContentView(R.layout.road_video_dialog)
setCanceledOnTouchOutside(true)
roadVideoClose.setOnClickListener {
stopLive()
dismiss()
}
initVideoPlayer()
}
fun show(url: String, isFlvUrl: Boolean) {
show()
if (!isFlvUrl) {
// 打开指定ip的摄像头直播流
CallerMonitorManager.openCameraStream(url, { flvUrl ->
gsyVideoPlay(flvUrl)
}) {
ToastUtils.showShort(it.message)
}
} else {
gsyVideoPlay(url)
}
}
override fun dismiss() {
super.dismiss()
stopLive()
}
private fun initVideoPlayer() {
val list: MutableList<VideoOptionModel> = ArrayList()
list.add(VideoOptionModel(IjkMediaPlayer.OPT_CATEGORY_PLAYER, "reconnect", 3))
GSYVideoManager.instance().optionModelList = list
GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL)
PlayerFactory.setPlayManager(IjkPlayerManager::class.java)
roadVideoPlayer.setPlayListener(object : SimpleVideoPlayer.PlayListener {
override fun onPlayEvent(event: Int) {
CallerLogger.d("${SceneConstant.M_HMI}$TAG", "onPlayEvent: event is:$event")
when (event) {
SimpleVideoPlayer.PLAY_EVT_PLAY_LOADING -> {
// 会出现临时中断后又可以继续播放,需要停掉倒计时
}
SimpleVideoPlayer.PLAY_EVT_PLAY_BEGIN -> {
roadVideoPB.visibility = View.GONE
roadVideoPlayer.visibility = View.VISIBLE
}
else -> {
CallerLogger.w("${SceneConstant.M_HMI}$TAG", "播放视频异常,event is:$event")
}
}
}
})
roadVideoPB.indeterminateDrawable.colorFilter = PorterDuffColorFilter(
ContextCompat.getColor(context, R.color.notice_blue),
PorterDuff.Mode.MULTIPLY
)
}
private fun gsyVideoPlay(flvUrl: String) {
gsyVideoOptionBuilder.setUrl(flvUrl)
.setCacheWithPlay(false)
.setAutoFullWithSize(false)
.setIsTouchWigetFull(false)
.setIsTouchWiget(false)
.setPlayTag(TAG).build(roadVideoPlayer)
roadVideoPlayer.startButton.performClick()
}
private fun stopLive() {
try {
GSYVideoManager.releaseAllVideos()
} catch (e: Exception) {
e.printStackTrace()
}
}
}

View File

@@ -229,7 +229,6 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
final long start = System.currentTimeMillis();
MogoModulesManager.getInstance().init(this);
IMogoHosListenerRegister listenerRegister = CallerMapUIServiceManager.INSTANCE.getHostListenerRegister();
if (listenerRegister != null) {
listenerRegister.registerHostMapListener(EventDispatchCenter.getInstance());
@@ -304,10 +303,9 @@ public class MainActivity extends MvpActivity<MainView, MainPresenter> implement
// 加载 HMI 图层
BaseFragment fragmentHdMap = (BaseFragment) ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_HMI).navigation();
addFragment(fragmentHdMap, fragmentHdMap.getTagName(), R.id.module_main_id_waring_fragment);
// 加载 小地图 图层
BaseFragment fragmentSmpMap = (BaseFragment) ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_SMP).navigation();
addFragment(fragmentSmpMap, fragmentSmpMap.getTagName(), R.id.module_main_id_smp_fragment);
// // 加载 小地图 图层
// BaseFragment fragmentSmpMap = (BaseFragment) ARouter.getInstance().build(MoGoFragmentPaths.PATH_FRAGMENT_SMP).navigation();
// addFragment(fragmentSmpMap, fragmentSmpMap.getTagName(), R.id.module_main_id_smp_fragment);
}
/**

View File

@@ -0,0 +1,43 @@
<?xml version="1.0" encoding="utf-8"?>
<com.mogo.eagle.core.widget.RoundConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:minWidth="1736px"
android:minHeight="974px"
app:roundLayoutRadius="30px"
tools:ignore="MissingDefaultResource">
<com.mogo.eagle.core.widget.media.video.SimpleVideoPlayer
android:id="@+id/roadVideoPlayer"
android:layout_width="1736px"
android:layout_height="974px"
android:visibility="visible"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.core.widget.ContentLoadingProgressBar
android:id="@+id/roadVideoPB"
style="?android:attr/progressBarStyleSmall"
android:layout_width="36dp"
android:layout_height="36dp"
android:visibility="visible"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/roadVideoClose"
android:layout_width="100px"
android:layout_height="100px"
android:layout_marginEnd="42px"
android:layout_marginTop="42px"
android:scaleType="fitXY"
android:src="@drawable/module_push_dialog_close"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent"
/>
</com.mogo.eagle.core.widget.RoundConstraintLayout>