浏览代码

添加演示登录页

Frankensteinly 1 年之前
父节点
当前提交
696158ebb9

+ 3 - 0
app/src/main/AndroidManifest.xml

@@ -21,6 +21,9 @@
         android:supportsRtl="true"
         android:theme="@style/Theme.ISCS"
         tools:targetApi="31">
+        <activity
+            android:name=".activity.PresentationLoginActivity"
+            android:exported="false" />
         <activity
             android:name=".presentation.PresentationActivity"
             android:exported="false" />

+ 4 - 0
app/src/main/java/com/grkj/iscs/activity/MainActivity.kt

@@ -42,5 +42,9 @@ class MainActivity : BaseActivity<ActivityMainBinding>() {
         mBinding?.presentation?.setOnClickListener {
             startActivity(Intent(this, PresentationActivity::class.java))
         }
+
+        mBinding?.presentationLogin?.setOnClickListener {
+            startActivity(Intent(this, PresentationLoginActivity::class.java))
+        }
     }
 }

+ 77 - 0
app/src/main/java/com/grkj/iscs/activity/PresentationLoginActivity.kt

@@ -0,0 +1,77 @@
+package com.grkj.iscs.activity
+
+import android.content.Intent
+import android.os.Environment
+import com.google.gson.Gson
+import com.google.gson.reflect.TypeToken
+import com.grkj.iscs.BusinessManager
+import com.grkj.iscs.base.BaseActivity
+import com.grkj.iscs.databinding.ActivityPresentationLoginBinding
+import com.grkj.iscs.extentions.removeLeadingZeros
+import com.grkj.iscs.extentions.toHexStrings
+import com.grkj.iscs.modbus.ModBusController
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_CARD
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_FINGERPRINT
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_KEY
+import com.grkj.iscs.model.DeviceConst.DEVICE_TYPE_LOCK
+import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_KEY
+import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_LOCK
+import com.grkj.iscs.model.DeviceConst.DOCK_TYPE_PORTABLE
+import com.grkj.iscs.presentation.PresentationActivity
+import com.grkj.iscs.util.FileUtil
+import com.grkj.iscs.util.ToastUtils
+import com.grkj.iscs.util.log.LogUtil
+
+class PresentationLoginActivity : BaseActivity<ActivityPresentationLoginBinding>() {
+
+    val cardList = mutableListOf("267747D5", "34A347D5", "464947D5")
+
+    override val viewBinding: ActivityPresentationLoginBinding
+        get() = ActivityPresentationLoginBinding.inflate(layoutInflater)
+
+    override fun initView() {
+        val path =
+            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath + "/presentation/presentation.txt"
+        val str = FileUtil.readTxt(path)
+
+        if (str.isEmpty()) {
+            ToastUtils.tip("未找到 presentation.txt 文件,请先在手机Download目录创建 presentation 文件夹,并将 presentation.txt 文件放入")
+            return
+        }
+        println("Mac Json : $str")
+        val cardList: List<CardInfoBean> =
+            Gson().fromJson(str, object : TypeToken<List<CardInfoBean>>() {}.type)
+
+        BusinessManager.connectDock(1, true)
+
+        ModBusController.registerStatusListener(this) { res ->
+            (res as List<ByteArray>).forEach { bytes ->
+                val dockBean = ModBusController.updateStatus(bytes) ?: return@forEach
+                when (dockBean.type) {
+                    DOCK_TYPE_PORTABLE -> {
+                        dockBean.deviceList.forEach { deviceBean ->
+                            if (deviceBean.isExist) {
+                                when (deviceBean.type) {
+                                    DEVICE_TYPE_CARD -> {
+                                        ModBusController.readPortalCaseCardRfid(dockBean.addr.toInt() - 1) { res ->
+                                            val rfid = res.copyOfRange(3, 11).toHexStrings(false).removeLeadingZeros()
+                                            println("卡片RFID : $rfid")
+                                            if (cardList.any { it.rfid == rfid }) {
+                                                ToastUtils.tip("登录成功,欢迎 $rfid")
+                                                startActivity(Intent(this, PresentationActivity::class.java))
+                                                return@readPortalCaseCardRfid
+                                            }
+                                            ToastUtils.tip("登录失败,$rfid 没有权限")
+                                        }
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    data class CardInfoBean(val rfid: String, val mac: String)
+}

+ 2 - 7
app/src/main/java/com/grkj/iscs/presentation/PresentationActivity.kt

@@ -58,13 +58,8 @@ class PresentationActivity :
     }
 
     override fun initView() {
-        BusinessManager.connectDock(1, false)
-
-        val path =
-            Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).absolutePath + "/presentation/presentation.txt"
-        val str = FileUtil.readTxt(path)
-
-        println("Mac Json : $str")
+        // TODO 从login页过来的话要注掉
+//        BusinessManager.connectDock(1, false)
 
         mBinding?.siSop?.mOptionList = mSopList.stream().map { it.sop }.collect(Collectors.toList())
         mBinding?.siSop?.setOnSpinnerSelectListener(object : SelectableInput.OnSpinnerSelectListener {

+ 12 - 2
app/src/main/res/layout/activity_main.xml

@@ -60,7 +60,7 @@
             android:layout_height="50dp"
             android:minWidth="0dp"
             android:minHeight="0dp"
-            android:text="AuthPage"
+            android:text="Auth Page"
             android:textSize="10sp"
             android:layout_margin="5dp"/>
 
@@ -88,7 +88,7 @@
     <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:orientation="vertical"
+        android:orientation="horizontal"
         android:gravity="center">
         <Button
             android:id="@+id/presentation"
@@ -99,5 +99,15 @@
             android:text="Presentation"
             android:textSize="10sp"
             android:layout_margin="5dp"/>
+
+        <Button
+            android:id="@+id/presentation_login"
+            android:layout_width="wrap_content"
+            android:layout_height="50dp"
+            android:minWidth="0dp"
+            android:minHeight="0dp"
+            android:text="Presentation Login"
+            android:textSize="10sp"
+            android:layout_margin="5dp"/>
     </LinearLayout>
 </LinearLayout>

+ 18 - 0
app/src/main/res/layout/activity_presentation_login.xml

@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="utf-8"?>
+<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:id="@+id/main"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    tools:context=".activity.PresentationLoginActivity">
+
+    <TextView
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerInParent="true"
+        android:text="@string/presentation_login_tip"
+        android:textColor="@color/main_color"
+        android:textSize="30sp" />
+
+</RelativeLayout>

+ 2 - 0
app/src/main/res/values/strings.xml

@@ -46,4 +46,6 @@
     <string name="presentation_hint_locker">请选择上锁人</string>
     <string name="presentation_hint_together">请输入共锁人</string>
     <string name="presentation_hint_safety">请选择安全员</string>
+
+    <string name="presentation_login_tip">请刷卡登录</string>
 </resources>