|
|
|
@ -1,3 +1,5 @@
|
|
|
|
|
@file:OptIn(DelicateCoroutinesApi::class)
|
|
|
|
|
|
|
|
|
|
package com.yinuo.safetywatcher.watcher.ui
|
|
|
|
|
|
|
|
|
|
import android.view.View
|
|
|
|
@ -6,8 +8,12 @@ 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.yinuo.safetywatcher.watcher.net.api.UploadFileApi
|
|
|
|
|
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
|
|
|
|
|
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.net.DevicesApi
|
|
|
|
|
import com.yinuo.safetywatcher.watcher.net.UploadFileApi
|
|
|
|
|
import kotlinx.coroutines.DelicateCoroutinesApi
|
|
|
|
|
import kotlinx.coroutines.GlobalScope
|
|
|
|
|
import kotlinx.coroutines.launch
|
|
|
|
@ -21,6 +27,10 @@ class CloudActivity : NoOptionsActivity() {
|
|
|
|
|
UploadFileApi()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private val devicesApi by lazy {
|
|
|
|
|
DevicesApi()
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun getTopBarTitle(): String? {
|
|
|
|
|
return getString(R.string.cloud)
|
|
|
|
|
}
|
|
|
|
@ -52,32 +62,72 @@ class CloudActivity : NoOptionsActivity() {
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun uploadVideo() {
|
|
|
|
|
//TODO 1.拿到云端最新数据时间
|
|
|
|
|
val cloudTime = 0L
|
|
|
|
|
// 2. 拿到待上传文件列表
|
|
|
|
|
val fileList = getFileList(cloudTime)
|
|
|
|
|
// 上传
|
|
|
|
|
fileList?.forEach {
|
|
|
|
|
uploadFile(it)
|
|
|
|
|
}
|
|
|
|
|
// TODO 删除
|
|
|
|
|
uploadFile("")
|
|
|
|
|
// 1.拿到云端最新数据时间
|
|
|
|
|
devicesApi.getVideoLastTime(object : RequestResultCallBack<LastTimeResponse>() {
|
|
|
|
|
override fun onResult(result: LastTimeResponse) {
|
|
|
|
|
if (result.isOk()) {
|
|
|
|
|
val cloudTime = result.data
|
|
|
|
|
// 2. 拿到待上传文件列表 上传
|
|
|
|
|
getFileListAndUpload(cloudTime)
|
|
|
|
|
} else {
|
|
|
|
|
LogUtils.e("getVideoLastTime error code = ${result.code}")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onError(error: String?) {
|
|
|
|
|
LogUtils.e(error)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
@OptIn(DelicateCoroutinesApi::class)
|
|
|
|
|
private fun uploadSensorData() {
|
|
|
|
|
// 1.拿到云端最新数据时间
|
|
|
|
|
devicesApi.getVideoLastTime(object : RequestResultCallBack<LastTimeResponse>() {
|
|
|
|
|
override fun onResult(result: LastTimeResponse) {
|
|
|
|
|
if (result.isOk()) {
|
|
|
|
|
val cloudTime = result.data
|
|
|
|
|
// 2. 查询本地数据库中该时间之后的数据
|
|
|
|
|
// 3. 上传数据给服务器
|
|
|
|
|
getSensorDataUpload(cloudTime)
|
|
|
|
|
} else {
|
|
|
|
|
LogUtils.e("getVideoLastTime error code = ${result.code}")
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
override fun onError(error: String?) {
|
|
|
|
|
LogUtils.e(error)
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun getSensorDataUpload(cloudTime: Long) {
|
|
|
|
|
GlobalScope.launch {
|
|
|
|
|
//TODO 1.拿到云端最新数据时间
|
|
|
|
|
val cloudTime = 0L
|
|
|
|
|
// 2. 查询本地数据库中该时间之后的数据
|
|
|
|
|
val gasList = DBUtils.gasDao().getAllBySyncFlagOrTime(false, cloudTime)
|
|
|
|
|
// 3. 上传数据给服务器
|
|
|
|
|
|
|
|
|
|
val tempList = arrayListOf<GasReqBean>()
|
|
|
|
|
gasList.forEach {
|
|
|
|
|
tempList.add(GasReqBean(it))
|
|
|
|
|
if (tempList.size == 10) {
|
|
|
|
|
val upLoadList = arrayListOf<GasReqBean>()
|
|
|
|
|
upLoadList.addAll(tempList)
|
|
|
|
|
tempList.clear()
|
|
|
|
|
devicesApi.uploadGasData(upLoadList)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (tempList.isNotEmpty()) {
|
|
|
|
|
devicesApi.uploadGasData(tempList)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun getFileList(cloudTime: Long): List<String>? {
|
|
|
|
|
return null
|
|
|
|
|
private fun getFileListAndUpload(cloudTime: Long) {
|
|
|
|
|
GlobalScope.launch {
|
|
|
|
|
val videoDao = DBUtils.videoDao()
|
|
|
|
|
val videoList = videoDao.getAllByTime(cloudTime, System.currentTimeMillis())
|
|
|
|
|
// 上传
|
|
|
|
|
videoList?.forEach {
|
|
|
|
|
uploadFile(it.path)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
private fun uploadFile(path: String) {
|
|
|
|
|