diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index db2c7b8..b762cfb 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -43,6 +43,7 @@
android:name=".ShelfActivity"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
+
= mutableListOf()
- val weightArray = SparseArray()
+ val weightArray = SparseIntArray()
var shelfIndex = 0
// public fun getRealWeight():Double = weightArray[shelfIndex]?:0.0
@@ -124,6 +128,7 @@ class HomeActivity : BaseActivity() {
}
SerialPortManager.send(ACTIVE_CMD)
+
//SerialPortManager.send(DEVICE_INFO_CMD)
}
repeatOnLifecycle(Lifecycle.State.CREATED) {
@@ -296,7 +301,12 @@ class HomeActivity : BaseActivity() {
//获取设备状态
getDeviceInfo(data)
}
-
+ "1001","1002" -> {
+ Log.d(TAG, "receiveSerialPortData,温控信息上报数据:${data}")
+ }
+ "0F02" -> {
+ Log.d(TAG, "receiveSerialPortData,温控信息应答数据:${data}")
+ }
else -> {}
}
}
@@ -378,12 +388,11 @@ class HomeActivity : BaseActivity() {
weightHex = firstByteHex + weightHex.substring(2)
realWeight = -1 * weightHex.toInt()
}
- val realWeightDouble = realWeight / 1000.0
- weightArray.put(index, realWeightDouble)
+ weightArray.put(index, realWeight)
if (index <= 10) {
list.firstOrNull { it.deviceNo == index }?.let {
- it.weight = realWeightDouble
+ it.weight = realWeight.toDouble()
val pos = list.indexOf(it)
shelfAdapter.notifyItemChanged(pos)
Log.d(TAG, "getWeightInfo: deviceNo=${it.deviceNo},realWeight=${realWeight}")
@@ -435,7 +444,7 @@ class HomeActivity : BaseActivity() {
@Suppress("DEPRECATION")
private val shelfAdapter by lazy {
ShelfAdapter(list).apply {
- setOnDebouncedItemClick { adapter, view, position ->
+ setOnItemClickListener { _, _, position ->
shelfIndex = position
lifecycleScope.launch {
// val openCmd = if (list[position].deviceNo in 1..5)
@@ -447,6 +456,7 @@ class HomeActivity : BaseActivity() {
// toast("${list[position].goodsName}柜门开启失败")
// return@launch
// }
+ //SerialPortManager.send(START_CMD)
launch(Intent(this@HomeActivity, ShelfActivity::class.java).also {
it.putExtra(ShelfActivity.SHELF_MODEL, list[position])
}) {
@@ -465,13 +475,13 @@ class HomeActivity : BaseActivity() {
try {
- val submitList = list.sortedBy { it.deviceNo }
- val body = ShelfBody().also {
- it.deviceId = App.deviceId ?: ""
- it.canteenId = App.canteenId
- it.temperature = showTemperatureC
- it.humidity = showHumidity
- it.goodsList = submitList
+ val submitList = list.sortedBy { item-> item.deviceNo }
+ val body = ShelfBody().also { body ->
+ body.deviceId = App.deviceId ?: ""
+ body.canteenId = App.canteenId
+ body.temperature = showTemperatureC
+ body.humidity = showHumidity
+ body.goodsList = submitList
}
Log.d("mzf", "performSync: body:${body.toJsonString()}")
lifecycleScope.launch {
@@ -553,7 +563,8 @@ class HomeActivity : BaseActivity() {
item?.apply {
goodsId = ""
goodsName = null
- weight = null
+ weight = 0.0
+ weightBak = if (event.weight <= 0.0 ) 0.0 else -1 * event.weight.toDouble()
createTime = null
overdueDay = null
}
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/SettingActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/SettingActivity.kt
new file mode 100644
index 0000000..e478fa0
--- /dev/null
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/SettingActivity.kt
@@ -0,0 +1,68 @@
+package com.shuwei.intelligent.shelves
+
+import android.os.Bundle
+import android.os.Handler
+import android.os.Looper
+import androidx.lifecycle.lifecycleScope
+import com.shuwei.intelligent.shelves.base.BaseActivity
+import com.shuwei.intelligent.shelves.databinding.ActivitySettingBinding
+import com.shuwei.intelligent.shelves.serial.SerialPortManager
+import com.shuwei.intelligent.shelves.utils.KeyboardUtil
+import kotlinx.coroutines.launch
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
+
+class SettingActivity: BaseActivity() {
+
+ private lateinit var binding: ActivitySettingBinding
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ binding = ActivitySettingBinding.inflate(layoutInflater)
+ setBackground()
+ setContentView(binding.root)
+ binding.btnSendCmd.setOnClickListener{
+ val cmd = binding.etInputCmd.text.toString().trim()
+ if (cmd.isBlank()) {
+ return@setOnClickListener
+ }
+ val realCmd = "${HomeActivity.HEADER}0F01${cmd}${HomeActivity.FOOTER}"
+ lifecycleScope.launch {
+ SerialPortManager.send(realCmd)
+ }
+ }
+ binding.ivBack.setOnClickListener { finish() }
+ binding.root.setOnClickListener { v ->
+ KeyboardUtil.hideKeyboard(v)
+ }
+ }
+
+
+ private fun updateDateTime() {
+ val sdf = SimpleDateFormat(ShelfActivity.YYYY_MM_DD__EEEE_HH_MM_SS, Locale.CHINA)
+ val dateTime = sdf.format(Date())
+ val arr = dateTime.split("***")
+ updateLeftStatus(arr[0])
+ updateRightStatus(arr[1])
+ }
+
+ private val handler = Handler(Looper.getMainLooper())
+ private val updateTask = object : Runnable {
+ override fun run() {
+ updateDateTime()
+ handler.postDelayed(this, 1000)
+ }
+ }
+
+ override fun onResume() {
+ super.onResume()
+ hideStatusBar()
+ handler.post(updateTask)
+ }
+
+ override fun onPause() {
+ super.onPause()
+ handler.removeCallbacks(updateTask)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt
index 4efe815..18225a1 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/ShelfActivity.kt
@@ -54,7 +54,7 @@ class ShelfActivity : BaseActivity() {
companion object {
private const val TAG = "ShelfActivity"
- private const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss"
+ const val YYYY_MM_DD__EEEE_HH_MM_SS = "yyyy年MM月dd日 EEEE***HH:mm:ss"
const val SHELF_MODEL = "shelfModel"
const val RECEIVER_DEVICE_INFO = "receiverDeviceInfo"
const val SHELF_WEIGHT = "shelfWeight"
@@ -90,9 +90,9 @@ class ShelfActivity : BaseActivity() {
shelfModel?.let {
binding.tvShelfName.text = it.shelfName
binding.tvFoodName.text = if (it.goodsName.isNullOrBlank()) "-" else it.goodsName
- realWeight = ((it.weight ?: 0.0) * 1000).toInt()
-// realWeight = (HomeActivity.getRealWeight() * 1000).toInt()
- binding.tvFoodWeight.text = "${realWeight}克"
+ realWeight = it.weight?.toInt()?:0
+ binding.tvFoodWeight.text = if(realWeight < 1000) "${realWeight}克" else "%.3f千克".format(realWeight/1000.0)
+ startTime = System.currentTimeMillis()
}
initRecyclerView()
@@ -125,7 +125,7 @@ class ShelfActivity : BaseActivity() {
shelfName = shelfModel?.shelfName,
goodsId = currentGoodsId,
goodsName = list[clickIndex].goodsName,
- weight = realWeight / 1000.0,
+ weight = realWeight.toDouble(),
overdueDay = list[clickIndex].overdueDay,
// createTime = if (shelfModel?.goodsId == currentGoodsId) null else DateTimeUtil.formatDateTime(dateTime = Date())
createTime = DateTimeUtil.formatDateTime(dateTime = Date())
@@ -142,11 +142,12 @@ class ShelfActivity : BaseActivity() {
binding.btnClearZero.setOnClickListener {
clearZero()
}
- binding.btnClearEmpty?.setOnClickListener {
+ binding.btnClearEmpty.setOnClickListener {
+ val tempWeight = shelfModel?.weight?.toInt()?:0
clearZero()
binding.tvFoodName.text = "-"
- binding.tvFoodWeight.text = "0克"
- EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo))
+ //binding.tvFoodWeight.text = "0克"
+ EventBus.getDefault().post(ClearShelfEvent(shelfModel!!.deviceNo, tempWeight))
}
lifecycleScope.launch {
SerialPortManager.send(DEVICE_INFO_CMD)
@@ -358,7 +359,12 @@ class ShelfActivity : BaseActivity() {
@Subscribe(threadMode = ThreadMode.MAIN)
public fun receiveWeightEvent(event: SendWeightEvent) {
if (event.shelfNo == (shelfModel?.deviceNo ?: 0)) {
- binding.tvFoodWeight.text = "${event.weight}克"
+ val intervalTime = System.currentTimeMillis() - startTime
+ Log.d(TAG, "receiveWeightEvent: ${event.shelfNo}号货架重量数据获取间隔时间为:$intervalTime")
+ val weight = event.weight
+ binding.tvFoodWeight.text = if(weight < 1000) "${weight}克" else "%.3f千克".format(weight/1000.0)
+ startTime = System.currentTimeMillis()
+ window.decorView.postDelayed({ Loading.dismiss() }, 1000)
}
}
@@ -375,10 +381,11 @@ class ShelfActivity : BaseActivity() {
// binding.tvFoodWeight.text = "${realWeight}克"
SerialPortManager.send(DEVICE_INFO_CMD)
+ startTime = System.currentTimeMillis()
Loading.show(this@ShelfActivity)
- window.decorView.postDelayed({ Loading.dismiss() }, 5000)
+// window.decorView.postDelayed({ Loading.dismiss() }, 5000)
}
KeyboardUtil.hideKeyboard(window.decorView)
}
-
+ private var startTime = 0L
}
\ No newline at end of file
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt
index b10957f..218150e 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/adapter/ShelfAdapter.kt
@@ -14,7 +14,6 @@ import com.shuwei.intelligent.shelves.utils.DateTimeUtil
import com.shuwei.intelligent.shelves.utils.ext.gone
import com.shuwei.intelligent.shelves.utils.ext.visible
import java.util.Date
-import kotlin.math.roundToInt
class ShelfAdapter(list: MutableList) :
BaseQuickAdapter(list) {
@@ -37,7 +36,7 @@ class ShelfAdapter(list: MutableList) :
override fun onBindViewHolder(holder: VH, position: Int, item: ShelfModel?) {
val shelfNo = item!!.deviceNo
item.shelfName = "货架-${if (shelfNo < 10) "0${shelfNo}" else "$shelfNo"}"
- val weight = item.weight ?: 0.toDouble()
+ val weight = item.weight ?: 0.0
val binding = holder.binding
if (item.overdueDay.isNullOrBlank()) {
binding.ivStaleFood.gone()
@@ -63,7 +62,8 @@ class ShelfAdapter(list: MutableList) :
binding.tvFoodWeight.run {
setTextColor(getColor(R.color.food_weight_orange))
//val showWeight = if (weight == 0.toDouble()) "0克" else "%.3f千克".format(weight)
- text = "${(weight*1000).roundToInt()}克"
+ text = if(weight < 1000) "${weight.toInt()}克" else "%.3f千克".format(weight/1000.0)
+ //"${(weight*1000).roundToInt()}克"
}
//val isBlankShelf = weight <= 0
val isBlankShelf = item.goodsName.isNullOrBlank()
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt b/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt
index 3528ccd..a453d57 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/base/BaseActivity.kt
@@ -17,9 +17,11 @@ import com.shuwei.intelligent.shelves.HomeActivity
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_CLOSE
import com.shuwei.intelligent.shelves.HomeActivity.Companion.LIGHT_OPEN
import com.shuwei.intelligent.shelves.R
+import com.shuwei.intelligent.shelves.SettingActivity
import com.shuwei.intelligent.shelves.databinding.ActivityBaseBinding
import com.shuwei.intelligent.shelves.serial.SerialPortManager
import com.shuwei.intelligent.shelves.utils.ext.clickWithDebounce
+import com.shuwei.intelligent.shelves.utils.ext.startActivity
import kotlinx.coroutines.launch
@Suppress("DEPRECATION")
@@ -146,6 +148,9 @@ open class BaseActivity : AppCompatActivity() {
val tag = binding.tvLeftStatus.tag?.toString()?.toBoolean() ?: true
switchLight(tag.not())
}
+ binding.tvRightStatus.clickWithDebounce {
+ startActivity { }
+ }
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/model/SendWeightEvent.kt b/app/src/main/java/com/shuwei/intelligent/shelves/model/SendWeightEvent.kt
index 4ac15d0..ee3d717 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/model/SendWeightEvent.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/model/SendWeightEvent.kt
@@ -7,4 +7,4 @@ data class SendWeightEvent(
data class WeightEvent(var weight: Int)
-data class ClearShelfEvent(var shelfNo: Int)
\ No newline at end of file
+data class ClearShelfEvent(var shelfNo: Int, var weight: Int)
\ No newline at end of file
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt
index f70759c..ec74d88 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/model/ShelfModel.kt
@@ -10,6 +10,7 @@ data class ShelfModel(
var goodsName: String? = null,
var deviceId: String? = null,
var weight: Double? = null,
+ var weightBak: Double? = null,
var createTime: String? = null,
var overdueDay: String? = null,
var temperature: String? = null,
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/net/LoadingDialog.kt b/app/src/main/java/com/shuwei/intelligent/shelves/net/LoadingDialog.kt
index e6dd43c..2a63c93 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/net/LoadingDialog.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/net/LoadingDialog.kt
@@ -1,5 +1,6 @@
package com.shuwei.intelligent.shelves.net
+import android.app.Activity
import android.app.Dialog
import android.content.Context
import android.graphics.Color
@@ -15,13 +16,15 @@ object Loading {
private var dialog: LoadingDialog? = null
- fun show(context: Context) {
+ fun show(activity: Activity) {
+ if (activity.isFinishing || activity.isDestroyed) {
+ return
+ }
if (dialog?.isShowing == true) {
dialog?.dismiss()
}
-
if (dialog == null) {
- dialog = LoadingDialog(context)
+ dialog = LoadingDialog(activity)
}
dialog?.show()
}
@@ -47,12 +50,13 @@ class LoadingDialog(
binding.tvMessage.text = message
setContentView(binding.root)
setCancelable(true)
+ setCanceledOnTouchOutside(true)
window?.run {
setBackgroundDrawable(Color.TRANSPARENT.toDrawable())
- setFlags(
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
- WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
- );
+// setFlags(
+// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
+// WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
+// )
}
setOnDismissListener {
onDismiss()
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt b/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt
index 03b843e..d633151 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/task/SyncTask.kt
@@ -38,6 +38,11 @@ class SyncTask(appContext: Context, workerParams: WorkerParameters) :
val list = HomeActivity.list
Log.d(TAG, "performSync: list:${list.toJsonString()}")
val submitList = list.sortedBy { it.deviceNo }
+ submitList.forEach {
+ if (it.goodsId.isBlank()) {
+ it.weight = it.weightBak
+ }
+ }
// submitList.forEach {
// it.temperature = HomeActivity.showTemperatureC
// it.humidity = HomeActivity.showHumidity
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/task/TaskManager.kt b/app/src/main/java/com/shuwei/intelligent/shelves/task/TaskManager.kt
index 2f544a7..34aeeb0 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/task/TaskManager.kt
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/task/TaskManager.kt
@@ -14,6 +14,7 @@ object TaskManager {
val nextRequest = OneTimeWorkRequestBuilder()
.setInitialDelay(2, TimeUnit.MINUTES)
// .setInitialDelay(30, TimeUnit.SECONDS)
+// .setInitialDelay(10, TimeUnit.MINUTES)
// .setInputData(inputData)
.build()
WorkManager.getInstance(App.getInstance())
diff --git a/app/src/main/java/com/shuwei/intelligent/shelves/utils/AppUtil.java b/app/src/main/java/com/shuwei/intelligent/shelves/utils/AppUtil.java
index af3b846..dd9317c 100644
--- a/app/src/main/java/com/shuwei/intelligent/shelves/utils/AppUtil.java
+++ b/app/src/main/java/com/shuwei/intelligent/shelves/utils/AppUtil.java
@@ -406,7 +406,8 @@ public class AppUtil {
*/
@SuppressLint("MissingPermission")
public static String getUDID(Context context) {
- return "test111";
+ return "SWZC-HG-001";
+ //"test111";
// String androidID = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
// if (!androidID.equals("")) {
// try {
diff --git a/app/src/main/res/layout-sw600dp/activity_shelf.xml b/app/src/main/res/layout-sw600dp/activity_shelf.xml
index 217889e..aca4625 100644
--- a/app/src/main/res/layout-sw600dp/activity_shelf.xml
+++ b/app/src/main/res/layout-sw600dp/activity_shelf.xml
@@ -35,10 +35,10 @@
android:layout_width="wrap_content"
android:layout_height="60dp"
android:layout_marginTop="24dp"
+ android:fontFamily="sans-serif-medium"
android:gravity="center"
android:textColor="@color/bg_page"
android:textSize="30sp"
- android:fontFamily="sans-serif-medium"
tools:text="货架 - 03" />
-
-
-
@@ -167,16 +152,16 @@
android:layout_height="60dp"
android:layout_marginEnd="24dp"
android:background="@null"
+ android:fontFamily="sans-serif-medium"
android:hint="输入食材名称"
- android:maxLines="1"
- android:inputType="text"
- android:text=""
android:imeOptions="actionSearch"
- android:textColor="@color/food_name_black"
+ android:inputType="text"
+ android:maxLines="1"
android:paddingStart="1dp"
android:paddingEnd="1dp"
+ android:text=""
+ android:textColor="@color/food_name_black"
android:textColorHint="#B4BEC8"
- android:fontFamily="sans-serif-medium"
android:textSize="30sp"
tools:ignore="Autofill,HardcodedText,TextFields" />
@@ -184,8 +169,8 @@
+ android:layout_marginTop="24dp"
+ android:layout_weight="1">
+ tools:itemCount="10"
+ tools:listitem="@layout/list_item_search" />
+ android:visibility="gone" />
-
-
+ android:layout_height="wrap_content"
+ android:gravity="center_vertical"
+ android:orientation="horizontal">
+
+
+
+
+
+
diff --git a/app/src/main/res/layout/activity_setting.xml b/app/src/main/res/layout/activity_setting.xml
new file mode 100644
index 0000000..eddde70
--- /dev/null
+++ b/app/src/main/res/layout/activity_setting.xml
@@ -0,0 +1,71 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/activity_shelf.xml b/app/src/main/res/layout/activity_shelf.xml
index e2a1ca6..57d080c 100644
--- a/app/src/main/res/layout/activity_shelf.xml
+++ b/app/src/main/res/layout/activity_shelf.xml
@@ -110,20 +110,6 @@
android:src="@drawable/ic_back_512"
tools:ignore="ContentDescription" />
-
-
@@ -225,27 +211,57 @@
android:visibility="gone" />
-
-
+ android:layout_height="wrap_content"
+ android:orientation="horizontal"
+ android:gravity="center_vertical">
+
+
+
+
+
+