From 462629386ee6b916068a6af2a1b4a457e7e3ec6a Mon Sep 17 00:00:00 2001 From: yezhiqiu <983577727@qq.com> Date: Fri, 22 May 2026 15:31:08 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BC=98=E5=8C=96=E5=88=A4=E6=96=AD=E5=9B=BA?= =?UTF-8?q?=E4=BB=B6=E5=8D=87=E7=BA=A7=E6=96=B9=E6=B3=95=EF=BC=9A=E6=94=B9?= =?UTF-8?q?=E4=B8=BA=E4=BB=8E=E4=BD=8D=E4=BE=9D=E6=AC=A1=E5=88=A4=E6=96=AD?= =?UTF-8?q?=202.=E4=BF=AE=E5=A4=8D=E5=88=AB=E7=9A=84=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=EF=BC=88=E9=9D=9Emap=E9=A1=B5=EF=BC=89=E6=9C=AA=E8=AE=BE?= =?UTF-8?q?=E7=BD=AEwifi=E5=AE=A0=E7=89=A9=E5=88=87=E6=8D=A2=E5=B7=B2?= =?UTF-8?q?=E8=AE=BE=E7=BD=AEwifi=E5=AE=A0=E7=89=A9=EF=BC=8C=E4=BC=9A?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=9C=AA=E8=AE=BE=E7=BD=AEwifi=E5=BC=B9?= =?UTF-8?q?=E7=AA=97bug=203.=E4=BC=98=E5=8C=96=E9=83=A8=E5=88=86=E6=96=87?= =?UTF-8?q?=E6=A1=88=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/build.gradle | 2 +- .../ui/fragment/device/HomeTrackFragment.kt | 2 +- .../tracker/ui/fragment/map/MapV3Fragment.kt | 160 ++++++++++-------- .../java/com/abbidot/tracker/util/Util.kt | 3 +- .../abbidot/tracker/vm/DeviceDFUViewModel.kt | 26 ++- .../layout/activity_help_active_tracker.xml | 1 - .../main/res/layout/dialog_common_layout.xml | 8 +- app/src/main/res/layout/dialog_dfu_new.xml | 9 +- .../res/layout/dialog_package_upgrade.xml | 7 +- app/src/main/res/values-de/strings.xml | 8 +- app/src/main/res/values-zh-rCN/strings.xml | 6 +- app/src/main/res/values/strings.xml | 26 +-- 12 files changed, 151 insertions(+), 107 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 5adf06e..0847134 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -30,7 +30,7 @@ android { targetSdkVersion 35 versionCode 2206 // versionName "2.2.6" - versionName "2.2.6-Beta2" + versionName "2.2.6-Beta3" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt index 64b51f0..b00339e 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/device/HomeTrackFragment.kt @@ -966,7 +966,7 @@ class HomeTrackFragment : val data2 = SRBleCmdUtil.instance.byteToInt(data[2]) if (data0 == 9) { if (data2 == 0) { - val strVersion = String(data.sliceArray(3..11)) + val strVersion = String(data.sliceArray(3..11)).substringBefore(0x00.toChar()) LogUtil.e("设备固件版本号:$strVersion") findItem(mTrackMenuList, getString(R.string.txt_firmware_version))?.let { it.menuValue = strVersion diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt index f225cc4..8c506fa 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/MapV3Fragment.kt @@ -338,29 +338,7 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i } //接收固件版本消息 XEventBus.observe(this, EventName.BleFirmwareVersion) { receiveData: ReceiveDeviceData -> - getHomeV2Activity()?.let { home -> - home.getPet(false)?.apply { - if (shared == ConstantInt.NoShare && availableOrder == ConstantInt.Type1 && macID == receiveData.mac && !showDFUDialog) { - receiveData.data?.let { data -> - val version = String(data.sliceArray(3..11)) - if (mDeviceDFUViewModel.checkVersionUpdate(version, serviceVersion)) { - showDFUDialog = true - val str = String.format( - getString(R.string.txt_new_firmware_version), serviceVersion - ) - ViewUtil.instance.showDialog( - mContext!!, str, object : BaseDialog.OnDialogOkListener { - override fun onOkClick(dialog: BaseDialog<*>) { - dialog.dismiss() - home.goDFU() - } - }, okTextResId = R.string.txt_upgrade - ) - } - } - } - } - } + showDfuTipDialog(receiveData) } //设备获取手机位置 XEventBus.observe(this, EventName.BleGetLocation) { mac: String -> @@ -431,16 +409,53 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i // } } - private fun dealMapData(data: MapDeviceBean) { - mMapDeviceBean?.let { m -> - data.notifyLocationFail = m.notifyLocationFail - data.isCloseMsg = m.isCloseMsg - data.isCloseBattery = m.isCloseBattery - data.canShowBattery = m.canShowBattery + /** + *显示固件升级弹窗提示 + */ + private fun showDfuTipDialog(receiveData: ReceiveDeviceData) { + getHomeV2Activity()?.let { home -> + home.getPet(false)?.apply { + if (shared == ConstantInt.NoShare && availableOrder == ConstantInt.Type1 && macID == receiveData.mac && !showDFUDialog) { + receiveData.data?.let { data -> + val version = String(data.sliceArray(3..11)).substringBefore(0x00.toChar()) + if (mDeviceDFUViewModel.checkVersionUpdate(version, serviceVersion)) { + showDFUDialog = true + val str = String.format( + getString(R.string.txt_new_firmware_version), serviceVersion + ) + ViewUtil.instance.showDialog( + mContext!!, + str, + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + dialog.dismiss() + home.goDFU() + } + }, + okTextResId = R.string.txt_upgrade, + cancelTextResId = R.string.txt_cancel + ) + } + } + } + } } - mMapDeviceBean = data + } + private fun dealMapData(data: MapDeviceBean) { getHomeV2Activity()?.apply { + mMapDeviceBean?.let { m -> + getPet(false)?.let { p -> + //防止其他fragment页面切换了宠物,定时更新数据导致还是之前宠物的数据 + if (data.deviceMacId != p.macID) return + } + data.notifyLocationFail = m.notifyLocationFail + data.isCloseMsg = m.isCloseMsg + data.isCloseBattery = m.isCloseBattery + data.canShowBattery = m.canShowBattery + } + mMapDeviceBean = data + if (isNotifyRefreshLocation) { if (data.liveFlag == 0) { stopRefreshLocation() @@ -725,44 +740,7 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i MMKVUtil.putBoolean(MMKVKey.isGpsToGCJ02, !isOutOfChina) } - getHomeV2Activity()?.let { - it.getPet(false)?.let { pet -> - //检测没有设置wif就提示弹窗 - if (pet.shared == ConstantInt.NoShare && pet.availableOrder == ConstantInt.Type1 && inWifiZone == ConstantInt.Type2 && !pet.showNoWifiDialog) { - pet.showNoWifiDialog = true - CommonDialog2( - mContext!!, - getString(R.string.txt_edit_power_zone), - getString(R.string.txt_sure), - object : BaseDialog.OnDialogOkListener { - override fun onOkClick(dialog: BaseDialog<*>) { - Intent( - mContext, AddWifiPowerZone1Activity::class.java - ).let { i -> - //判断是否国内经纬度,需要坐标转换 - if (MMKVUtil.getBoolean(MMKVKey.isGpsToGCJ02)) { - val convertLatLon = - LonAndLatUtil.convertFromWGS84ToGCJ02( - latitude, longitude - ) - i.putExtra( - ConstantString.Latitude, convertLatLon[0] - ) - i.putExtra( - ConstantString.Longitude, convertLatLon[1] - ) - } else { - i.putExtra(ConstantString.Latitude, latitude) - i.putExtra(ConstantString.Longitude, longitude) - } - i.putExtra(ConstantString.Pet, pet) - startActivity(i) - } - } - }).show() - } - } - } + showNoSetWifiDialog(this) mHomeMapCommon.refreshPetCurrentLocation(latitude, longitude, isMoveCamera) isMoveCamera = false @@ -780,6 +758,52 @@ class MapV3Fragment : BaseFragment(FragmentMapV3Binding::i } } + /** + * 显示没有设置wifi弹窗 + */ + private fun showNoSetWifiDialog(mapDeviceBean: MapDeviceBean) { + mapDeviceBean.apply { + getHomeV2Activity()?.let { + it.getPet(false)?.let { pet -> + //检测没有设置wif就提示弹窗 + if (pet.shared == ConstantInt.NoShare && pet.availableOrder == ConstantInt.Type1 && inWifiZone == ConstantInt.Type2 && !pet.showNoWifiDialog) { + pet.showNoWifiDialog = true + CommonDialog2( + mContext!!, + getString(R.string.txt_add_wifi_tips), + getString(R.string.txt_add), + object : BaseDialog.OnDialogOkListener { + override fun onOkClick(dialog: BaseDialog<*>) { + Intent( + mContext, AddWifiPowerZone1Activity::class.java + ).let { i -> + //判断是否国内经纬度,需要坐标转换 + if (MMKVUtil.getBoolean(MMKVKey.isGpsToGCJ02)) { + val convertLatLon = + LonAndLatUtil.convertFromWGS84ToGCJ02( + latitude, longitude + ) + i.putExtra( + ConstantString.Latitude, convertLatLon[0] + ) + i.putExtra( + ConstantString.Longitude, convertLatLon[1] + ) + } else { + i.putExtra(ConstantString.Latitude, latitude) + i.putExtra(ConstantString.Longitude, longitude) + } + i.putExtra(ConstantString.Pet, pet) + startActivity(i) + } + } + }).show() + } + } + } + } + } + private fun setRefreshLocationBtnState() { getHomeV2Activity()?.apply { getPet(false)?.let { pet -> diff --git a/app/src/main/java/com/abbidot/tracker/util/Util.kt b/app/src/main/java/com/abbidot/tracker/util/Util.kt index f21abfe..f70f58c 100644 --- a/app/src/main/java/com/abbidot/tracker/util/Util.kt +++ b/app/src/main/java/com/abbidot/tracker/util/Util.kt @@ -872,13 +872,14 @@ class Util { /** - * 限制16个字母或8个中文 + * 限制16个字母或8个中文,限制空格输入 * 截断到最大16单位 * @param limitLetterLength 限制字母的个数 */ fun String.limitLetterChinese(limitLetterLength: Int): String { val sb = StringBuilder() for (c in this) { + if (c == ' ') break val temp = sb.toString() + c if (temp.calcLengthUnit() > limitLetterLength) break sb.append(c) diff --git a/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt index f62a06a..9355de1 100644 --- a/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt +++ b/app/src/main/java/com/abbidot/tracker/vm/DeviceDFUViewModel.kt @@ -74,11 +74,27 @@ class DeviceDFUViewModel(application: Application) : AndroidViewModel(applicatio * 对比版本号是否可以更新 */ fun checkVersionUpdate(localVersion: String, serviceVersion: String): Boolean { - if (TextUtils.isEmpty(localVersion)) return false - val localVersionInt = (localVersion.replace(".", "").substring(1, 4)).toInt() - val serviceVersionInt = serviceVersion.replace(".", "").toInt() - LogUtil.e("对比固件版本localVersionInt=$localVersionInt,serviceVersionInt=$serviceVersionInt") - return serviceVersionInt >= localVersionInt + try { + LogUtil.e("localVersion=$localVersion,serviceVersion=$serviceVersion") + if (TextUtils.isEmpty(localVersion) || TextUtils.isEmpty(serviceVersion)) return false + val localVersionNum = localVersion.uppercase().substringAfter("V").substringBefore("-") + LogUtil.e("对比固件版本localVersionNum=$localVersionNum,serviceVersion=$serviceVersion") + val localVersions = localVersionNum.split(".") + val serviceVersions = serviceVersion.split(".") + var newVersion = false + var len = localVersions.size + if (len > serviceVersions.size) len = serviceVersions.size + for (i in 0 until len) { + if (serviceVersions[i].toInt() > localVersions[i].toInt()) { + newVersion = true + break + } + } + return newVersion + } catch (e: Exception) { + LogUtil.e("对比固件版本出错,${e.message}") + return false + } } diff --git a/app/src/main/res/layout/activity_help_active_tracker.xml b/app/src/main/res/layout/activity_help_active_tracker.xml index a51f075..946642a 100644 --- a/app/src/main/res/layout/activity_help_active_tracker.xml +++ b/app/src/main/res/layout/activity_help_active_tracker.xml @@ -1,6 +1,5 @@ + android:paddingTop="@dimen/dp_18" + android:paddingBottom="@dimen/dp_6"> @@ -39,7 +40,8 @@ android:layout_width="@dimen/dp_160" android:layout_height="@dimen/dp_42" android:layout_gravity="center_horizontal" - android:layout_marginTop="@dimen/dp_36" + android:layout_marginTop="@dimen/dp_24" + android:layout_marginBottom="@dimen/dp_2" android:text="@string/txt_upgrade_now" android:textColor="@color/select_color" android:textSize="@dimen/textSize16" @@ -50,9 +52,8 @@ android:id="@+id/tv_dialog_dfu_new_later_btn" style="@style/my_TextView_style_v2" android:layout_gravity="center_horizontal" - android:layout_marginTop="@dimen/dp_8" android:background="@drawable/selector_transparent_pressed" - android:padding="@dimen/dp_6" + android:padding="@dimen/dp_16" android:text="@string/txt_later" android:textColor="@color/select_color" android:textSize="@dimen/textSize14" diff --git a/app/src/main/res/layout/dialog_package_upgrade.xml b/app/src/main/res/layout/dialog_package_upgrade.xml index 6a995c8..1975e25 100644 --- a/app/src/main/res/layout/dialog_package_upgrade.xml +++ b/app/src/main/res/layout/dialog_package_upgrade.xml @@ -5,7 +5,8 @@ android:layout_height="wrap_content" android:background="@drawable/shape16_white_color_bg" android:orientation="vertical" - android:padding="@dimen/dp_18"> + android:paddingTop="@dimen/dp_18" + android:paddingBottom="@dimen/dp_6"> Familie hinzufügen Laden Sie Familienmitglieder ein, den Standort oder die Aktivität des Haustiers zu teilen. Familienmitglieder können keine Zäune erstellen oder Einstellungen ändern. Einladen - Einladung erfolgreich, bitte benachrichtigen Sie Ihre Familie. + Erfolgreich gesendet Zurück GPS-Aktualisierungen Ausschalten @@ -189,7 +189,7 @@ Erfolgreich hinzugefügt Erfolgreich gespeichert Anmeldung erfolgreich - Fertig + Erfolgreich geändert Hinweise Berechtigungsabfrage fehlgeschlagen Berechtigung erfolgreich erhalten @@ -303,7 +303,7 @@ App-Cache löschen bestätigen? Heller Modus Firmware-Update - Erfolgreich übermittelt, danke für Ihr Feedback + Erfolgreich übermittelt Erfolgreich gelöscht Lädt… Anmeldung fehlgeschlagen. Bitte versuchen Sie es erneut @@ -640,7 +640,7 @@ In Bluetooth-Reichweite? Ort einen nahen Tracker per Radar. Live wird verfügbar, beendet aber den Energiesparmodus. Haustier-Tracking WLAN-Zoneneinstellungen - Problem oder Vorschlag eingeben + Bitte geben Sie Ihr Feedback ein Hinterlass deine E-Mail, wir helfen dir schneller E-Mail-Adresse eingeben Datei wählen diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 3f97cf8..79407a8 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -158,7 +158,7 @@ 添加家人 邀请您的家人分享宠物的位置或活动。 家庭成员不能创建栅栏或修改设置。 邀请 - 邀请成功,请通知你的家人 + 发送成功 返回 追踪间隔 关机 @@ -347,7 +347,7 @@ 确定要清除缓存? 灯光模式 固件升级 - 提交成功,谢谢您的反馈 + 提交成功 清除成功 加载中... 登录失败,请重新登录 @@ -684,7 +684,7 @@ 在蓝牙范围内?可使用雷达精确定位附近追踪器。实时追踪也将可用,但使用它会结束省电模式。 正在追踪您的宠物 WiFi区域设置 - 输入您的问题或建议 + 输入您的反馈 请留下您的邮箱,我们能更快帮助您 输入您的电子邮箱地址 选择文件 diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index ccc9ae0..c7170e8 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -216,7 +216,7 @@ Add Family Invite you family to share the location or activity of the pet. Family members cannot create fences or modify settings. Invite - Invite successful, please notify your family. + Successfully sent Back GPS Updates Turn Off @@ -291,7 +291,7 @@ Added successfully Saved successfully Log in successful - Done + Successfully changed Tips Failed to get permission Successfully obtained permission @@ -405,7 +405,7 @@ Confirm clearing app cache? Light Mode Firmware Upgrade - Submitted successfully, thank you for your feedback + Successfully submitted Cleared successfully Loading… Log in failed. Please try again @@ -485,7 +485,7 @@ Firmware Name Firmware Version Firmware file size - upgrade + Upgrade Upgrade successful Upgrade failed Download firmware @@ -742,7 +742,7 @@ With Bluetooth range? Pinpoint a nearby tracker using Radar. Live will also become available, but using it will end power saving. Tracking your pet WiFi Zone Settings - Enter your problem or suggestion + Please enter your feedback Please leave your email, we can help you faster Enter Your Email Address Choose File @@ -847,8 +847,8 @@ Reminder Yesterday Power On/Off - Charge and unplug to turn on Flashing green light = on - Choose a subscription Tap to activate the tracker Enable GPS and cellular tracking + Charge and unplug to turn on \nFlashing green light = on + Choose a subscription \nTap to activate the tracker \nEnable GPS and cellular tracking Active Tracker (The GPS and cellular network conditions can vary depending on the environment. Before placing it on your pet, check various locations around you to evaluate the GPS and network status.) Check Tracker Status @@ -1010,8 +1010,8 @@ Sure to delete this card? Account exists. Log in now? Selected date is out of range - Shake to turn on Flashing green light confirms on - Go to Pet > Tracker Check Network GPS Battery WiFi Zone Bluetooth LED GPS and cellular signals may vary by location Test in different locations before use + Shake to turn on \nFlashing green light confirms on + Go to Pet > Tracker Check \nNetwork \nGPS \nBattery \nWiFi Zone \nBluetooth \nLED \nGPS and cellular signals may vary by location \nTest in different locations before use Tracker is on charging Subscribed Send @@ -1094,10 +1094,10 @@ First use Daily use Sleep Mode - 15 minutes no movement → sleep mode Auto wake on movement Battery updates every 24 hours + 15 minutes no movement → sleep mode \nAuto wake on movement \nBattery updates every 24 hours WiFi Zone(Home) - Connect to home WiFi GPS off → save battery Update every ~60 minutes - Pet > Tracker > GPS Update Select 3–15 min Short interval = higher battery use Default: 5 min + Connect to home WiFi \nGPS off → save battery \nUpdate every ~60 minutes + Pet > Tracker > GPS Update \nSelect 3–15 min \nShort interval = higher battery use \nDefault: 5 min Set Fence type Safe Zone or No-go Zone Set boundary @@ -1112,5 +1112,7 @@ 1.Flexible short-term protection\n2.Standard customer support 1.1 device replacement included\n2.Dedicated customer support\n3.Annual protection coverage 1.VIP priority support\n2.Fast replacement service (1 included)\n3.Enhanced protection\n4.Hassle-free pet protection + Add Wi-Fi zone to prolong care time + Add \ No newline at end of file