From 6caf9eb0e1ecc6b640d82de054496f05704bb649 Mon Sep 17 00:00:00 2001 From: xiaowusky Date: Tue, 27 Jun 2023 14:39:12 +0800 Subject: [PATCH] =?UTF-8?q?desc:=E4=BA=91=E7=AB=AF=E5=90=8C=E6=AD=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../java/com/yinuo/safetywatcher/TestUtils.kt | 5 +- .../watcher/constant/Constants.kt | 5 +- .../safetywatcher/watcher/net/DevicesApi.kt | 14 +++-- .../safetywatcher/watcher/ui/CloudActivity.kt | 51 +++++++++++++------ .../com/common/commonlib/db/dao/GasDao.kt | 4 ++ 5 files changed, 58 insertions(+), 21 deletions(-) diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index ce19af4..c9829eb 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -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() { override fun onResult(result: BaseResponse) { diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt index fb96dfc..d450d2f 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/constant/Constants.kt @@ -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" \ No newline at end of file +const val NAMESPACE_ANDROID = "http://schemas.android.com/apk/res/android" + +// 云同步时,20条数据已上传 +const val GAS_CLOUD_UPLOAD_SIZE_ONCE = 20; \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt index 5d96609..b4e0622 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/net/DevicesApi.kt @@ -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(Api::class.java) { observe(api.updateTrafficInfo(trafficReqInfo), null) } - fun uploadGasData(gasList: List = emptyList()) { - val gasReq = GasRequest(detections = gasList) - observe(api.uploadGasData(gasReq), null) + fun uploadGasData( + gasList: List = emptyList(), + callBack: RequestResultCallBack + ) { + val detections = arrayListOf() + gasList.forEach { + detections.add(GasReqBean(it)) + } + val gasReq = GasRequest(detections = detections) + observe(api.uploadGasData(gasReq), callBack) } fun getDetectionLastTime(callBack: RequestResultCallBack) { diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt index 582c375..acb02fb 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/CloudActivity.kt @@ -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() + val tempList = arrayListOf() gasList.forEach { - tempList.add(GasReqBean(it)) - if (tempList.size == 10) { - val upLoadList = arrayListOf() - upLoadList.addAll(tempList) + tempList.add(it) + if (tempList.size == GAS_CLOUD_UPLOAD_SIZE_ONCE) { + val cloneList: ArrayList = tempList.clone() as ArrayList + 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) : + RequestResultCallBack() { + 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") + } } } \ No newline at end of file diff --git a/library-common/src/main/java/com/common/commonlib/db/dao/GasDao.kt b/library-common/src/main/java/com/common/commonlib/db/dao/GasDao.kt index 282351c..9023bb1 100644 --- a/library-common/src/main/java/com/common/commonlib/db/dao/GasDao.kt +++ b/library-common/src/main/java/com/common/commonlib/db/dao/GasDao.kt @@ -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) } \ No newline at end of file