|  |  |  | @ -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) { | 
		
	
	
		
			
				
					|  |  |  | 
 |