desc:导出修改
parent
1a94d22519
commit
aeee3662bf
@ -1,202 +0,0 @@
|
||||
package com.yinuo.safetywatcher
|
||||
|
||||
import android.content.Context
|
||||
import android.content.Intent
|
||||
import android.media.MediaCodecList
|
||||
import android.net.Uri
|
||||
import android.os.Build
|
||||
import android.os.FileUtils
|
||||
import android.provider.Settings
|
||||
import android.util.Log
|
||||
import com.common.commonlib.db.DBUtils
|
||||
import com.common.commonlib.db.entity.Gas
|
||||
import com.common.commonlib.db.entity.Video
|
||||
import com.common.commonlib.db.entity.Warning
|
||||
import com.yinuo.safetywatcher.watcher.net.UploadFileApi
|
||||
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
|
||||
import com.yinuo.safetywatcher.watcher.utils.DateUtils
|
||||
import com.yinuo.safetywatcher.watcher.xls.SimpleCellValue
|
||||
import com.yinuo.safetywatcher.watcher.xls.utils.ExcelUtils
|
||||
import kotlinx.coroutines.GlobalScope
|
||||
import kotlinx.coroutines.launch
|
||||
import org.easydarwin.PushHelper
|
||||
import java.io.BufferedReader
|
||||
import java.io.DataOutputStream
|
||||
import java.io.File
|
||||
import java.io.IOException
|
||||
import java.io.InputStreamReader
|
||||
|
||||
|
||||
object TestUtils {
|
||||
|
||||
|
||||
fun insertData() {
|
||||
getSupportCodec()
|
||||
GlobalScope.launch() {
|
||||
// 构造气体数据
|
||||
val timeMillis = System.currentTimeMillis()
|
||||
|
||||
// 构造告警数据
|
||||
val warningDao = DBUtils.warningDao()
|
||||
val warnings = mutableListOf<Warning>()
|
||||
warnings.add(Warning("CO", 60f, "", timeMillis))
|
||||
warnings.add(Warning("CO", 80f, "", timeMillis - 30 * 1000))
|
||||
warnings.add(Warning("CO2", 80f, "", timeMillis - 30 * 1000))
|
||||
warnings.add(Warning("O2", 10f, "", timeMillis - 90 * 1000))
|
||||
warningDao.insertAll(warnings)
|
||||
}
|
||||
}
|
||||
|
||||
fun requestReadNetworkStats(context: Context) {
|
||||
val intent = Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)
|
||||
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
|
||||
// 经过测试,只有在 Android 10 及以上加包名才有效果
|
||||
// 如果在 Android 10 以下加包名会导致无法跳转
|
||||
intent.data = Uri.parse("package:" + context.packageName)
|
||||
}
|
||||
context.startActivity(intent)
|
||||
}
|
||||
|
||||
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) {
|
||||
// commonDialog?.dismiss()
|
||||
// }
|
||||
//
|
||||
// override fun onError(error: String?) {
|
||||
// commonDialog?.dismiss()
|
||||
// }
|
||||
// })
|
||||
}
|
||||
|
||||
suspend fun testExportExcel(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Gas>,
|
||||
commonDialog: CommonDialog?
|
||||
) {
|
||||
val allData = mutableListOf<List<SimpleCellValue>>()
|
||||
datas.forEach {
|
||||
val row = mutableListOf<SimpleCellValue>()
|
||||
row.add(SimpleCellValue(DateUtils.formatHistoryTime(it.time) ?: ""))
|
||||
row.add(SimpleCellValue(it.gasName))
|
||||
row.add(SimpleCellValue(it.gasValue.toString()))
|
||||
row.add(SimpleCellValue(it.unit))
|
||||
allData.add(row)
|
||||
}
|
||||
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context)
|
||||
commonDialog?.dismiss()
|
||||
}
|
||||
|
||||
|
||||
suspend fun testExportWarnExcel(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Warning>,
|
||||
loadingDialog: CommonDialog?
|
||||
) {
|
||||
val allData = mutableListOf<List<SimpleCellValue>>()
|
||||
datas.forEach {
|
||||
val row = mutableListOf<SimpleCellValue>()
|
||||
row.add(SimpleCellValue(DateUtils.formatHistoryTime(it.startTime) ?: ""))
|
||||
row.add(SimpleCellValue(it.gasName))
|
||||
row.add(SimpleCellValue(it.gasValue.toString()))
|
||||
row.add(SimpleCellValue(it.unit))
|
||||
allData.add(row)
|
||||
}
|
||||
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context, true)
|
||||
loadingDialog?.dismiss()
|
||||
}
|
||||
|
||||
// ShellUtils execCommand()方法
|
||||
fun execCommand(
|
||||
commands: Array<String>,
|
||||
isRoot: Boolean,
|
||||
isNeedResultMsg: Boolean
|
||||
) {
|
||||
var result = -1
|
||||
if (commands.isEmpty()) {
|
||||
return
|
||||
}
|
||||
var process: Process? = null
|
||||
var successResult: BufferedReader? = null
|
||||
var errorResult: BufferedReader? = null
|
||||
var successMsg: StringBuilder? = null
|
||||
var errorMsg: StringBuilder? = null
|
||||
var os: DataOutputStream? = null
|
||||
try {
|
||||
process = Runtime.getRuntime().exec(if (isRoot) "su" else "sh")
|
||||
os = DataOutputStream(process!!.outputStream)
|
||||
for (command in commands) {
|
||||
if (command == null) {
|
||||
continue
|
||||
}
|
||||
|
||||
// do not use os.writeBytes(command), avoid chinese charset error
|
||||
os.write(command.toByteArray())
|
||||
os.writeBytes("\n")
|
||||
os.flush()
|
||||
}
|
||||
os.writeBytes("exit\n")
|
||||
os.flush()
|
||||
result = process.waitFor()
|
||||
// get command result
|
||||
if (isNeedResultMsg) {
|
||||
successMsg = StringBuilder()
|
||||
errorMsg = StringBuilder()
|
||||
successResult = BufferedReader(InputStreamReader(process.inputStream))
|
||||
errorResult = BufferedReader(InputStreamReader(process.errorStream))
|
||||
var s: String?
|
||||
while (successResult.readLine().also { s = it } != null) {
|
||||
successMsg.append(s)
|
||||
}
|
||||
while (errorResult.readLine().also { s = it } != null) {
|
||||
errorMsg.append(s)
|
||||
}
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
e.printStackTrace()
|
||||
} finally {
|
||||
try {
|
||||
os?.close()
|
||||
successResult?.close()
|
||||
errorResult?.close()
|
||||
} catch (e: IOException) {
|
||||
e.printStackTrace()
|
||||
}
|
||||
process?.destroy()
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun testCopyVideo(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Video>,
|
||||
loadingDialog: CommonDialog?
|
||||
) {
|
||||
val usbVideoPath = usbPath + File.separator + "Video"
|
||||
val dFile = File(usbVideoPath);
|
||||
if (!dFile.exists() || !dFile.isDirectory) {
|
||||
dFile.mkdir()
|
||||
}
|
||||
datas.forEach {
|
||||
FileUtils.copy(
|
||||
File(it.path).inputStream(),
|
||||
File(usbVideoPath + "/${it.name}").outputStream()
|
||||
)
|
||||
}
|
||||
loadingDialog?.dismiss()
|
||||
}
|
||||
|
||||
fun getSupportCodec() {
|
||||
val list = MediaCodecList(MediaCodecList.ALL_CODECS)
|
||||
val codecs = list.codecInfos
|
||||
Log.d("cyy", "Decoders:")
|
||||
for (i in codecs.indices) {
|
||||
val codec = codecs[i]
|
||||
Log.d("cyy", codec.name)
|
||||
}
|
||||
}
|
||||
}
|
@ -0,0 +1,74 @@
|
||||
package com.yinuo.safetywatcher.watcher.utils
|
||||
|
||||
import android.content.Context
|
||||
import android.os.FileUtils
|
||||
import com.common.commonlib.db.entity.Gas
|
||||
import com.common.commonlib.db.entity.Video
|
||||
import com.common.commonlib.db.entity.Warning
|
||||
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
|
||||
import com.yinuo.safetywatcher.watcher.xls.SimpleCellValue
|
||||
import com.yinuo.safetywatcher.watcher.xls.utils.ExcelUtils
|
||||
import java.io.File
|
||||
|
||||
object ExportUtils {
|
||||
fun testExportExcel(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Gas>,
|
||||
commonDialog: CommonDialog?
|
||||
): String? {
|
||||
val allData = mutableListOf<List<SimpleCellValue>>()
|
||||
datas.forEach {
|
||||
val row = mutableListOf<SimpleCellValue>()
|
||||
row.add(SimpleCellValue(DateUtils.formatHistoryTime(it.time) ?: ""))
|
||||
row.add(SimpleCellValue(it.gasName))
|
||||
row.add(SimpleCellValue(it.gasValue.toString()))
|
||||
row.add(SimpleCellValue(it.unit))
|
||||
allData.add(row)
|
||||
}
|
||||
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context)
|
||||
commonDialog?.dismiss()
|
||||
return excelPath
|
||||
}
|
||||
|
||||
|
||||
fun testExportWarnExcel(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Warning>,
|
||||
loadingDialog: CommonDialog?
|
||||
): String? {
|
||||
val allData = mutableListOf<List<SimpleCellValue>>()
|
||||
datas.forEach {
|
||||
val row = mutableListOf<SimpleCellValue>()
|
||||
row.add(SimpleCellValue(DateUtils.formatHistoryTime(it.startTime) ?: ""))
|
||||
row.add(SimpleCellValue(it.gasName))
|
||||
row.add(SimpleCellValue(it.gasValue.toString()))
|
||||
row.add(SimpleCellValue(it.unit))
|
||||
allData.add(row)
|
||||
}
|
||||
val excelPath = ExcelUtils.writeStringListToExcel(allData, usbPath, context, true)
|
||||
loadingDialog?.dismiss()
|
||||
return excelPath
|
||||
}
|
||||
|
||||
fun testCopyVideo(
|
||||
context: Context,
|
||||
usbPath: String,
|
||||
datas: MutableList<Video>,
|
||||
loadingDialog: CommonDialog?
|
||||
) {
|
||||
val usbVideoPath = usbPath + File.separator + "Video"
|
||||
val dFile = File(usbVideoPath);
|
||||
if (!dFile.exists() || !dFile.isDirectory) {
|
||||
dFile.mkdir()
|
||||
}
|
||||
datas.forEach {
|
||||
FileUtils.copy(
|
||||
File(it.path).inputStream(),
|
||||
File(usbVideoPath + "/${it.name}").outputStream()
|
||||
)
|
||||
}
|
||||
loadingDialog?.dismiss()
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue