desc:为了演示,修改一番,不能说完全没用

main
xiaowusky 2 years ago
parent efa1dd905b
commit 5f64b44e5f

@ -1,13 +1,22 @@
package com.yinuo.safetywatcher package com.yinuo.safetywatcher
import android.app.Activity
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.net.Uri import android.net.Uri
import android.os.Build import android.os.Build
import android.provider.Settings import android.provider.Settings
import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestResultCallBack
import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.db.DBUtils
import com.yinuo.safetywatcher.watcher.db.entity.Gas import com.yinuo.safetywatcher.watcher.db.entity.Gas
import com.yinuo.safetywatcher.watcher.db.entity.GasType import com.yinuo.safetywatcher.watcher.db.entity.GasType
import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
import com.yinuo.safetywatcher.watcher.utils.DateUtils
import com.yinuo.safetywatcher.xls.SimpleCellValue
import com.yinuo.safetywatcher.xls.utils.ExcelUtils
import com.yinuo.safetywatcher.xls.utils.PathUtils
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -58,8 +67,37 @@ object TestUtils {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
// 经过测试,只有在 Android 10 及以上加包名才有效果 // 经过测试,只有在 Android 10 及以上加包名才有效果
// 如果在 Android 10 以下加包名会导致无法跳转 // 如果在 Android 10 以下加包名会导致无法跳转
intent.data = Uri.parse("package:" + context.getPackageName()) intent.data = Uri.parse("package:" + context.packageName)
} }
context.startActivity(intent) context.startActivity(intent)
} }
fun testUploadFile(uploadApi: UploadFileApi, path: String, commonDialog: CommonDialog) {
val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4"
uploadApi.singleUpload(path, System.currentTimeMillis(), object :
RequestResultCallBack<BaseResponse>() {
override fun onResult(result: BaseResponse) {
commonDialog.dismiss()
}
override fun onError(error: String?) {
commonDialog.dismiss()
}
})
}
fun testExportExcel(context: Context, 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)
}
ExcelUtils.writeStringListToExcel(allData, context);
commonDialog.dialogBinding?.root?.postDelayed({ commonDialog.dismiss() }, 1000)
}
} }

@ -10,6 +10,7 @@ abstract class BaseRvAdapter<T, B : ViewBinding, VH : BaseRvAdapter.BaseViewHold
RecyclerView.Adapter<VH>() { RecyclerView.Adapter<VH>() {
private val mDatas = mutableListOf<T>() private val mDatas = mutableListOf<T>()
val _data = mDatas;
fun setData(values: List<T>) { fun setData(values: List<T>) {
mDatas.clear() mDatas.clear()

@ -7,4 +7,4 @@ const val ONE_DAY_MS = 24 * ONE_HOUR_MS
const val MAX_QUERY_TIME_INTERVAL = ONE_DAY_MS const val MAX_QUERY_TIME_INTERVAL = ONE_DAY_MS
// 默认查询时间间隔 // 默认查询时间间隔
const val DEFAULT_QUERY_TIME_INTERVAL = ONE_HOUR_MS const val DEFAULT_QUERY_TIME_INTERVAL = ONE_HOUR_MS * 6

@ -1,15 +1,13 @@
package com.yinuo.safetywatcher.watcher.ui package com.yinuo.safetywatcher.watcher.ui
import android.view.View import android.view.View
import com.common.commonlib.net.bean.BaseResponse
import com.common.commonlib.net.callback.RequestResultCallBack
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.TestUtils
import com.yinuo.safetywatcher.databinding.ActivityCloudBinding import com.yinuo.safetywatcher.databinding.ActivityCloudBinding
import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity
import com.yinuo.safetywatcher.watcher.db.DBUtils import com.yinuo.safetywatcher.watcher.db.DBUtils
import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi import com.yinuo.safetywatcher.watcher.net.api.UploadFileApi
import com.yinuo.safetywatcher.watcher.ui.view.SyncDialog import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
import com.yinuo.safetywatcher.xls.utils.PathUtils
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -24,7 +22,7 @@ class CloudActivity : NoOptionsActivity() {
} }
private val syncDialog by lazy { private val syncDialog by lazy {
SyncDialog() CommonDialog()
} }
override fun getTopBarTitle(): String? { override fun getTopBarTitle(): String? {
@ -91,16 +89,6 @@ class CloudActivity : NoOptionsActivity() {
} }
private fun uploadFile(path: String) { private fun uploadFile(path: String) {
val path = PathUtils.getExternalStorageDirectory() + "/test2.mp4" TestUtils.testUploadFile(uploadApi, path, syncDialog)
uploadApi.singleUpload(path, System.currentTimeMillis(), object :
RequestResultCallBack<BaseResponse>() {
override fun onResult(result: BaseResponse) {
syncDialog.dismiss()
}
override fun onError(error: String?) {
syncDialog.dismiss()
}
})
} }
} }

@ -6,6 +6,7 @@ import androidx.activity.result.contract.ActivityResultContracts
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.TestUtils
import com.yinuo.safetywatcher.databinding.ActivityQueryDataBinding import com.yinuo.safetywatcher.databinding.ActivityQueryDataBinding
import com.yinuo.safetywatcher.watcher.ui.adapter.HistoryDataAdapter import com.yinuo.safetywatcher.watcher.ui.adapter.HistoryDataAdapter
import com.yinuo.safetywatcher.watcher.base.BaseActivity import com.yinuo.safetywatcher.watcher.base.BaseActivity
@ -15,6 +16,7 @@ import com.yinuo.safetywatcher.watcher.db.DBUtils
import com.yinuo.safetywatcher.watcher.db.entity.Gas import com.yinuo.safetywatcher.watcher.db.entity.Gas
import com.yinuo.safetywatcher.watcher.utils.DateUtils import com.yinuo.safetywatcher.watcher.utils.DateUtils
import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar import com.yinuo.safetywatcher.watcher.ui.view.CommonTopBar
import com.yinuo.safetywatcher.watcher.ui.view.CommonDialog
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
@ -24,11 +26,15 @@ class QueryDataActivity : BaseActivity() {
ActivityQueryDataBinding.inflate(layoutInflater) ActivityQueryDataBinding.inflate(layoutInflater)
} }
private val exportDialog by lazy {
CommonDialog(R.string.export_data_tip)
}
override fun onOptionClick(type: Int, target: View) { override fun onOptionClick(type: Int, target: View) {
if (0 == type) { if (0 == type) {
queryData()
} else if (1 == type) { } else if (1 == type) {
doExportData()
} }
} }
@ -154,13 +160,6 @@ class QueryDataActivity : BaseActivity() {
var gasValue = 0.0 var gasValue = 0.0
var startGas: Gas? = null var startGas: Gas? = null
list.forEachIndexed { index, gas -> list.forEachIndexed { index, gas ->
// 不能整除的时候,最后一个特殊处理
if (list.size - 1 == index) {
if (gasValue != 0.0) {
startGas!!.gasValue = gasValue / (list.size % step)
newMapList?.add(startGas!!)
}
}
if (index % step == 0) { if (index % step == 0) {
if (gasValue != 0.0) { if (gasValue != 0.0) {
startGas!!.gasValue = gasValue / step startGas!!.gasValue = gasValue / step
@ -171,6 +170,15 @@ class QueryDataActivity : BaseActivity() {
} else { } else {
gasValue += gas.gasValue gasValue += gas.gasValue
} }
// 最后一个特殊处理
if (list.size - 1 == index) {
// 不能整除的时候
val dev = if (list.size % step == 0) step else list.size % step
if (gasValue != 0.0) {
startGas!!.gasValue = gasValue / dev
newMapList?.add(startGas!!)
}
}
} }
} }
@ -187,4 +195,9 @@ class QueryDataActivity : BaseActivity() {
} }
} }
} }
private fun doExportData() {
exportDialog.showNow(supportFragmentManager, "export")
TestUtils.testExportExcel(this, mAdapter._data, exportDialog)
}
} }

@ -8,17 +8,21 @@ import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.fragment.app.DialogFragment import androidx.fragment.app.DialogFragment
import com.yinuo.safetywatcher.R
import com.yinuo.safetywatcher.databinding.LayoutSyncDialogBinding import com.yinuo.safetywatcher.databinding.LayoutSyncDialogBinding
class SyncDialog : DialogFragment() { class CommonDialog(private val tipResID:Int = R.string.sync_data_tip) : DialogFragment() {
var dialogBinding: LayoutSyncDialogBinding? = null
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, inflater: LayoutInflater,
container: ViewGroup?, container: ViewGroup?,
savedInstanceState: Bundle? savedInstanceState: Bundle?
): View? { ): View? {
val dialogBinding = LayoutSyncDialogBinding.inflate(inflater, container, false) dialogBinding = LayoutSyncDialogBinding.inflate(inflater, container, false)
return dialogBinding.root dialogBinding!!.tip.text = getString(tipResID)
return dialogBinding!!.root
} }
@Deprecated("Deprecated in Java") @Deprecated("Deprecated in Java")

@ -141,6 +141,7 @@
android:layout_marginTop="@dimen/_100dp" android:layout_marginTop="@dimen/_100dp"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:textSize="@dimen/_30dp" android:textSize="@dimen/_30dp"
android:visibility="gone"
android:textColor="@color/white" android:textColor="@color/white"
android:background="@drawable/sensor_init_btn_bg"/> android:background="@drawable/sensor_init_btn_bg"/>
</RelativeLayout> </RelativeLayout>

@ -12,6 +12,7 @@
android:src="@mipmap/ic_sync" /> android:src="@mipmap/ic_sync" />
<TextView <TextView
android:id="@+id/tip"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="@dimen/_36dp" android:layout_marginTop="@dimen/_36dp"

@ -54,4 +54,5 @@
<string name="error_interval_tip">开始时间必须小于结束时间!请调整</string> <string name="error_interval_tip">开始时间必须小于结束时间!请调整</string>
<string name="no_upan_tip">请先插入U盘!</string> <string name="no_upan_tip">请先插入U盘!</string>
<string name="sync_data_tip">数据同步中</string> <string name="sync_data_tip">数据同步中</string>
<string name="export_data_tip">数据导出中</string>
</resources> </resources>

Loading…
Cancel
Save