desc:云端同步

main
xiaowusky 2 years ago
parent b880de0928
commit 6caf9eb0e1

@ -8,6 +8,7 @@ import android.provider.Settings
import com.common.commonlib.db.DBUtils import com.common.commonlib.db.DBUtils
import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.Gas
import com.common.commonlib.db.entity.GasType import com.common.commonlib.db.entity.GasType
import com.common.commonlib.db.entity.Video
import com.common.commonlib.db.entity.Warning import com.common.commonlib.db.entity.Warning
import com.common.commonlib.net.bean.BaseResponse import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestResultCallBack import com.common.commonlib.net.callback.RequestResultCallBack
@ -85,8 +86,8 @@ object TestUtils {
context.startActivity(intent) context.startActivity(intent)
} }
fun testUploadFile(uploadApi: UploadFileApi, path: String, commonDialog: CommonDialog?) { fun testUploadFile(uploadApi: UploadFileApi, video: Video, commonDialog: CommonDialog?) {
val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" val path = video.path
uploadApi.singleUpload(path, System.currentTimeMillis(), object : uploadApi.singleUpload(path, System.currentTimeMillis(), object :
RequestResultCallBack<BaseResponse>() { RequestResultCallBack<BaseResponse>() {
override fun onResult(result: BaseResponse) { override fun onResult(result: BaseResponse) {

@ -18,4 +18,7 @@ const val DELAY_TIME_OPEN_CAMERA = 10
//检测重连摄像头延时 //检测重连摄像头延时
const val DELAY_TIME_CHECK_CAMERA = 5 const val DELAY_TIME_CHECK_CAMERA = 5
const val NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android" const val NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android"
// 云同步时20条数据已上传
const val GAS_CLOUD_UPLOAD_SIZE_ONCE = 20;

@ -1,5 +1,6 @@
package com.yinuo.safetywatcher.watcher.net package com.yinuo.safetywatcher.watcher.net
import com.common.commonlib.db.entity.Gas
import com.common.commonlib.net.BaseObserve import com.common.commonlib.net.BaseObserve
import com.common.commonlib.net.bean.BaseResponse import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestNoResultCallBack import com.common.commonlib.net.callback.RequestNoResultCallBack
@ -41,9 +42,16 @@ class DevicesApi : BaseObserve<DevicesApi.Api>(Api::class.java) {
observe(api.updateTrafficInfo(trafficReqInfo), null) observe(api.updateTrafficInfo(trafficReqInfo), null)
} }
fun uploadGasData(gasList: List<GasReqBean> = emptyList()) { fun uploadGasData(
val gasReq = GasRequest(detections = gasList) gasList: List<Gas> = emptyList(),
observe(api.uploadGasData(gasReq), null) callBack: RequestResultCallBack<BaseResponse>
) {
val detections = arrayListOf<GasReqBean>()
gasList.forEach {
detections.add(GasReqBean(it))
}
val gasReq = GasRequest(detections = detections)
observe(api.uploadGasData(gasReq), callBack)
} }
fun getDetectionLastTime(callBack: RequestResultCallBack<LastTimeResponse>) { fun getDetectionLastTime(callBack: RequestResultCallBack<LastTimeResponse>) {

@ -3,15 +3,18 @@
package com.yinuo.safetywatcher.watcher.ui package com.yinuo.safetywatcher.watcher.ui
import android.view.View import android.view.View
import com.common.commonlib.db.DBUtils
import com.common.commonlib.db.entity.Gas
import com.common.commonlib.db.entity.Video
import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestResultCallBack
import com.yinuo.library.vlc.utils.LogUtils
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.TestUtils import com.yinuo.safetywatcher.TestUtils
import com.yinuo.safetywatcher.databinding.ActivityCloudBinding import com.yinuo.safetywatcher.databinding.ActivityCloudBinding
import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
import com.common.commonlib.db.DBUtils
import com.common.commonlib.net.callback.RequestResultCallBack
import com.yinuo.library.vlc.utils.LogUtils
import com.yinuo.safetywatcher.watcher.bean.GasReqBean
import com.yinuo.safetywatcher.watcher.bean.LastTimeResponse import com.yinuo.safetywatcher.watcher.bean.LastTimeResponse
import com.yinuo.safetywatcher.watcher.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE
import com.yinuo.safetywatcher.watcher.net.DevicesApi import com.yinuo.safetywatcher.watcher.net.DevicesApi
import com.yinuo.safetywatcher.watcher.net.UploadFileApi import com.yinuo.safetywatcher.watcher.net.UploadFileApi
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
@ -103,18 +106,17 @@ class CloudActivity : NoOptionsActivity() {
private fun getSensorDataUpload(cloudTime: Long) { private fun getSensorDataUpload(cloudTime: Long) {
GlobalScope.launch { GlobalScope.launch {
val gasList = DBUtils.gasDao().getAllBySyncFlagOrTime(false, cloudTime) val gasList = DBUtils.gasDao().getAllBySyncFlagOrTime(false, cloudTime)
val tempList = arrayListOf<GasReqBean>() val tempList = arrayListOf<Gas>()
gasList.forEach { gasList.forEach {
tempList.add(GasReqBean(it)) tempList.add(it)
if (tempList.size == 10) { if (tempList.size == GAS_CLOUD_UPLOAD_SIZE_ONCE) {
val upLoadList = arrayListOf<GasReqBean>() val cloneList: ArrayList<Gas> = tempList.clone() as ArrayList<Gas>
upLoadList.addAll(tempList) devicesApi.uploadGasData(cloneList, UploadGasCallback(tempList))
tempList.clear() tempList.clear()
devicesApi.uploadGasData(upLoadList)
} }
} }
if (tempList.isNotEmpty()) { if (tempList.isNotEmpty()) {
devicesApi.uploadGasData(tempList) devicesApi.uploadGasData(tempList, UploadGasCallback(tempList))
} }
} }
} }
@ -124,13 +126,32 @@ class CloudActivity : NoOptionsActivity() {
val videoDao = DBUtils.videoDao() val videoDao = DBUtils.videoDao()
val videoList = videoDao.getAllByTime(cloudTime, System.currentTimeMillis()) val videoList = videoDao.getAllByTime(cloudTime, System.currentTimeMillis())
// 上传 // 上传
videoList?.forEach { videoList.forEach {
uploadFile(it.path) uploadFile(it)
} }
} }
} }
private fun uploadFile(path: String) { private fun uploadFile(video: Video) {
TestUtils.testUploadFile(uploadApi, path, loadingDialog) TestUtils.testUploadFile(uploadApi, video, loadingDialog)
}
class UploadGasCallback(private val upLoadList: ArrayList<Gas>) :
RequestResultCallBack<BaseResponse>() {
override fun onResult(result: BaseResponse) {
GlobalScope.launch {
if (result.isOk()) {
val gasDao = DBUtils.gasDao()
upLoadList.forEach {
it.syncFlag = true
gasDao.update(it)
}
}
}
}
override fun onError(error: String?) {
LogUtils.e("UploadGasCallback $error")
}
} }
} }

@ -4,6 +4,7 @@ import androidx.room.Dao
import androidx.room.Delete import androidx.room.Delete
import androidx.room.Insert import androidx.room.Insert
import androidx.room.Query import androidx.room.Query
import androidx.room.Update
import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.Gas
@Dao @Dao
@ -25,4 +26,7 @@ interface GasDao {
@Delete @Delete
suspend fun delete(gas: Gas) suspend fun delete(gas: Gas)
@Update
suspend fun update(gas: Gas)
} }
Loading…
Cancel
Save