|
|
@ -5,20 +5,26 @@ import android.os.Build
|
|
|
|
import android.os.Process
|
|
|
|
import android.os.Process
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View
|
|
|
|
import androidx.annotation.RequiresApi
|
|
|
|
import androidx.annotation.RequiresApi
|
|
|
|
|
|
|
|
import androidx.lifecycle.lifecycleScope
|
|
|
|
import com.common.commonlib.utils.NetworkHelper
|
|
|
|
import com.common.commonlib.utils.NetworkHelper
|
|
|
|
import com.yinuo.library.vlc.IFrameCallBack
|
|
|
|
import com.yinuo.library.vlc.IFrameCallBack
|
|
|
|
import com.yinuo.library.vlc.RtspSurfaceRender2
|
|
|
|
import com.yinuo.library.vlc.RtspSurfaceRender2
|
|
|
|
|
|
|
|
import com.yinuo.library.vlc.TxtOverlay
|
|
|
|
import com.yinuo.library.vlc.utils.LogUtils
|
|
|
|
import com.yinuo.library.vlc.utils.LogUtils
|
|
|
|
import com.yinuo.safetywatcher.R
|
|
|
|
import com.yinuo.safetywatcher.R
|
|
|
|
import com.yinuo.safetywatcher.databinding.ActivityHomeBinding
|
|
|
|
import com.yinuo.safetywatcher.databinding.ActivityHomeBinding
|
|
|
|
import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
|
|
|
|
import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.CAMERA_URL
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.CAMERA_URL
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_CHECK_CAMERA
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_CHECK_CAMERA
|
|
|
|
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_CHECK_SENSOR
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_OPEN_CAMERA
|
|
|
|
import com.yinuo.safetywatcher.watcher.constant.DELAY_TIME_OPEN_CAMERA
|
|
|
|
|
|
|
|
import com.yinuo.safetywatcher.watcher.port.GasUtils
|
|
|
|
import com.yinuo.safetywatcher.watcher.services.HeartbeatService
|
|
|
|
import com.yinuo.safetywatcher.watcher.services.HeartbeatService
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.BatteryHelper
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.SimHelper
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.SimHelper
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.WifiHelper
|
|
|
|
import com.yinuo.safetywatcher.watcher.utils.WifiHelper
|
|
|
|
|
|
|
|
import kotlinx.coroutines.Dispatchers
|
|
|
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
|
|
|
|
|
|
|
|
class HomeActivity : NoOptionsActivity() {
|
|
|
|
class HomeActivity : NoOptionsActivity() {
|
|
|
|
|
|
|
|
|
|
|
@ -28,6 +34,9 @@ class HomeActivity : NoOptionsActivity() {
|
|
|
|
|
|
|
|
|
|
|
|
private var mRender: RtspSurfaceRender2? = null
|
|
|
|
private var mRender: RtspSurfaceRender2? = null
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var mHasCameraData = false
|
|
|
|
|
|
|
|
private var mHasSensorData = false
|
|
|
|
|
|
|
|
|
|
|
|
override val isHome: Boolean
|
|
|
|
override val isHome: Boolean
|
|
|
|
get() = true
|
|
|
|
get() = true
|
|
|
|
|
|
|
|
|
|
|
@ -44,6 +53,7 @@ class HomeActivity : NoOptionsActivity() {
|
|
|
|
initTopbarHelper()
|
|
|
|
initTopbarHelper()
|
|
|
|
HeartbeatService.actionStart(this@HomeActivity)
|
|
|
|
HeartbeatService.actionStart(this@HomeActivity)
|
|
|
|
setForCamera()
|
|
|
|
setForCamera()
|
|
|
|
|
|
|
|
setForSensor()
|
|
|
|
mBinding.apply {
|
|
|
|
mBinding.apply {
|
|
|
|
itemSetting.setOnClickListener {
|
|
|
|
itemSetting.setOnClickListener {
|
|
|
|
startActivity(Intent(this@HomeActivity, SettingActivity::class.java))
|
|
|
|
startActivity(Intent(this@HomeActivity, SettingActivity::class.java))
|
|
|
@ -70,24 +80,53 @@ class HomeActivity : NoOptionsActivity() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 设置摄像头
|
|
|
|
|
|
|
|
*/
|
|
|
|
private fun setForCamera() {
|
|
|
|
private fun setForCamera() {
|
|
|
|
mRender = RtspSurfaceRender2(mBinding.surface)
|
|
|
|
mRender = RtspSurfaceRender2(mBinding.surface)
|
|
|
|
mRender?.setRtspUrl(CAMERA_URL)
|
|
|
|
mRender?.setRtspUrl(CAMERA_URL)
|
|
|
|
mRender?.setFrameCallBack(object : IFrameCallBack {
|
|
|
|
mRender?.setFrameCallBack(object : IFrameCallBack {
|
|
|
|
override fun onFrame() {
|
|
|
|
override fun onFrame() {
|
|
|
|
|
|
|
|
mHasCameraData = true
|
|
|
|
|
|
|
|
changeViewStatus()
|
|
|
|
closeLoadingDialog()
|
|
|
|
closeLoadingDialog()
|
|
|
|
watchCamera(DELAY_TIME_CHECK_CAMERA)
|
|
|
|
watchCamera(DELAY_TIME_CHECK_CAMERA)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
})
|
|
|
|
})
|
|
|
|
// 第一次很慢,所以10秒
|
|
|
|
// 第一次很慢,所以10秒
|
|
|
|
watchCamera(DELAY_TIME_OPEN_CAMERA)
|
|
|
|
watchCamera(DELAY_TIME_OPEN_CAMERA)
|
|
|
|
showLoadingDialog(R.string.connecting_camera, false)
|
|
|
|
showLoadingDialog(R.string.connecting_camera)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 改变View状态
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private fun changeViewStatus() {
|
|
|
|
|
|
|
|
lifecycleScope.launch(Dispatchers.Main) {
|
|
|
|
|
|
|
|
//mHasSensorData = true
|
|
|
|
|
|
|
|
mBinding.errorView.visibility =
|
|
|
|
|
|
|
|
if (!mHasCameraData) View.VISIBLE else View.GONE
|
|
|
|
|
|
|
|
val errorRes = if (!mHasCameraData && !mHasSensorData) R.drawable.ic_nosingal else R.drawable.ic_icon
|
|
|
|
|
|
|
|
mBinding.errorView.setImageResource(errorRes)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// tipView
|
|
|
|
|
|
|
|
mBinding.tipView.visibility = if (!mHasCameraData && mHasSensorData) View.VISIBLE else View.GONE
|
|
|
|
|
|
|
|
mBinding.tipView.setImageBitmap(TxtOverlay.getOverlayBitmap())
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 重启摄像头Runnable
|
|
|
|
|
|
|
|
*/
|
|
|
|
private val reStartCamera: Runnable = Runnable {
|
|
|
|
private val reStartCamera: Runnable = Runnable {
|
|
|
|
if (NetworkHelper.isNetworkConnect(this@HomeActivity)) {
|
|
|
|
|
|
|
|
LogUtils.w("reStartCamera Runnable start")
|
|
|
|
LogUtils.w("reStartCamera Runnable start")
|
|
|
|
showLoadingDialog(R.string.connecting_camera, false)
|
|
|
|
mHasCameraData = false
|
|
|
|
|
|
|
|
changeViewStatus()
|
|
|
|
|
|
|
|
if (NetworkHelper.isNetworkConnect(this@HomeActivity)) {
|
|
|
|
|
|
|
|
if (!isLoadingShowing() && !mHasSensorData) {
|
|
|
|
|
|
|
|
showLoadingDialog(R.string.connecting_camera)
|
|
|
|
|
|
|
|
}
|
|
|
|
mRender?.reStart()
|
|
|
|
mRender?.reStart()
|
|
|
|
watchCamera(DELAY_TIME_OPEN_CAMERA)
|
|
|
|
watchCamera(DELAY_TIME_OPEN_CAMERA)
|
|
|
|
} else {
|
|
|
|
} else {
|
|
|
@ -95,11 +134,47 @@ class HomeActivity : NoOptionsActivity() {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 监视摄像头
|
|
|
|
|
|
|
|
*/
|
|
|
|
private fun watchCamera(time: Int) {
|
|
|
|
private fun watchCamera(time: Int) {
|
|
|
|
mBinding.root.removeCallbacks(reStartCamera)
|
|
|
|
mBinding.root.removeCallbacks(reStartCamera)
|
|
|
|
mBinding.root.postDelayed(reStartCamera, (time * 1000).toLong())
|
|
|
|
mBinding.root.postDelayed(reStartCamera, (time * 1000).toLong())
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 设置传感器
|
|
|
|
|
|
|
|
private fun setForSensor() {
|
|
|
|
|
|
|
|
TxtOverlay.setTipChangeListener {
|
|
|
|
|
|
|
|
// 有传感器数据回调
|
|
|
|
|
|
|
|
mHasSensorData = true
|
|
|
|
|
|
|
|
closeLoadingDialog()
|
|
|
|
|
|
|
|
changeViewStatus()
|
|
|
|
|
|
|
|
watchSensor(DELAY_TIME_CHECK_SENSOR)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
watchSensor(DELAY_TIME_CHECK_SENSOR)
|
|
|
|
|
|
|
|
GasUtils.initPort()
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 监视传感器
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private fun watchSensor(delayTime: Int) {
|
|
|
|
|
|
|
|
mBinding.root.removeCallbacks(watchSensorRunnable)
|
|
|
|
|
|
|
|
mBinding.root.postDelayed(watchSensorRunnable, (delayTime * 1000).toLong())
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
* 监视传感器执行Runnable
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
private val watchSensorRunnable: Runnable = Runnable {
|
|
|
|
|
|
|
|
LogUtils.w("watchSensorRunnable start")
|
|
|
|
|
|
|
|
mHasSensorData = false
|
|
|
|
|
|
|
|
changeViewStatus()
|
|
|
|
|
|
|
|
GasUtils.initPort()
|
|
|
|
|
|
|
|
watchSensor(DELAY_TIME_CHECK_SENSOR)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun initTopbarHelper() {
|
|
|
|
private fun initTopbarHelper() {
|
|
|
|
BatteryHelper.init(this@HomeActivity)
|
|
|
|
BatteryHelper.init(this@HomeActivity)
|
|
|
|
WifiHelper.init(this@HomeActivity)
|
|
|
|
WifiHelper.init(this@HomeActivity)
|
|
|
|