1.订阅套餐新ui:增加套餐描述;修改价格区底色;Best 用皇冠图标代替;

2.新增Initializing Device界面
3.校对新增多语言字符
This commit is contained in:
yezhiqiu
2026-05-14 17:14:58 +08:00
parent 46c0a5b2a4
commit ca554656c5
28 changed files with 325 additions and 52 deletions

View File

@@ -193,6 +193,9 @@ dependencies {
// implementation 'com.google.android.material:material:1.10.0'
// implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.legacy:legacy-support-v4:1.0.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.10.0'
implementation 'androidx.activity:activity:1.8.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.2.1'

View File

@@ -38,6 +38,7 @@
<uses-permission
android:name="android.permission.WRITE_SETTINGS"
tools:ignore="ProtectedPermissions" /> <!-- android 9.0上使用前台服务,需要添加权限 -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- BLUETOOTH permissions are added by lib_dfu module. -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" /> <!-- 用于读取手机当前的状态 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" /> <!-- 读取缓存数据 -->
<!-- 蓝牙扫描权限 -->
@@ -85,8 +86,7 @@
android:name="android.permission.BLUETOOTH_SCAN"
android:usesPermissionFlags="neverForLocation"
tools:targetApi="s" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" /> <!-- BLUETOOTH permissions are added by lib_dfu module. -->
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission android:name="android.permission.BLUETOOTH_CONNECT" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE_CONNECTED_DEVICE" /> <!-- 指定微信包名 -->
<queries>
<package android:name="com.tencent.mm" />
@@ -105,6 +105,9 @@
android:usesCleartextTraffic="true"
tools:replace="android:supportsRtl"
tools:targetApi="n">
<activity
android:name=".ui.activity.device.InitializingDeviceActivity"
android:exported="false" />
<activity
android:name=".ui.activity.device.set.PowerOffActivity"
android:exported="false"

View File

@@ -1,7 +1,11 @@
package com.abbidot.tracker.adapter
import android.content.Context
import android.content.res.ColorStateList
import android.text.TextUtils
import android.view.View
import androidx.core.content.ContextCompat
import androidx.core.graphics.toColorInt
import com.abbidot.baselibrary.list.BaseRecyclerAdapter
import com.abbidot.baselibrary.list.RecyclerViewHolder
import com.abbidot.baselibrary.util.Utils
@@ -9,6 +13,8 @@ import com.abbidot.tracker.R
import com.abbidot.tracker.bean.PackageBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundButtonDrawable
import com.qmuiteam.qmui.widget.roundwidget.QMUIRoundRelativeLayout
/**
*Created by .yzq on 2024/8/6/006.
@@ -51,6 +57,10 @@ class ChoosePlanAdapter(
getView(R.id.ll_choose_plan_item_discount_percent).let {
it.visibility = if (item.popularType == ConstantInt.Type1) View.INVISIBLE
else View.INVISIBLE
}
getView(R.id.iv_choose_plan_item_popular_image).let {
it.visibility = if (item.popularType == ConstantInt.Type1) View.VISIBLE
else View.INVISIBLE
}
@@ -62,6 +72,44 @@ class ChoosePlanAdapter(
if (item.popularType == ConstantInt.Type1) it.visibility = View.GONE
else it.visibility = View.GONE
}
(getView(R.id.rl_choose_plan_item_price) as QMUIRoundRelativeLayout).let {
(it.background as QMUIRoundButtonDrawable).let { drawable ->
val bgColor = if (TextUtils.isEmpty(item.bottomBgColor)) {
ContextCompat.getColor(mContext, R.color.tracker_manage_bg_color)
} else {
item.bottomBgColor.toColorInt()
}
drawable.setBgData(ColorStateList.valueOf(bgColor))
}
}
getTextView(R.id.tv_choose_plan_item_power).let {
it.visibility = if (item.list.isNullOrEmpty()) View.GONE
else {
var str = getManyLanguageLimitDec(item.listTitleCode)
if (TextUtils.isEmpty(str)) {
for (i in 0 until item.list!!.size) {
val packageDec = item.list!![i]
str += "${i + 1}.${packageDec.title}"
if (i != item.list!!.size - 1) {
str += "\n"
}
}
}
it.text = str
View.VISIBLE
}
}
}
}
private fun getManyLanguageLimitDec(nameCode: Int): String {
return when (nameCode) {
ConstantInt.Type1 -> mContext.getString(R.string.txt_package_permission1)
ConstantInt.Type2 -> mContext.getString(R.string.txt_package_permission2)
ConstantInt.Type3 -> mContext.getString(R.string.txt_package_permission3)
else -> ""
}
}
}

View File

@@ -24,5 +24,9 @@ data class PackageBean(
var planTimeMonthsCount: Int,
var everyMonthSafeFee: Double,
var billedMode: String,
var selected: Boolean
var selected: Boolean,
var bottomBgColor: String,
var listTitleCode: Int,
var planNameCode: Int,
var list: MutableList<PackageBenefitsBean>?
) : Parcelable

View File

@@ -1,8 +1,12 @@
package com.abbidot.tracker.bean
import android.os.Parcelable
import kotlinx.parcelize.Parcelize
/**
*Created by .yzq on 2024/9/5/005.
* @link
* @description:
*/
data class PackageBenefitsBean(var title: String, var status: Int, var titleCode: Int)
@Parcelize
data class PackageBenefitsBean(var title: String, var status: Int, var titleCode: Int) : Parcelable

View File

@@ -98,11 +98,9 @@ class UserProfileActivity :
ilUserProfileEmailLayout.ivInputRepresentImage
)
mUploadImageUrl = MMKVUtil.getString(MMKVKey.HeadUrl)
// mUploadImageUrl = MMKVUtil.getString(MMKVKey.HeadUrl)
ViewUtil.instance.imageLoadUrl(
ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage,
mUploadImageUrl,
R.drawable.pic_avatar_df
ilUserProfileHeadLayout.ilPetProfileHead.appHeadImage, "", R.drawable.pic_avatar_df
)
}

View File

@@ -0,0 +1,52 @@
package com.abbidot.tracker.ui.activity.device
import android.content.Intent
import com.abbidot.tracker.R
import com.abbidot.tracker.base.BaseActivity
import com.abbidot.tracker.bean.PetBean
import com.abbidot.tracker.constant.ConstantInt
import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.databinding.ActivityInitializingDeviceBinding
import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity
import com.abbidot.tracker.util.Util
class InitializingDeviceActivity :
BaseActivity<ActivityInitializingDeviceBinding>(ActivityInitializingDeviceBinding::inflate) {
private var mPetBean: PetBean? = null
private var isFirstBind = false
private var mDeviceType = ConstantInt.Type1
override fun getTopBar() = null
override fun initData() {
super.initData()
intent.extras?.apply {
isFirstBind = getBoolean(ConstantString.isFirstBind, false)
mPetBean = Util.getParcelableAdaptive(intent, ConstantString.Pet, PetBean::class.java)
mDeviceType = getInt(ConstantString.Type, ConstantInt.Type1)
}
mViewBinding.apply {
val str = if (mDeviceType == ConstantInt.Type2) {
tvPaySuccessInitDeviceDec.setText(R.string.txt_init_g40_dec)
ivInitDeviceFlashImage.setImageResource(R.drawable.icon_init_g40_flash_image)
String.format(getString(R.string.txt_init_device_tip), "1-5")
} else String.format(getString(R.string.txt_init_device_tip), "15-20")
tvPaySuccessInitDeviceTip.text = str
btnPaySuccessInitDeviceNext.setOnClickListener {
val intent = Intent(mContext, AddWifiPowerZone1Activity::class.java)
intent.putExtra(ConstantString.Pet, mPetBean)
intent.putExtra(ConstantString.isFirstBind, isFirstBind)
startActivityFinish(intent)
}
}
}
override fun leftBackOnClick() {
}
}

View File

@@ -25,7 +25,7 @@ import com.abbidot.tracker.constant.ConstantString
import com.abbidot.tracker.constant.GetResultCallback
import com.abbidot.tracker.databinding.ActivityPaymentSuccessBinding
import com.abbidot.tracker.deprecated.ui.activity.vm.AddTrackerDeviceViewModel
import com.abbidot.tracker.ui.activity.device.wifi.AddWifiPowerZone1Activity
import com.abbidot.tracker.ui.activity.device.InitializingDeviceActivity
import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil
@@ -221,9 +221,12 @@ class PaymentSuccessActivity :
mViewBinding.root.postDelayed({
MMKVUtil.putInt(MMKVKey.isBindPet, ConstantInt.isBind)
mPetBean?.apply {
val intent = Intent(mContext, AddWifiPowerZone1Activity::class.java)
val intent = Intent(mContext, InitializingDeviceActivity::class.java)
intent.putExtra(ConstantString.Pet, this)
intent.putExtra(ConstantString.isFirstBind, true)
mPayResult?.let { p ->
intent.putExtra(ConstantString.Type, p.deviceType)
}
startActivity(intent)
}
}, 1500)

View File

@@ -113,11 +113,11 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
layout.tvPetLocationUpdateTimeFormat.visibility =
if (powerSwitch == ConstantInt.Type2) View.GONE
else {
if (Util.isTimeoutReport(updateTime, gnssInterval)) {
if (Util.isTimeoutReport(latLonUpdateTime, gnssInterval)) {
layout.tvPetLocationUpdateTimeFormat.text = String.format(
getString(R.string.txt_location_ago),
Utils.getTimeDifference(
updateTime * 1000, System.currentTimeMillis()
latLonUpdateTime * 1000, System.currentTimeMillis()
)
)
View.VISIBLE

View File

@@ -48,6 +48,7 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import coil.load
import coil.request.CachePolicy
import coil.transform.Transformation
import com.abbidot.baselibrary.constant.ConState
import com.abbidot.baselibrary.constant.MMKVKey
@@ -86,6 +87,7 @@ import com.qmuiteam.qmui.alpha.QMUIAlphaImageButton
import com.qmuiteam.qmui.util.QMUIDisplayHelper
import com.qmuiteam.qmui.widget.dialog.QMUIBottomSheet.BottomListSheetBuilder
import com.qmuiteam.qmui.widget.grouplist.QMUICommonListItemView
import okhttp3.internal.http2.Header
import java.util.Calendar
@@ -641,10 +643,19 @@ class ViewUtil private constructor() {
error(errorImageResId)
//淡入淡出的动画时间
// crossfade(2000)
// memoryCachePolicy(CachePolicy.ENABLED)//设置内存的缓存策略
// diskCachePolicy(CachePolicy.ENABLED)//设置磁盘的缓存策略
// networkCachePolicy(CachePolicy.ENABLED)//设置网络的缓存策略
// OkHttpClient.Builder().cache(CoilUtils.createDefaultCache(context))
diskCachePolicy(CachePolicy.ENABLED)//设置磁盘的缓存策略
memoryCachePolicy(CachePolicy.ENABLED)//设置内存的缓存策略
networkCachePolicy(CachePolicy.ENABLED)//设置网络的缓存策略
// val okHttpCache = Cache(
// context.cacheDir.resolve("okhttp_cache"), 50 * 1024 * 1024L
// )
// OkHttpClient.Builder().cache(okHttpCache)
// 请求优先 WebP 更小更快
Header("Accept", "image/webp,image/jpeg;q=0.8")
if (imageView.width > 0 && imageView.height > 0) {
size(imageView.width, imageView.height)// 按View实际大小解码
}
transformations(transformations.toList())
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

View File

@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.appcompat.widget.LinearLayoutCompat 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:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center_horizontal"
android:orientation="vertical"
tools:context=".ui.activity.device.InitializingDeviceActivity">
<com.abbidot.tracker.widget.TypefaceTextView
style="@style/my_second_bold_title_TextView_style"
android:layout_marginTop="@dimen/dp_100"
android:text="@string/txt_init_device" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_pay_success_init_device_tip"
style="@style/my_TextView_style_v2"
android:layout_marginHorizontal="@dimen/dp_42"
android:layout_marginTop="@dimen/dp_12"
android:text="@string/txt_init_device_tip"
android:textColor="@color/select_color3"
android:textSize="@dimen/textSize14"
app:lineHeight="@dimen/textSize20"
app:typeface="@string/roboto_regular_font" />
<androidx.appcompat.widget.AppCompatImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_50"
android:src="@drawable/icon_init_device_dec_image" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_pay_success_init_device_dec"
style="@style/my_TextView_style_v2"
android:layout_marginTop="@dimen/dp_26"
android:gravity="start"
android:text="@string/txt_init_device_dec"
android:textSize="@dimen/textSize14"
app:lineHeight="@dimen/textSize26"
app:typeface="@string/roboto_regular_font" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_init_device_flash_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/dp_30"
android:src="@drawable/icon_init_g30_flash_image" />
<View
android:layout_width="wrap_content"
android:layout_height="0dp"
android:layout_weight="1" />
<com.abbidot.tracker.widget.TypefaceButton
android:id="@+id/btn_pay_success_init_device_next"
style="@style/my_match_RoundRect_Button_style"
android:text="@string/txt_continue"
app:qmui_radius="@dimen/dp_64"
app:typeface="@string/roboto_bold_font" />
</androidx.appcompat.widget.LinearLayoutCompat>

View File

@@ -30,6 +30,7 @@
android:textSize="@dimen/textSize16"
android:textStyle="bold" />
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout
android:id="@+id/ll_choose_plan_item_discount_percent"
android:layout_width="wrap_content"
@@ -61,46 +62,79 @@
app:typeface="@string/roboto_bold_font" />
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundLinearLayout>
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_money"
style="@style/my_TextView_style_v2"
android:layout_below="@id/tv_choose_plan_item_name"
android:layout_alignStart="@id/tv_choose_plan_item_name"
android:layout_marginVertical="@dimen/dp_22"
android:text="@string/txt_money_unit"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize26"
android:textStyle="bold" />
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/iv_choose_plan_item_popular_image"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_marginTop="@dimen/dp_12"
android:layout_marginEnd="@dimen/dp_18"
android:src="@drawable/icon_popular_package_image" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_unit"
android:id="@+id/tv_choose_plan_item_power"
style="@style/my_TextView_style_v2"
android:layout_alignBaseline="@id/tv_choose_plan_item_money"
android:layout_alignTop="@id/tv_choose_plan_item_money"
android:layout_toEndOf="@id/tv_choose_plan_item_money"
android:text="@string/txt_per_month"
android:textSize="@dimen/textSize14"
android:layout_below="@id/iv_choose_plan_item_popular_image"
android:layout_alignStart="@id/tv_choose_plan_item_name"
android:textSize="@dimen/textSize12"
android:gravity="start"
android:visibility="gone"
app:typeface="@string/roboto_regular_font" />
<com.qmuiteam.qmui.widget.roundwidget.QMUIRoundRelativeLayout
android:id="@+id/rl_choose_plan_item_price"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/tv_choose_plan_item_power"
android:layout_marginTop="@dimen/dp_14"
app:qmui_backgroundColor="@color/tracker_manage_bg_color"
app:qmui_borderColor="@color/transparent"
app:qmui_radiusBottomLeft="@dimen/dp_20"
app:qmui_radiusBottomRight="@dimen/dp_20">
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_billed_money"
style="@style/my_TextView_style_v2"
android:layout_alignBaseline="@id/tv_choose_plan_item_money"
android:layout_alignEnd="@id/ll_choose_plan_item_discount_percent"
android:text="@string/txt_billed_annually"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize10" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_money"
style="@style/my_TextView_style_v2"
android:layout_below="@id/tv_choose_plan_item_name"
android:layout_marginVertical="@dimen/dp_22"
android:layout_marginStart="@dimen/dp_18"
android:text="@string/txt_money_unit"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize26"
android:textStyle="bold" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_unit"
style="@style/my_TextView_style_v2"
android:layout_alignBaseline="@id/tv_choose_plan_item_money"
android:layout_alignTop="@id/tv_choose_plan_item_money"
android:layout_toEndOf="@id/tv_choose_plan_item_money"
android:text="@string/txt_per_month"
android:textSize="@dimen/textSize14"
app:typeface="@string/roboto_regular_font" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_billed_money"
style="@style/my_TextView_style_v2"
android:layout_alignBaseline="@id/tv_choose_plan_item_money"
android:layout_alignParentEnd="true"
android:layout_marginEnd="@dimen/dp_18"
android:text="@string/txt_billed_annually"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize10" />
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_plan_money"
style="@style/my_TextView_style_v2"
android:layout_above="@id/tv_choose_plan_item_billed_money"
android:layout_alignEnd="@id/tv_choose_plan_item_billed_money"
android:text="@string/txt_money_unit"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize16"
android:textStyle="bold" />
</com.qmuiteam.qmui.widget.roundwidget.QMUIRoundRelativeLayout>
<com.abbidot.tracker.widget.TypefaceTextView
android:id="@+id/tv_choose_plan_item_plan_money"
style="@style/my_TextView_style_v2"
android:layout_above="@id/tv_choose_plan_item_billed_money"
android:layout_alignEnd="@id/tv_choose_plan_item_billed_money"
android:text="@string/txt_money_unit"
android:textColor="@color/select_color"
android:textSize="@dimen/textSize16"
android:textStyle="bold" />
</RelativeLayout>
@@ -112,7 +146,6 @@
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="@dimen/dp_16"
android:visibility="gone"
app:cardBackgroundColor="@color/select_color2"
app:cardCornerRadius="@dimen/dp_50"
app:cardElevation="@dimen/dp_4">

View File

@@ -979,6 +979,7 @@
<string name="txt_fence_saved">espeichert. Aktiv, wenn online.</string>
<string name="txt_renewal_years">Verlängerung: $%s / %s Jahre am %s</string>
<string name="txt_renewal_months">Verlängerung: $%s / %s Monate am %s</string>
<string name="map_baidu_map">Baidu Maps</string>
<string name ="txt_refund_expired">Die Rückerstattungsfrist ist abgelaufen</string>
<string name ="txt_refund_policy">Rückerstattungsrichtlinie\n</string>
<string name ="txt_automatic_refund">Automatische Rückerstattung (innerhalb von 48 Stunden)</string>
@@ -988,5 +989,26 @@
<string name ="txt_no_refund_dec">Abonnements, die älter als 30 Tage sind, können nicht erstattet werden.</string>
<string name ="txt_no_refund">Keine Rückerstattung nach 30 Tagen</string>
<string name ="txt_display_dashed_line">Gestrichelte Linie anzeigen</string>
<string name="txt_first_use">Erstmalige Verwendung</string>
<string name="txt_daily_use">Tägliche Verwendung</string>
<string name="txt_sleep_mode">Schlafmodus</string>
<string name="txt_sleep_mode_help">15 Minuten keine Bewegung → Schlafmodus. Automatisches Aufwachen bei Bewegung. Batterieaktualisierung alle 24 Stunden</string>
<string name="txt_wifi_zone_home">WiFi-Zone (Zuhause)</string>
<string name="txt_wifi_zone_home_help">Mit heimischem WLAN verbinden GPS aus → spart Batterie. Aktualisierung ca. alle 60 Minuten</string>
<string name="txt_gps_update_help">Haustier > Tracker > GPS-Update: 315 min wählen. Kurzes Intervall = höherer Batterieverbrauch. Standard: 5 min</string>
<string name="txt_set_fence_type">Zaun-Typ festlegen</string>
<string name="txt_fence_type_help">Sicherer Bereich oder Verbotsbereich</string>
<string name="txt_set_boundary">Grenze festlegen</string>
<string name="txt_enable_set_notify">Alarme aktivieren in: Konto > Einstellungen > Benachrichtigungen</string>
<string name="txt_edit_delete_fence">Zaun bearbeiten oder löschen unter „Verwalten“</string>
<string name="txt_total">Gesamt</string>
<string name="txt_location_ago">(Vor %s)</string>
<string name="txt_init_device_tip">Die Erstinstallation kann %s Minuten dauern</string>
<string name="txt_init_device_dec">1. Gehen Sie mit dem Gerät nach draußen\n2. Warten Sie auf LTE- und GPS-Verbindung\n3. Blaues Blinken = LTE und GPS aktiv</string>
<string name="txt_init_g40_dec">1. Gehen Sie mit dem Gerät nach draußen\n2. Warten Sie auf LTE- und GPS-Verbindung\n3. Grünes Blinken = LTE und GPS aktiv</string>
<string name="txt_init_device">Gerät wird initialisiert</string>
<string name="txt_package_permission1">1. Flexibler kurzfristiger Schutz\n2.Standard-Kundensupport</string>
<string name="txt_package_permission2">1.1 Geräteaustausch inbegriffen\n2. Dedizierter Kundensupport\n3. Jährlicher Schutzumfang</string>
<string name="txt_package_permission3">1. VIP-Prioritätssupport\n2. Schneller Austauschservice (1x inbegriffen)\n3. Erweiterter Schutz\n4. Sorgenfreier Haustierschutz</string>
</resources>

View File

@@ -1023,6 +1023,7 @@
<string name="txt_fence_saved">已保存,上线时生效。</string>
<string name="txt_renewal_years">续订:$%s / %s 年,于 %s</string>
<string name="txt_renewal_months">续订:$%s / %s 月,于 %s</string>
<string name="map_baidu_map">百度地图</string>
<string name="txt_refund_expired">退款期限已过</string>
<string name="txt_refund_policy">退款政策\n</string>
<string name="txt_automatic_refund">自动退款48小时内</string>
@@ -1032,5 +1033,27 @@
<string name="txt_no_refund_dec">超过30天的订阅不可退款。</string>
<string name="txt_no_refund">30天后不退款</string>
<string name="txt_display_dashed_line">显示虚线</string>
<string name="txt_first_use">首次使用</string>
<string name="txt_daily_use">日常使用</string>
<string name="txt_sleep_mode">休眠模式</string>
<string name="txt_sleep_mode_help">15分钟无移动 → 进入休眠模式。移动时自动唤醒。电量每24小时更新一次</string>
<string name="txt_wifi_zone_home">WiFi区域</string>
<string name="txt_wifi_zone_home_help">连接家庭WiFi → GPS关闭 → 节省电池。约每60分钟更新一次</string>
<string name="txt_gps_update_help">宠物 > 追踪器 > GPS更新选择315分钟。间隔越短耗电越高。默认5分钟</string>
<string name="txt_set_fence_type">设置围栏类型</string>
<string name="txt_fence_type_help">安全区域 或 禁区</string>
<string name="txt_set_boundary">设置边界</string>
<string name="txt_enable_set_notify">在“账户 > 设置 > 通知”中启用提醒</string>
<string name="txt_edit_delete_fence">在“管理”中编辑或删除围栏</string>
<string name="txt_total">总计</string>
<string name="txt_location_ago">(%s前)</string>
<string name="txt_init_device_tip">初始化设置可能需要 %s 分钟</string>
<string name="txt_init_device_dec">1. 携带设备到户外\n2. 等待 LTE 和 GPS 连接\n3. 蓝色闪烁 = LTE 和 GPS 已激活</string>
<string name="txt_init_g40_dec">1. 携带设备到户外\n2. 等待 LTE 和 GPS 连接\n3. 绿色闪烁 = LTE 和 GPS 已激活</string>
<string name="txt_init_device">正在初始化设备</string>
<string name="txt_package_permission1">1. 灵活的短期保障\n2. 标准客户支持</string>
<string name="txt_package_permission2">1.设备1次更换\n2. 专属客户支持\n3. 年度保障服务</string>
<string name="txt_package_permission3">1. VIP 优先支持\n2. 快速更换服务含1次\n3. 增强型保障\n4. 无忧宠物保护</string>
</resources>

View File

@@ -380,4 +380,5 @@
<color name="grey_color_91">#B0B0B0</color>
<color name="grey_color_92">#758E94</color>
<color name="orange_color5">#FF996E</color>
<color name="orange_color6">#FEF6E4</color>
</resources>

View File

@@ -1037,7 +1037,7 @@
<string name="txt_geofencing">Geofencing</string>
<string name="txt_route_records">Route History Records</string>
<string name="txt_family_sharing">Family Members Sharing</string>
<string name="txt_customer_support">Premium Customer Support</string>
<string name="txt_customer_support">30-days return guarantee</string>
<string name="txt_show_crash">The program has an exception and is about to exit</string>
<string name="txt_activate_subscribe">Activate Subscription</string>
<string name="txt_powered_off">Powered off</string>
@@ -1081,7 +1081,7 @@
<string name="txt_fence_saved">Saved. Active when online.</string>
<string name="txt_renewal_years">Renewal: $%s/%s years on %s</string>
<string name="txt_renewal_months">Renewal: $%s/%s months on %s</string>
<string name="map_baidu_map">Baidu Map</string>
<string name="map_baidu_map">Baidu Maps</string>
<string name="txt_refund_expired">Refund period has expired</string>
<string name="txt_refund_policy">Refund Policy\n</string>
<string name="txt_automatic_refund">Automatic Refund (Within 48 Hours)</string>
@@ -1105,5 +1105,12 @@
<string name="txt_edit_delete_fence">Edit or delete fence in Manage</string>
<string name="txt_total">Total</string>
<string name="txt_location_ago">(%s ago)</string>
<string name="txt_init_device_tip">Initial setup may take %s minutes</string>
<string name="txt_init_device_dec">1. Move outdoors with device\n2. Wait for LTE &amp; GPS connection\n3. Blue flashing = LTE &amp; GPS active</string>
<string name="txt_init_g40_dec">1. Move outdoors with device\n2. Wait for LTE &amp; GPS connection\n3. Green flashing = LTE &amp; GPS active</string>
<string name="txt_init_device">Initializing Device</string>
<string name="txt_package_permission1">1.Flexible short-term protection\n2.Standard customer support</string>
<string name="txt_package_permission2">1.1 device replacement included\n2.Dedicated customer support\n3.Annual protection coverage</string>
<string name="txt_package_permission3">1.VIP priority support\n2.Fast replacement service (1 included)\n3.Enhanced protection\n4.Hassle-free pet protection</string>
</resources>