diff --git a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt index 2386aea..e417c0c 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/TestUtils.kt @@ -2,10 +2,12 @@ package com.yinuo.safetywatcher import android.content.Context import android.content.Intent +import android.media.MediaCodecList import android.net.Uri import android.os.Build import android.os.FileUtils import android.provider.Settings +import android.util.Log import com.common.commonlib.db.DBUtils import com.common.commonlib.db.entity.Gas import com.common.commonlib.db.entity.Video @@ -29,6 +31,7 @@ object TestUtils { fun insertData() { + getSupportCodec() PushHelper.setPushUrl("rtsp://192.168.5.17:554/123") GlobalScope.launch() { // 构造气体数据 @@ -187,4 +190,14 @@ object TestUtils { } loadingDialog?.dismiss() } + + fun getSupportCodec() { + val list = MediaCodecList(MediaCodecList.ALL_CODECS) + val codecs = list.codecInfos + Log.d("cyy", "Decoders:") + for (i in codecs.indices) { + val codec = codecs[i] + Log.d("cyy", codec.name) + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt index fe39b05..ac37ad0 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/App.kt @@ -9,10 +9,11 @@ import com.yinuo.safetywatcher.watcher.constant.CAMERA_GATEWAY import com.yinuo.safetywatcher.watcher.constant.CAMERA_IP import com.yinuo.safetywatcher.watcher.constant.CAMERA_NETMASK import com.yinuo.safetywatcher.watcher.port.cmd.GasPortStatus -import com.yinuo.safetywatcher.watcher.utils.LztekUtil +import com.yinuo.safetywatcher.watcher.utils.PlatformUtils import com.yinuo.safetywatcher.watcher.wifi.WiFiConfig import com.yinuo.safetywatcher.watcher.wifi.WiFiModule import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.async import kotlinx.coroutines.launch @@ -38,14 +39,17 @@ class App : CommonApplication() { } private fun ipConfig() { - LztekUtil.getLztek() - ?.setEthIpAddress(CAMERA_IP, CAMERA_NETMASK, CAMERA_GATEWAY, CAMERA_DNS) +// LztekUtil.getLztek() +// ?.setEthIpAddress(CAMERA_IP, CAMERA_NETMASK, CAMERA_GATEWAY, CAMERA_DNS) + PlatformUtils.setEthIpAddress(CAMERA_IP, CAMERA_NETMASK, CAMERA_GATEWAY, CAMERA_DNS) + PlatformUtils.hideNavigation() + PlatformUtils.hideStatusBar() } private fun tryFixDbData() { - GlobalScope.launch { + GlobalScope.launch(Dispatchers.IO) { // 修复告警数据 - async { + val warningAsync = async(Dispatchers.IO) { val warningDao = DBUtils.warningDao() val warningList = warningDao.queryWarningsNoEndTime() warningList?.apply { @@ -54,10 +58,10 @@ class App : CommonApplication() { } warningDao.updateAll(warningList) } - }.await() + } // 修复视频数据 - async { + val videoAsync = async(Dispatchers.IO) { val videoDao = DBUtils.videoDao() val videoList = videoDao.getAll() videoList.onEach { video -> @@ -65,17 +69,20 @@ class App : CommonApplication() { videoDao.delete(video) } } - }.await() + } // 初始时,所以串口连接状态都应该是未连接 - async { + val gasAsync = async(Dispatchers.IO) { val gasTypeDao = DBUtils.gasTypeDao() val all = gasTypeDao.getAll() all.onEach { gasType -> gasType.status = GasPortStatus.OUTLINE gasTypeDao.insert(gasType) } - }.await() + } + warningAsync.await() + videoAsync.await() + gasAsync.await() } } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt index e3fa558..513b934 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/port/ParseHelper.kt @@ -18,6 +18,7 @@ import com.yinuo.safetywatcher.watcher.port.cmd.O2 import com.yinuo.safetywatcher.watcher.port.cmd.ResponseHelper import com.yinuo.safetywatcher.watcher.port.cmd.getGasTypeByCode import kotlinx.coroutines.DelicateCoroutinesApi +import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch import org.easydarwin.TxtOverlay @@ -148,7 +149,7 @@ object ParseHelper { * 插入气体数据 */ private fun insertGasData(gasType: String, value: Float, unit: String) { - GlobalScope.launch { + GlobalScope.launch(Dispatchers.IO) { // 阈值范围 val min = getGasLowThreshold(gasType, unit) val max = getGasHighThreshold(gasType, unit) diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt index 46ab4bb..9a32d08 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/HomeActivity.kt @@ -279,4 +279,8 @@ class HomeActivity : NoOptionsActivity() { super.onResume() mClient?.resume() } + + override fun onBackPressed() { +// super.onBackPressed() + } } \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt index 4d7ebb8..e7d7e1e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/ui/TimeSettingActivity.kt @@ -7,6 +7,7 @@ import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityTimeSettingBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.utils.LztekUtil +import com.yinuo.safetywatcher.watcher.utils.PlatformUtils import java.text.SimpleDateFormat import java.util.Locale @@ -44,7 +45,8 @@ class TimeSettingActivity : NoOptionsActivity() { } mBingding.tvConfirm.setOnClickListener { if (changeTime > 0) { - LztekUtil.getLztek()?.setSystemTime(changeTime) +// LztekUtil.getLztek()?.setSystemTime(changeTime) + PlatformUtils.setSystemTime(changeTime) } onBackPressed() } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt index 9a4a174..2e0a9ef 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/LztekUtil.kt @@ -25,22 +25,24 @@ object LztekUtil { fun getSn(): String { if (sn == null) { - val mac = getLztek()?.ethMac ?: "unKnow" - val md = MessageDigest.getInstance("MD5") // 生成一个MD5加密计算摘要 - md.update(mac.toByteArray()) // 计算md5函数 - /** - * digest()最后确定返回md5 hash值,返回值为8位字符串。 - * 因为md5 hash值是16位的hex值,实际上就是8位的字符 - * BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 - * 一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方) - */ - /** - * digest()最后确定返回md5 hash值,返回值为8位字符串。 - * 因为md5 hash值是16位的hex值,实际上就是8位的字符 - * BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 - * 一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方) - */ - sn = BigInteger(1, md.digest()).toString(16) // 16是表示转换为16进制数 +// val mac = getLztek()?.ethMac ?: "unKnow" +// val md = MessageDigest.getInstance("MD5") // 生成一个MD5加密计算摘要 +// md.update(mac.toByteArray()) // 计算md5函数 +// /** +// * digest()最后确定返回md5 hash值,返回值为8位字符串。 +// * 因为md5 hash值是16位的hex值,实际上就是8位的字符 +// * BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 +// * 一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方) +// */ +// /** +// * digest()最后确定返回md5 hash值,返回值为8位字符串。 +// * 因为md5 hash值是16位的hex值,实际上就是8位的字符 +// * BigInteger函数则将8位的字符串转换成16位hex值,用字符串来表示;得到字符串形式的hash值 +// * 一个byte是八位二进制,也就是2位十六进制字符(2的8次方等于16的2次方) +// */ +// sn = BigInteger(1, md.digest()).toString(16) // 16是表示转换为16进制数 + val deviceSN = SnUtils.getDeviceSN() + sn = deviceSN } return sn!! } diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/PlatformUtils.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/PlatformUtils.kt new file mode 100644 index 0000000..28aa923 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/PlatformUtils.kt @@ -0,0 +1,62 @@ +package com.yinuo.safetywatcher.watcher.utils + +import android.content.Intent +import com.common.commonlib.CommonApplication +import java.text.SimpleDateFormat +import java.util.Locale + + +object PlatformUtils { + + val format: SimpleDateFormat by lazy { + SimpleDateFormat("yyyy-MM-dd-HH-mm-ss", Locale.ROOT) + } + + fun setEthIpAddress(ip: String, netmask: String, gateway: String, dns: String) { + val intent = Intent("android.ido.intent.action.ethernet") + intent.putExtra("mode", "Static") + intent.putExtra("iface", "eth0") + intent.putExtra("ipAddr", ip) + intent.putExtra("netmask", netmask) + intent.putExtra("gateway", gateway) + intent.putExtra("dns1", dns) + intent.putExtra("dns2", dns) //如果只有一个dns,可将dns2设置为和dns1一样 + CommonApplication.getContext()?.sendBroadcast(intent) + } + + fun operateWifi(enable: Boolean) { + val intent = Intent("android.ido.intent.action.wifionoff") + intent.putExtra("enable", enable) //true,开启; false,关闭 + CommonApplication.getContext()?.sendBroadcast(intent) + } + + fun setSystemTime(timeMs: Long) { + val formatTime = format.format(timeMs) + val strings = formatTime.split("-") + val times = strings.map { + it.toInt() + }.toTypedArray().toIntArray() +// val time = intArrayOf(2022, 9, 30, 18, 0, 0) + val intent = Intent("android.ido.intent.action.settime") + intent.putExtra("time", times) + CommonApplication.getContext()?.sendBroadcast(intent) + } + + fun hideStatusBar(hide: Boolean = true) { + val action = + if (hide) "android.ido.intent.action.statusbar.HIDE" + else "android.ido.intent.action.statusbar.HIDE" + val intent = Intent(action) + intent.putExtra("save", true) //true,断电保存;false,断电不保存 + CommonApplication.getContext()?.sendBroadcast(intent) + } + + fun hideNavigation(hide: Boolean = true) { + val action = + if (hide) "android.ido.intent.action.navigation.HIDE" + else "android.ido.intent.action.navigation.SHOW" + val intent = Intent(action) + intent.putExtra("save", true) //true,断电保存;false,断电不保存 + CommonApplication.getContext()?.sendBroadcast(intent) + } +} \ No newline at end of file diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SnUtils.java b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SnUtils.java new file mode 100644 index 0000000..ad98a88 --- /dev/null +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/utils/SnUtils.java @@ -0,0 +1,17 @@ +package com.yinuo.safetywatcher.watcher.utils; + +import java.lang.reflect.Method; + +public class SnUtils { + public static String getDeviceSN() { + String serial = null; + try { + Class c = Class.forName("android.os.SystemProperties"); + Method get = c.getMethod("get", String.class); + serial = (String) get.invoke(c, "ro.serialno"); + } catch (Exception e) { + e.printStackTrace(); + } + return serial; + } +} diff --git a/app/src/main/java/com/yinuo/safetywatcher/watcher/wifi/ui/GlobalMonitorActivity.kt b/app/src/main/java/com/yinuo/safetywatcher/watcher/wifi/ui/GlobalMonitorActivity.kt index 3f1f6d6..db92c6e 100644 --- a/app/src/main/java/com/yinuo/safetywatcher/watcher/wifi/ui/GlobalMonitorActivity.kt +++ b/app/src/main/java/com/yinuo/safetywatcher/watcher/wifi/ui/GlobalMonitorActivity.kt @@ -13,6 +13,7 @@ import com.yinuo.safetywatcher.R import com.yinuo.safetywatcher.databinding.ActivityMonitorBinding import com.yinuo.safetywatcher.watcher.base.NoOptionsActivity import com.yinuo.safetywatcher.watcher.ui.view.ConfirmDialog +import com.yinuo.safetywatcher.watcher.utils.PlatformUtils import com.yinuo.safetywatcher.watcher.wifi.WiFiModule import com.yinuo.safetywatcher.watcher.wifi.info.WiFiRemoveStatusInfo import com.yinuo.safetywatcher.watcher.wifi.info.WiFiScanInfo @@ -56,9 +57,11 @@ class GlobalMonitorActivity : NoOptionsActivity() { private fun initEvents() { mBinding.wifiSwitch!!.setOnCheckedChangeListener { _, isChecked -> if (isChecked) { + PlatformUtils.operateWifi(true) WiFiModule.getInstance().startScan(scanActionListener) } else { - WiFiModule.getInstance().disableWifi() +// WiFiModule.getInstance().disableWifi() + PlatformUtils.operateWifi(false) mData!!.clear() mAdapter?.setData(mData!!) mBinding.tvStatus.text = "WiFi已关闭" diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 537d65a..944c857 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -7,7 +7,7 @@ #ffffff #33ffffff #4Cffffff - #1ED5CA + #242F4D #66000000 diff --git a/buildCommon/commonLibConfig.gradle b/buildCommon/commonLibConfig.gradle index 4ef5b2a..d4764e8 100644 --- a/buildCommon/commonLibConfig.gradle +++ b/buildCommon/commonLibConfig.gradle @@ -1,8 +1,8 @@ project.ext { sign = [ - keystore_path : "../innovationapp.jks", + keystore_path : "../sbc3566.jks", keystore_pwd : "123456", - keystore_alias: "yinuo" + keystore_alias: "sbc3566" ] compileOptions = [ diff --git a/sbc3566.jks b/sbc3566.jks new file mode 100644 index 0000000..f8fcbe5 Binary files /dev/null and b/sbc3566.jks differ