From de4c5f1c75cf93167058c21c3c5e01909ae99c96 Mon Sep 17 00:00:00 2001 From: zxj <275873859@qq.com> Date: Thu, 31 Jul 2025 11:40:56 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E4=BA=86=E5=8F=8C=E5=B1=8F?= =?UTF-8?q?=E6=91=84=E5=83=8F=E5=A4=B4=E6=98=BE=E7=A4=BA=EF=BC=8C=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E4=BA=86=E9=83=A8=E5=88=86=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/deploymentTargetSelector.xml | 8 + .idea/gradle.xml | 2 + .idea/vcs.xml | 4 +- app/build.gradle.kts | 20 +- app/src/main/AndroidManifest.xml | 17 +- .../main/java/com/sw/dualscreen/GlobalData.kt | 58 ++++ .../com/sw/dualscreen/{App.kt => MyApp.kt} | 8 +- .../sw/dualscreen/activity/Camera2Activity.kt | 156 ---------- .../sw/dualscreen/activity/InitActivity.kt | 50 ++++ .../sw/dualscreen/activity/MainActivity.kt | 124 +++++++- .../sw/dualscreen/adapter/BaseViewHolder.kt | 9 - .../dualscreen/adapter/GenericItemAdapter.kt | 38 +++ .../dualscreen/adapter/GridRecyclerAdapter.kt | 31 -- .../adapter/GridSpacingItemDecoration.kt | 36 ++- .../java/com/sw/dualscreen/ext/CommonExt.kt | 35 ++- .../model/request/UserNutritionParam.kt | 18 ++ .../dualscreen/model/response/ApiResponse.kt | 17 ++ .../model/response/EquipmentInfo.kt | 72 +++++ .../sw/dualscreen/model/response/FoodInfo.kt | 274 ++++++++++++++++++ .../model/response/NutritionData.kt | 77 +++++ .../dualscreen/model/response/UserFaceInfo.kt | 14 + .../model/response/UserFaceModel.kt | 23 ++ .../com/sw/dualscreen/network/ApiClient.kt | 44 +++ .../sw/dualscreen/network/api/ApiService.kt | 91 ++++++ .../network/interceptor/RequestInterceptor.kt | 36 +++ .../SecondaryScreenPresentation.kt | 100 ++++--- .../dualscreen/repository/BaseRepository.kt | 50 ++++ .../dualscreen/repository/RemoteRepository.kt | 97 +++++++ .../java/com/sw/dualscreen/utils/FileUtils.kt | 156 ++++++++++ .../java/com/sw/dualscreen/utils/GsonUtils.kt | 123 ++++++++ .../java/com/sw/dualscreen/utils/SPUtil.kt | 111 +++++++ .../view/CustomBottomSheetDialog.kt | 123 ++++++++ .../sw/dualscreen/view/CustomImageView.java | 129 +++++++++ .../com/sw/dualscreen/view/CustomSpinner.kt | 163 +++++++++++ .../sw/dualscreen/view/CylinderDrawView.kt | 56 ++++ .../com/sw/dualscreen/view/CylinderView.kt | 104 +++++++ .../sw/dualscreen/viewmodel/BaseViewModel.kt | 75 +++++ .../dualscreen/viewmodel/DeviceViewModel.kt | 66 +++++ .../sw/dualscreen/viewmodel/MyViewModel.kt | 8 - .../sw/dualscreen/viewmodel/UserViewModel.kt | 182 ++++++++++++ app/src/main/res/drawable/bg_avatar.png | Bin 0 -> 975169 bytes .../res/drawable/bg_detection_selector.xml | 12 + app/src/main/res/drawable/bg_search.xml | 10 + .../res/drawable/bottom_sheet_background.xml | 7 + .../main/res/drawable/grid_item_checked.xml | 10 + .../main/res/drawable/grid_item_normal.xml | 8 + .../res/drawable/grid_search_item_checked.xml | 13 + .../res/drawable/grid_search_item_normal.xml | 13 + .../main/res/drawable/ic_arrow_drop_down.png | Bin 0 -> 393 bytes .../res/drawable/ic_cylinder_green_big.png | Bin 0 -> 7330 bytes .../res/drawable/ic_cylinder_green_small.png | Bin 0 -> 4159 bytes .../main/res/drawable/ic_cylinder_red_big.png | Bin 0 -> 6717 bytes .../res/drawable/ic_cylinder_red_small.png | Bin 0 -> 3724 bytes .../res/drawable/ic_fruits_vegetables.png | Bin 0 -> 17828 bytes app/src/main/res/drawable/ic_heat.png | Bin 0 -> 25094 bytes app/src/main/res/drawable/ic_meat_eggs.png | Bin 0 -> 15921 bytes app/src/main/res/drawable/ic_search.png | Bin 0 -> 1581 bytes app/src/main/res/drawable/ic_staple_food.png | Bin 0 -> 16016 bytes .../main/res/drawable/view_shape_point.xml | 10 + app/src/main/res/layout/activity_camera2.xml | 21 -- app/src/main/res/layout/activity_init.xml | 23 ++ app/src/main/res/layout/activity_main.xml | 50 +++- .../main/res/layout/bottom_sheet_dialog.xml | 61 ++++ .../main/res/layout/item_camera_preview.xml | 21 ++ app/src/main/res/layout/item_food_info.xml | 22 ++ .../main/res/layout/item_search_food_info.xml | 22 ++ app/src/main/res/layout/item_user_heat.xml | 138 +++++++++ .../layout/presentation_secondary_screen.xml | 129 ++++++--- app/src/main/res/layout/view_cylinder.xml | 71 +++++ app/src/main/res/values/attrs.xml | 30 ++ app/src/main/res/values/dimens.xml | 4 + app/src/main/res/values/strings.xml | 5 + app/src/main/res/values/themes.xml | 38 ++- lib_face/build.gradle.kts | 2 +- .../libs/WbIntelligentHardwareSDK-debug.aar | Bin 0 -> 1679695 bytes .../libs/armeabi-v7a/libserial_port_sp.so | Bin 13792 -> 0 bytes .../java/com/sw/plate/sdk/SensorScaleUtils.kt | 148 ++++++++++ .../java/com/sw/plate/utils/ThreadUtils.kt | 124 ++++++++ .../arcface/viewmodel/RecognizeViewModel.java | 21 +- .../java/com/sw/plate/utils/comn/Device.java | 39 --- .../com/sw/plate/utils/comn/SerialApi.java | 37 --- .../plate/utils/comn/SerialPortManager.java | 192 ------------ .../sw/plate/utils/comn/SerialReadThread.java | 96 ------ .../sw/plate/utils/comn/message/IMessage.java | 21 -- .../plate/utils/comn/message/RecvMessage.java | 26 -- .../plate/utils/comn/message/SendMessage.java | 26 -- 86 files changed, 3446 insertions(+), 809 deletions(-) create mode 100644 app/src/main/java/com/sw/dualscreen/GlobalData.kt rename app/src/main/java/com/sw/dualscreen/{App.kt => MyApp.kt} (57%) delete mode 100644 app/src/main/java/com/sw/dualscreen/activity/Camera2Activity.kt create mode 100644 app/src/main/java/com/sw/dualscreen/activity/InitActivity.kt delete mode 100644 app/src/main/java/com/sw/dualscreen/adapter/BaseViewHolder.kt create mode 100644 app/src/main/java/com/sw/dualscreen/adapter/GenericItemAdapter.kt delete mode 100644 app/src/main/java/com/sw/dualscreen/adapter/GridRecyclerAdapter.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/request/UserNutritionParam.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/ApiResponse.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/EquipmentInfo.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/FoodInfo.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/NutritionData.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/UserFaceInfo.kt create mode 100644 app/src/main/java/com/sw/dualscreen/model/response/UserFaceModel.kt create mode 100644 app/src/main/java/com/sw/dualscreen/network/ApiClient.kt create mode 100644 app/src/main/java/com/sw/dualscreen/network/api/ApiService.kt create mode 100644 app/src/main/java/com/sw/dualscreen/network/interceptor/RequestInterceptor.kt create mode 100644 app/src/main/java/com/sw/dualscreen/repository/BaseRepository.kt create mode 100644 app/src/main/java/com/sw/dualscreen/repository/RemoteRepository.kt create mode 100644 app/src/main/java/com/sw/dualscreen/utils/FileUtils.kt create mode 100644 app/src/main/java/com/sw/dualscreen/utils/GsonUtils.kt create mode 100644 app/src/main/java/com/sw/dualscreen/utils/SPUtil.kt create mode 100644 app/src/main/java/com/sw/dualscreen/view/CustomBottomSheetDialog.kt create mode 100644 app/src/main/java/com/sw/dualscreen/view/CustomImageView.java create mode 100644 app/src/main/java/com/sw/dualscreen/view/CustomSpinner.kt create mode 100644 app/src/main/java/com/sw/dualscreen/view/CylinderDrawView.kt create mode 100644 app/src/main/java/com/sw/dualscreen/view/CylinderView.kt create mode 100644 app/src/main/java/com/sw/dualscreen/viewmodel/BaseViewModel.kt create mode 100644 app/src/main/java/com/sw/dualscreen/viewmodel/DeviceViewModel.kt delete mode 100644 app/src/main/java/com/sw/dualscreen/viewmodel/MyViewModel.kt create mode 100644 app/src/main/java/com/sw/dualscreen/viewmodel/UserViewModel.kt create mode 100644 app/src/main/res/drawable/bg_avatar.png create mode 100644 app/src/main/res/drawable/bg_detection_selector.xml create mode 100644 app/src/main/res/drawable/bg_search.xml create mode 100644 app/src/main/res/drawable/bottom_sheet_background.xml create mode 100644 app/src/main/res/drawable/grid_item_checked.xml create mode 100644 app/src/main/res/drawable/grid_item_normal.xml create mode 100644 app/src/main/res/drawable/grid_search_item_checked.xml create mode 100644 app/src/main/res/drawable/grid_search_item_normal.xml create mode 100644 app/src/main/res/drawable/ic_arrow_drop_down.png create mode 100644 app/src/main/res/drawable/ic_cylinder_green_big.png create mode 100644 app/src/main/res/drawable/ic_cylinder_green_small.png create mode 100644 app/src/main/res/drawable/ic_cylinder_red_big.png create mode 100644 app/src/main/res/drawable/ic_cylinder_red_small.png create mode 100644 app/src/main/res/drawable/ic_fruits_vegetables.png create mode 100644 app/src/main/res/drawable/ic_heat.png create mode 100644 app/src/main/res/drawable/ic_meat_eggs.png create mode 100644 app/src/main/res/drawable/ic_search.png create mode 100644 app/src/main/res/drawable/ic_staple_food.png create mode 100644 app/src/main/res/drawable/view_shape_point.xml delete mode 100644 app/src/main/res/layout/activity_camera2.xml create mode 100644 app/src/main/res/layout/activity_init.xml create mode 100644 app/src/main/res/layout/bottom_sheet_dialog.xml create mode 100644 app/src/main/res/layout/item_camera_preview.xml create mode 100644 app/src/main/res/layout/item_food_info.xml create mode 100644 app/src/main/res/layout/item_search_food_info.xml create mode 100644 app/src/main/res/layout/item_user_heat.xml create mode 100644 app/src/main/res/layout/view_cylinder.xml create mode 100644 app/src/main/res/values/dimens.xml create mode 100644 lib_face/libs/WbIntelligentHardwareSDK-debug.aar delete mode 100644 lib_face/libs/armeabi-v7a/libserial_port_sp.so create mode 100644 lib_face/src/main/java/com/sw/plate/sdk/SensorScaleUtils.kt create mode 100644 lib_face/src/main/java/com/sw/plate/utils/ThreadUtils.kt delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/Device.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/SerialApi.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/SerialPortManager.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/SerialReadThread.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/message/IMessage.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/message/RecvMessage.java delete mode 100644 lib_face/src/main/java/com/sw/plate/utils/comn/message/SendMessage.java diff --git a/.idea/deploymentTargetSelector.xml b/.idea/deploymentTargetSelector.xml index b268ef3..ba42d15 100644 --- a/.idea/deploymentTargetSelector.xml +++ b/.idea/deploymentTargetSelector.xml @@ -4,6 +4,14 @@ diff --git a/.idea/gradle.xml b/.idea/gradle.xml index 97f0a8e..a95664d 100644 --- a/.idea/gradle.xml +++ b/.idea/gradle.xml @@ -1,5 +1,6 @@ + diff --git a/.idea/vcs.xml b/.idea/vcs.xml index d843f34..94a25f7 100644 --- a/.idea/vcs.xml +++ b/.idea/vcs.xml @@ -1,4 +1,6 @@ - + + + \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d336727..e0896e1 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -7,6 +7,14 @@ plugins { } android { + signingConfigs { + getByName("debug") { + storeFile = file("./swkey.jks") + storePassword = "123456" + keyAlias = "android" + keyPassword = "123456" + } + } namespace = "com.sw.dualscreen" compileSdk = 35 @@ -18,6 +26,9 @@ android { versionName = "1.0" testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" + ndk { + abiFilters.addAll(listOf("armeabi-v7a"/*, "arm64-v8a"*/)) + } } buildTypes { @@ -42,7 +53,14 @@ android { } dependencies { - +// implementation( +// fileTree( +// mapOf( +// "dir" to "libs", +// "include" to listOf("*.aar", "*.jar") +// ) +// ) +// ) implementation(libs.androidx.core.ktx) implementation(libs.androidx.appcompat) implementation(libs.material) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index edd33a7..d6f414d 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -16,7 +16,7 @@ android:maxSdkVersion="32" /> - - - - - - - @@ -45,6 +36,10 @@ + + \ No newline at end of file diff --git a/app/src/main/java/com/sw/dualscreen/GlobalData.kt b/app/src/main/java/com/sw/dualscreen/GlobalData.kt new file mode 100644 index 0000000..4f82636 --- /dev/null +++ b/app/src/main/java/com/sw/dualscreen/GlobalData.kt @@ -0,0 +1,58 @@ +package com.sw.dualscreen + +object GlobalData { + /** + * 同一设备全局使用的设备编号 + */ +// var globalEquipmentCode: String = "202501171634" + var restId: String = "" + + /** + * app版本号 + */ + var appVersion: String = "1" + + /** + * 具体业务baseurl + */ + var appBaseUrl: String = "" + + /** + * 横排数量 + */ + var arrayCross: Int = 2 + + /** + * 竖排数量 + */ + var arrayVertical: Int = 11 + + /** + * 排列方式 0 垂直 1 水平 + */ + var arrayMode: Int = 0 + + var appId = "Hkz1rBk6PZXbS8KwKr67K2eZtsz8bRoMHLg64bUdgCZj" + var sdkKey = "AabXs3sHM8UhhE7oCGf4LVMLrdkGb1nJNksbjjTdVt7k" + var activeKey = "085F-118G-Q3AB-1WVJ" +} + +/** + * 全局常量 + */ +object Constants { + /** + * 自动关闭时间 + */ + const val AUTO_CLOSE_TIME: Long = 3 +} + +/** + * key + */ +object GlobalKey { + const val KEY_EQUIPMENT_INFO = "equipmentInfo" + const val KEY_TOKEN = "tokenKey" + const val KEY_FIRST_RUN = "firstRun" + const val KEY_USER_INFO = "userInfoKey" +} \ No newline at end of file diff --git a/app/src/main/java/com/sw/dualscreen/App.kt b/app/src/main/java/com/sw/dualscreen/MyApp.kt similarity index 57% rename from app/src/main/java/com/sw/dualscreen/App.kt rename to app/src/main/java/com/sw/dualscreen/MyApp.kt index 6cf8348..a7dee2e 100644 --- a/app/src/main/java/com/sw/dualscreen/App.kt +++ b/app/src/main/java/com/sw/dualscreen/MyApp.kt @@ -1,9 +1,13 @@ package com.sw.dualscreen -import android.app.Application +import com.sw.plate.App import timber.log.Timber -class App : Application() { +class MyApp : App() { + companion object { + const val DEBUG: Boolean = true + } + override fun onCreate() { super.onCreate() Timber.plant(Timber.DebugTree()) diff --git a/app/src/main/java/com/sw/dualscreen/activity/Camera2Activity.kt b/app/src/main/java/com/sw/dualscreen/activity/Camera2Activity.kt deleted file mode 100644 index 143ee8d..0000000 --- a/app/src/main/java/com/sw/dualscreen/activity/Camera2Activity.kt +++ /dev/null @@ -1,156 +0,0 @@ -package com.sw.dualscreen.activity - -import android.Manifest -import android.content.Context -import android.content.pm.PackageManager -import android.graphics.SurfaceTexture -import android.hardware.camera2.CameraCaptureSession -import android.hardware.camera2.CameraDevice -import android.hardware.camera2.CameraManager -import android.hardware.camera2.CaptureRequest -import android.os.Bundle -import android.util.Log -import android.view.Surface -import android.view.TextureView -import android.widget.Button -import android.widget.Toast -import androidx.appcompat.app.AppCompatActivity -import androidx.core.content.ContextCompat -import com.sw.dualscreen.R - -class Camera2Activity : AppCompatActivity() { - private lateinit var cameraManager: CameraManager - private var cameraIdList: Array = arrayOf() - private var currentCameraIdIndex = 0 - private lateinit var textureView: TextureView - private var cameraDevice: CameraDevice? = null - private var cameraCaptureSession: CameraCaptureSession? = null - - override fun onCreate(savedInstanceState: Bundle?) { - super.onCreate(savedInstanceState) - setContentView(R.layout.activity_camera2) - - textureView = findViewById(R.id.textureView) - cameraManager = getSystemService(Context.CAMERA_SERVICE) as CameraManager - - // 获取摄像头列表 - cameraIdList = cameraManager.cameraIdList - if (cameraIdList.isEmpty()) { - Toast.makeText(this, "没有可用的摄像头", Toast.LENGTH_SHORT).show() - finish() - } - - // 设置TextureView监听 - textureView.surfaceTextureListener = surfaceTextureListener - - // 切换摄像头按钮 - findViewById