Quellcode durchsuchen

迈冲rk3288串口地址、音量、亮度适配

ccc vor 1 Monat
Ursprung
Commit
21307fc961

+ 20 - 6
app/src/main/java/com/sunzee/app/AppApplication.kt

@@ -4,7 +4,6 @@ import android.app.ActivityManager
 import android.content.Context
 import android.content.Intent
 import android.os.Build
-import android.os.Environment
 import android.os.Process
 import android.text.TextUtils
 import android.util.Log
@@ -14,18 +13,19 @@ import com.hjq.http.EasyConfig
 import com.hjq.http.config.IRequestHandler
 import com.hjq.http.request.HttpRequest
 import com.hjq.toast.Toaster
+import com.hzmct.enjoysdk.api.EnjoySDK
+import com.mc.android.mcinstall.McWhiteApp
 import com.quyunshuo.module.home.service.ForceBackToAppService
-import com.quyunshuo.sbm10.base.BaseApplication
-import com.quyunshuo.sbm10.common.constant.Heartbeat
-import com.quyunshuo.sbm10.common.util.XLogUtil
 import com.quyunshuo.module.home.service.GlobalService
 import com.quyunshuo.module.home.service.MqService
+import com.quyunshuo.sbm10.base.BaseApplication
+import com.quyunshuo.sbm10.common.constant.Heartbeat
 import com.quyunshuo.sbm10.common.constant.MMKVName
+import com.quyunshuo.sbm10.common.util.XLogUtil
 import dagger.hilt.android.HiltAndroidApp
 import okhttp3.OkHttpClient
 import okhttp3.Response
 import org.greenrobot.eventbus.EventBus
-import java.io.File
 import java.lang.reflect.Type
 
 
@@ -74,8 +74,22 @@ class AppApplication : BaseApplication() {
             }
             //开启MQ
             startService(Intent(this, MqService::class.java))
+            if (Build.MODEL=="rk3288") {
+                val enjoySDK = EnjoySDK(context)
+                enjoySDK.setSecurePasswd("Abc12345", "Abc12345") //密码为8位,且必须包含大小写字母+数字
+                enjoySDK.registSafeProgram("Abc12345")
+                enjoySDK.whiteRulesSwitch(true)//是否开启白名单
+                enjoySDK.switchStatusBarAndNavigationOverwrite(false)//导航栏和状态栏永久隐藏
+                val mcWhiteApp = McWhiteApp()
+                mcWhiteApp.setPackageName("com.quyunshuo.sbm10")
+                mcWhiteApp.isOpenAfterInstall = true//设置安装后是否自动打开
+                mcWhiteApp.isAllowUninstall = false//设置是否可以卸载
+                val list = enjoySDK.whiteList
+                list.add (0,mcWhiteApp)
+                enjoySDK.addWhiteList(list)
+                Log.d(TAG, "rk3288onCreate: "+enjoySDK.whiteList)
+            }
         }
-
         super.onCreate()
     }
 

+ 2 - 2
buildSrc/src/main/kotlin/com/quyunshuo/sbm10/buildsrc/ProjectBuildConfig.kt

@@ -11,8 +11,8 @@ object ProjectBuildConfig {
     const val applicationId = "com.quyunshuo.sbm10"
     const val minSdkVersion = 21
     const val targetSdkVersion = 29
-    const val versionCode = 11
-    const val versionName = "1.0.11"
+    const val versionCode = 12
+    const val versionName = "1.0.12"
     const val isAppMode = false
     /**
      * 项目当前的版本状态

+ 4 - 0
gradle/libs.versions.toml

@@ -12,6 +12,8 @@ activity-compose = "1.8.0"
 compose-bom = "2023.08.00"
 hawk = "2.0.1"
 annotation-jvm = "1.9.1"
+appcompat = "1.6.1"
+material = "1.10.0"
 
 #lib
 
@@ -33,6 +35,8 @@ androidx-ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit
 androidx-material3 = { group = "androidx.compose.material3", name = "material3" }
 hawk = { group = "com.orhanobut", name = "hawk", version.ref = "hawk" }
 androidx-annotation-jvm = { group = "androidx.annotation", name = "annotation-jvm", version.ref = "annotation-jvm" }
+androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
+material = { group = "com.google.android.material", name = "material", version.ref = "material" }
 
 
 [plugins]

+ 1 - 0
lib_base/build.gradle

@@ -101,4 +101,5 @@ dependencies {
     api ('com.qiniu:qiniu-android-sdk:8.8.+'){
         exclude (group: 'com.squareup.okhttp3', module: 'okhttp')
     }
+    api files('libs\\enjoysdk.jar')
 }

BIN
lib_base/libs/enjoysdk.jar


+ 1 - 1
lib_common/src/main/java/com/quyunshuo/sbm10/common/bean/ProductDataBean.kt

@@ -2,7 +2,7 @@ package com.quyunshuo.sbm10.common.bean
 
 data class ProductDataBean(
     var productId: Int,//id 唯一标识
-    var productNo: String,
+    var productNo: String,//后台编号
     var price: Double,//商品价格
     var nameId: String,//商品名字id
     var imgID: String,//商品图片id

+ 1 - 1
lib_common/src/main/java/com/quyunshuo/sbm10/common/constant/MMKVName.kt

@@ -9,7 +9,7 @@ abstract class MMKVName {
 
     companion object {
 
-        var APP_VERSION: Int = 2 //区分国内外版本   国内1,国外2
+        var APP_VERSION: Int = 1 //区分国内外版本   国内1,国外2
 
         val PAY_TYPE: String
             get() = "PAY_TYPE"//支付方式

+ 4 - 4
module_home/src/main/java/com/quyunshuo/module/home/activity/main/MainActivity.kt

@@ -7,7 +7,11 @@ import androidx.activity.viewModels
 import androidx.lifecycle.LifecycleObserver
 import androidx.navigation.findNavController
 import com.alibaba.android.arouter.facade.annotation.Route
+import com.quyunshuo.module.home.R
+import com.quyunshuo.module.home.databinding.HomeActivityMainBinding
+import com.quyunshuo.module.home.utils.GeTuiUtil
 import com.quyunshuo.sbm10.base.ktx.observeLiveData
+import com.quyunshuo.sbm10.base.utils.LanguageUtil
 import com.quyunshuo.sbm10.base.utils.RegisterEventBus
 import com.quyunshuo.sbm10.base.utils.SpUtils
 import com.quyunshuo.sbm10.common.constant.MMKVName
@@ -15,11 +19,7 @@ import com.quyunshuo.sbm10.common.constant.MqName
 import com.quyunshuo.sbm10.common.constant.RouteUrl
 import com.quyunshuo.sbm10.common.constant.event.ApiMessageEvent
 import com.quyunshuo.sbm10.common.ui.BaseActivity
-import com.quyunshuo.sbm10.base.utils.LanguageUtil
 import com.quyunshuo.sbm10.common.util.UiUtil
-import com.quyunshuo.module.home.R
-import com.quyunshuo.module.home.databinding.HomeActivityMainBinding
-import com.quyunshuo.module.home.utils.GeTuiUtil
 import dagger.hilt.android.AndroidEntryPoint
 import org.greenrobot.eventbus.Subscribe
 import org.greenrobot.eventbus.ThreadMode

+ 25 - 8
module_home/src/main/java/com/quyunshuo/module/home/fragment/fragment/UserLoginFragment.kt

@@ -15,6 +15,11 @@ import androidx.lifecycle.LifecycleObserver
 import androidx.lifecycle.OnLifecycleEvent
 import androidx.navigation.fragment.findNavController
 import com.alibaba.android.arouter.launcher.ARouter
+import com.hzmct.enjoysdk.api.EnjoySDK
+import com.quyunshuo.module.home.R
+import com.quyunshuo.module.home.databinding.HomeFragmentUserloginBinding
+import com.quyunshuo.module.home.fragment.vm.UserLoginFragmentVM
+import com.quyunshuo.module.home.model.livedata.LiveDataBean
 import com.quyunshuo.sbm10.base.ktx.observeLiveData
 import com.quyunshuo.sbm10.base.utils.SpUtils
 import com.quyunshuo.sbm10.common.constant.MMKVName
@@ -25,10 +30,6 @@ import com.quyunshuo.sbm10.common.util.LongClickUtils
 import com.quyunshuo.sbm10.common.util.ToastUtil
 import com.quyunshuo.sbm10.common.util.UiUtil
 import com.quyunshuo.sbm10.common.util.XLogUtil
-import com.quyunshuo.module.home.R
-import com.quyunshuo.module.home.databinding.HomeFragmentUserloginBinding
-import com.quyunshuo.module.home.fragment.vm.UserLoginFragmentVM
-import com.quyunshuo.module.home.model.livedata.LiveDataBean
 import dagger.hilt.android.AndroidEntryPoint
 import kotlinx.coroutines.CoroutineScope
 import kotlinx.coroutines.Dispatchers
@@ -226,16 +227,32 @@ class UserLoginFragment : BaseFragment<HomeFragmentUserloginBinding, UserLoginFr
     fun showHideSar() {
         val manager = requireActivity().getSystemService("xzjh_server") as XzjhSystemManager?
         if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
+            Log.d(TAG, "showHideSar: 1")
             ZtlManager.GetInstance().openSystemBar(ZtlManager.GetInstance().isSystemBarOpen)
-            if (manager != null) {
-                if ("rk3566_r" == Build.MODEL) {
+            if (Build.MODEL=="rk3566_r") {
+                if (manager != null) {
                     manager.xzjhSetSystemBarEnable(!manager.xzjhGetSystemBarEnable())
                 }
+            }else if (Build.MODEL=="rk3288"){
+                val enjoySDK = EnjoySDK(context)
+                enjoySDK.setSecurePasswd("Abc12345", "Abc12345") //密码为8位,且必须包含大小写字母+数字
+                enjoySDK.registSafeProgram("Abc12345")
+                Log.d(TAG, "showHideSar:v "+enjoySDK.enjoyApiSupportVersion)
+                val ret = enjoySDK.navigationShowStatus
+                Log.d(TAG, "showHideSar:ret "+ret)
+                if (ret==1){
+                    enjoySDK.setNavigationBarShowStatus(0)
+                    enjoySDK.setStatusBarShowStatus(false)
+                }else{
+                    enjoySDK.setNavigationBarShowStatus(1)
+                    enjoySDK.setStatusBarShowStatus(true)
+                }
             }
         } else {
             ZtlManager.GetInstance().openSystemBar(!ZtlManager.GetInstance().isSystemBarOpen)
-            if (manager != null) {
-                if ("rk3566_r" == Build.MODEL) {
+            Log.d(TAG, "showHideSar: 2")
+            if ("rk3566_r" == Build.MODEL) {
+                if (manager != null) {
                     manager.xzjhSetSystemBarEnable(manager.xzjhGetSystemBarEnable())
                 }
             }

+ 0 - 2
module_home/src/main/java/com/quyunshuo/module/home/service/ForceBackToAppService.kt

@@ -108,12 +108,10 @@ class ForceBackToAppService : LifecycleService() {
                         BaseApplication.context,
                         "com.quyunshuo.sbm10"
                     )
-                    Log.d(TAG, "forceBackToApp: 1")
                     //运行中,跳过他。
                     if (isRunning) {
                         continue
                     }
-                    Log.d(TAG, "forceBackToApp: 2")
                     val intent: Intent = Intent(
                         BaseApplication.context,
                         MainActivity::class.java

+ 1 - 1
module_home/src/main/java/com/quyunshuo/module/home/service/GlobalService.kt

@@ -98,7 +98,7 @@ class GlobalService : LifecycleService() {
         observeLiveData(globalServiceViewModel.initIsSuccess, ::initIsSuccess)
         observeLiveData(globalServiceViewModel.alarmType, ::getAlarmType)
 
-        globalServiceViewModel.forceBackToApp()
+//        globalServiceViewModel.forceBackToApp()
     }
 
     private fun initIsSuccess(initIsSuccess: Boolean) {

+ 0 - 81
module_home/src/main/java/com/quyunshuo/module/home/service/GlobalServiceViewModel.kt

@@ -69,7 +69,6 @@ class GlobalServiceViewModel @Inject constructor(
     private val _alarmType = MutableLiveData<String>()
     val alarmType: LiveData<String> get() = _alarmType
     //强制返回App的携程
-    var forceBackToAppJob: Job? = null
     fun getVideoRule() {
         if (Heartbeat.managerId == "") {
             //没有连接服务器,那么就不没有必要执行。
@@ -537,12 +536,7 @@ class GlobalServiceViewModel @Inject constructor(
             _initIsSuccess.value = false
             SBCHeartbeat.initIsSuccess = false
         }
-        if (!agin){
-            agin=true
-            aginInit()
-        }
     }
-    private var agin: Boolean = false
 
     /**
      * 处理 单片机 后台数据
@@ -588,79 +582,4 @@ class GlobalServiceViewModel @Inject constructor(
 //            nextRunTime - currentTime
 //        }
 //    }
-    /**
-     * 强制跳回App
-     */
-    fun forceBackToApp() {
-        if (forceBackToAppJob == null) {
-            forceBackToAppJob = CoroutineScope(Dispatchers.IO).launch {
-                while (true) {
-                    delay(4000)
-                    //判断程序是否在运行
-                    val isRunning: Boolean = isServiceStarted(
-                        BaseApplication.context,
-                        "com.quyunshuo.sbm10"
-                    )
-                    Log.d(TAG, "forceBackToApp: 1")
-                    //运行中,跳过他。
-                    if (isRunning) {
-                        continue
-                    }
-                    Log.d(TAG, "forceBackToApp: 2")
-                    val intent: Intent = Intent(
-                        BaseApplication.context,
-                        MainActivity::class.java
-                    ) //此处我是根据需要重新启动时先进入欢迎页
-                    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK or Intent.FLAG_ACTIVITY_NEW_TASK) //关掉所要到的界面中间的activity
-
-                    @SuppressLint("WrongConstant") val restartIntent = PendingIntent.getActivity(
-                        BaseApplication.context, 0, intent,
-                        Intent.FLAG_ACTIVITY_NEW_TASK or PendingIntent.FLAG_IMMUTABLE
-                    )
-
-                    //退出程序
-                    val mgr =
-                        BaseApplication.context.getSystemService(Context.ALARM_SERVICE) as AlarmManager
-                    mgr[AlarmManager.RTC, System.currentTimeMillis() + 1000] =
-                        restartIntent // 1秒钟后重启应用,这个可以根据需要自己定义
-
-                    //干掉当前的程序
-                    LogUtil.d("MyTestService", "uncaughtException2: ")
-                    Process.killProcess(Process.myPid())
-                    System.exit(0)
-                }
-            }
-        }
-    }
-    /**
-     * 检测一个android程序是否在运行
-     *
-     * @param context
-     * @param PackageName
-     * @return
-     */
-    fun isServiceStarted(context: Context, packageName: String): Boolean {
-        val am = context.getSystemService(Context.ACTIVITY_SERVICE) as ActivityManager
-        val runningProcesses = am.runningAppProcesses
-        for (processInfo in runningProcesses) {
-            if (processInfo.processName == packageName) {
-                return true
-            }
-        }
-        return false
-    }
-
-    fun aginInit() {
-        val intent = context.packageManager.getLaunchIntentForPackage(context.packageName)?.apply {
-            addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
-        }
-        context.startActivity(intent)
-        (context.getSystemService(Context.ALARM_SERVICE) as AlarmManager).apply {
-            set(
-                AlarmManager.RTC, System.currentTimeMillis() + 500,
-                PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_IMMUTABLE)
-            )
-        }
-        Process.killProcess(Process.myPid())
-    }
 }

+ 0 - 27
module_home/src/main/java/com/quyunshuo/module/home/utils/AssetManager.kt

@@ -21,14 +21,6 @@ object AssetManager {
         }
 
     fun readJsonFromAssets(context: Context, fileName: String): String? {
-        /* return try {
-             // 通过 AssetManager 打开文件流
-             context.assets.open(fileName).bufferedReader().use {
-                 it.readText()
-             }
-         } catch (e: IOException) {
-             ""
-         }*/
         try {
             var input = context.assets.open(fileName)
             var size = input.available();
@@ -41,23 +33,4 @@ object AssetManager {
             return ""
         }
     }
-
-    /* fun readJsonFromAssets(context: Context, fileName: String?): String {
-         val jsonContent = StringBuilder()
-
-         try {
-             val assetManager: AssetManager = context.assets
-             assetManager.open(fileName).use { inputStream ->
-                 BufferedReader(InputStreamReader(inputStream)).use { reader ->
-                     var line: String?
-                     while ((reader.readLine().also { line = it }) != null) {
-                         jsonContent.append(line) // readLine()自动去除行尾换行符
-                     }
-                 }
-             }
-         } catch (e: IOException) {
-             e.printStackTrace()
-         }
-         return jsonContent.toString().replace("\r\n", "") // 全局替换剩余换行符
-     }*/
 }

+ 12 - 3
module_home/src/main/java/com/quyunshuo/module/home/utils/RemotePushUtil.kt

@@ -2,7 +2,6 @@ package com.quyunshuo.module.home.utils
 
 import android.app.XzjhSystemManager
 import android.content.Context
-import android.content.Intent
 import android.media.AudioManager
 import android.media.MediaScannerConnection
 import android.os.Build
@@ -11,6 +10,9 @@ import android.util.Log
 import com.google.gson.Gson
 import com.hboxs.serialport.plc.message.Message
 import com.hboxs.serialport.plc.thread.ThreadSettingParam
+import com.hzmct.enjoysdk.api.EnjoySDK
+import com.mc.android.mcinstall.AppRule
+import com.mc.android.mcinstall.McWhiteApp
 import com.qiniu.android.http.ResponseInfo
 import com.qiniu.android.storage.UpCompletionHandler
 import com.qiniu.android.storage.UploadManager
@@ -65,6 +67,7 @@ import java.text.SimpleDateFormat
 import java.util.Calendar
 import javax.inject.Inject
 
+
 class RemotePushUtil @Inject constructor() {
     private val TAG = "RemotePushUtil"
 
@@ -252,6 +255,7 @@ class RemotePushUtil @Inject constructor() {
      * @param kindData
      */
     fun upDateApk(kindData: String) {
+        Log.d(TAG, "isOpenAfterInstall: 1")
         var str1 = ""
         val targetString = ".com.cn/"
         var startIndex: Int = kindData.indexOf(targetString)
@@ -279,11 +283,14 @@ class RemotePushUtil @Inject constructor() {
         client.newCall(request).enqueue(object : Callback {
             override fun onFailure(call: Call, e: IOException) {
                 Log.d(TAG, "newCall onFailure: " + e.message)
+                Log.d(TAG, "isOpenAfterInstall: 2")
                 e.printStackTrace()
             }
 
             override fun onResponse(call: Call, response: Response) {
+                Log.d(TAG, "isOpenAfterInstall: 3")
                 if (response.isSuccessful) {
+                    Log.d(TAG, "isOpenAfterInstall: 4")
                     Log.d(TAG, "newCall isSuccessful: ")
                     // 下载成功
                     val inputStream: InputStream? = response.body?.byteStream()
@@ -322,17 +329,19 @@ class RemotePushUtil @Inject constructor() {
                                 Environment.getExternalStorageDirectory().path + "/apk/" + "mht.apk",
                                 true
                             )
-                        } else {
-                            Log.d(TAG, "onResponse: installerapk")
+                        } else if (Build.MODEL.equals("rk3288")){
+                            Log.d(TAG, "isOpenAfterInstall: 7")
                             CoroutineScope(Dispatchers.IO).launch {
                                 withContext(Dispatchers.Main) {
                                     val installer: AutoInstaller = AutoInstaller.getDefault(context)
                                     installer.install(Environment.getExternalStorageDirectory().path + "/apk/mht.apk")
+                                    Log.d(TAG, "isOpenAfterInstall: 8 ")
                                 }
                             }
                         }
                     }
                 } else {
+                    Log.d(TAG, "isOpenAfterInstall: 5")
                     Log.d(TAG, "newCall failed: ")
                     // 响应失败
                 }

+ 2 - 1
module_pay/src/main/java/com/module/pay/strategy/PaySendDataICTStrategy.kt

@@ -2,6 +2,7 @@ package com.module.pay.strategy
 
 import android.util.Log
 import com.module.pay.serialport.SerialPortUtil
+import com.quyunshuo.sbm10.base.utils.SpUtils
 import com.quyunshuo.sbm10.common.constant.MMKVName
 
 object PaySendDataICTStrategy : PaySendDataStrategy {
@@ -11,7 +12,7 @@ object PaySendDataICTStrategy : PaySendDataStrategy {
         //工厂构建
         val createStrategy = SerialPortFactory().createStrategy(StrategyType.ICT)
         serialPortUtil = SerialPortUtil(createStrategy)
-        serialPortUtil?.openSerialPort("/dev/"+MMKVName.MDB_PATH,9600,0,1)
+        serialPortUtil?.openSerialPort("/dev/"+ SpUtils.getString(MMKVName.TTYS_MDB,MMKVName.MDB_PATH),9600,0,1)
     }
 
     override fun billInit() {

+ 19 - 4
module_pay/src/main/java/com/module/pay/strategy/PaySendDataMDBStrategy.kt

@@ -19,7 +19,7 @@ object PaySendDataMDBStrategy : PaySendDataStrategy {
         //工厂构建
         val createStrategy = SerialPortFactory().createStrategy(StrategyType.MDB)
         serialPortUtil = SerialPortUtil(createStrategy)
-        serialPortUtil?.openSerialPort("/dev/"+MMKVName.PLC_PATH, 9600, 0, 0)
+        serialPortUtil?.openSerialPort("/dev/" + SpUtils.getString(MMKVName.TTYS_MDB, MMKVName.MDB_PATH), 9600, 0, 0)
     }
 
     override fun billInit() {
@@ -99,7 +99,12 @@ object PaySendDataMDBStrategy : PaySendDataStrategy {
     }
 
     override fun creditCardPay(price: Double, number: String) {
-        serialPortUtil?.sendSerialPort("1300"+ com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex((price*100).toLong(),4)+ com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(number.toLong(),4))
+        serialPortUtil?.sendSerialPort(
+            "1300" + com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(
+                (price * 100).toLong(),
+                4
+            ) + com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(number.toLong(), 4)
+        )
 
     }
 
@@ -112,13 +117,23 @@ object PaySendDataMDBStrategy : PaySendDataStrategy {
     }
 
     override fun creditCardVendSuccess(number: String) {
-        serialPortUtil?.sendSerialPort("1302"+ com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(number.toLong(),4))
+        serialPortUtil?.sendSerialPort(
+            "1302" + com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(
+                number.toLong(),
+                4
+            )
+        )
     }
 
     override fun creditCardCashSale(price: Double, number: String) {
         if (SpUtils.getBoolean(MMKVName.MDB_CASH_SALE, true) == false) {
             return
         }
-        serialPortUtil?.sendSerialPort("1305"+ com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex((price*100).toLong(),4)+ com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(number.toLong(),4))
+        serialPortUtil?.sendSerialPort(
+            "1305" + com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(
+                (price * 100).toLong(),
+                4
+            ) + com.quyunshuo.sbm10.common.util.ByteUtils.decimal2fitHex(number.toLong(), 4)
+        )
     }
 }