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.entity.Gas
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.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestResultCallBack
@ -85,8 +86,8 @@ object TestUtils {
context.startActivity(intent)
}
fun testUploadFile(uploadApi: UploadFileApi, path: String, commonDialog: CommonDialog?) {
val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4"
fun testUploadFile(uploadApi: UploadFileApi, video: Video, commonDialog: CommonDialog?) {
val path = video.path
uploadApi.singleUpload(path, System.currentTimeMillis(), object :
RequestResultCallBack<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 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
import com.common.commonlib.db.entity.Gas
import com.common.commonlib.net.BaseObserve
import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestNoResultCallBack
@ -41,9 +42,16 @@ class DevicesApi : BaseObserve<DevicesApi.Api>(Api::class.java) {
observe(api.updateTrafficInfo(trafficReqInfo), null)
}
fun uploadGasData(gasList: List<GasReqBean> = emptyList()) {
val gasReq = GasRequest(detections = gasList)
observe(api.uploadGasData(gasReq), null)
fun uploadGasData(
gasList: List<Gas> = emptyList(),
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>) {

@ -3,15 +3,18 @@
package com.yinuo.safetywatcher.watcher.ui
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.TestUtils
import com.yinuo.safetywatcher.databinding.ActivityCloudBinding
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.constant.GAS_CLOUD_UPLOAD_SIZE_ONCE
import com.yinuo.safetywatcher.watcher.net.DevicesApi
import com.yinuo.safetywatcher.watcher.net.UploadFileApi
import kotlinx.coroutines.DelicateCoroutinesApi
@ -103,18 +106,17 @@ class CloudActivity : NoOptionsActivity() {
private fun getSensorDataUpload(cloudTime: Long) {
GlobalScope.launch {
val gasList = DBUtils.gasDao().getAllBySyncFlagOrTime(false, cloudTime)
val tempList = arrayListOf<GasReqBean>()
val tempList = arrayListOf<Gas>()
gasList.forEach {
tempList.add(GasReqBean(it))
if (tempList.size == 10) {
val upLoadList = arrayListOf<GasReqBean>()
upLoadList.addAll(tempList)
tempList.add(it)
if (tempList.size == GAS_CLOUD_UPLOAD_SIZE_ONCE) {
val cloneList: ArrayList<Gas> = tempList.clone() as ArrayList<Gas>
devicesApi.uploadGasData(cloneList, UploadGasCallback(tempList))
tempList.clear()
devicesApi.uploadGasData(upLoadList)
}
}
if (tempList.isNotEmpty()) {
devicesApi.uploadGasData(tempList)
devicesApi.uploadGasData(tempList, UploadGasCallback(tempList))
}
}
}
@ -124,13 +126,32 @@ class CloudActivity : NoOptionsActivity() {
val videoDao = DBUtils.videoDao()
val videoList = videoDao.getAllByTime(cloudTime, System.currentTimeMillis())
// 上传
videoList?.forEach {
uploadFile(it.path)
videoList.forEach {
uploadFile(it)
}
}
}
private fun uploadFile(path: String) {
TestUtils.testUploadFile(uploadApi, path, loadingDialog)
private fun uploadFile(video: Video) {
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.Insert
import androidx.room.Query
import androidx.room.Update
import com.common.commonlib.db.entity.Gas
@Dao
@ -25,4 +26,7 @@ interface GasDao {
@Delete
suspend fun delete(gas: Gas)
@Update
suspend fun update(gas: Gas)
}
Loading…
Cancel
Save