1.修复直播百度和谷歌地图显示经纬度有时不同步bug

2.新增意大利语
This commit is contained in:
2026-09-04 11:01:23 +08:00
parent 4a37e579f4
commit 5dd4afa056
17 changed files with 1028 additions and 44 deletions

View File

@@ -64,7 +64,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() {
//宠物经纬度 //宠物经纬度
val convertLonLat = getBaiduMapLatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude,true) val convertLonLat = getBaiduMapLatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude,true)
mPetLatLng = convertLonLat setPetLatLng(convertLonLat)
//画围栏 //画围栏
mFencesMapViewModel.setFencesData( mFencesMapViewModel.setFencesData(
@@ -84,7 +84,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() {
val locationLatLng = LatLng(location!!.latitude, location.longitude) val locationLatLng = LatLng(location!!.latitude, location.longitude)
val points = mutableListOf<LatLng>() val points = mutableListOf<LatLng>()
points.add(locationLatLng) points.add(locationLatLng)
points.add(mPetLatLng!!) points.add(getPetLatLng()!!)
addNavigationLine(points) addNavigationLine(points)
} }
@@ -92,7 +92,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() {
* 画导航直线 * 画导航直线
*/ */
private fun addNavigationLine(points: MutableList<LatLng>) { private fun addNavigationLine(points: MutableList<LatLng>) {
if (points.size < 1) return if (points.isEmpty()) return
mRoutePlanningViewModel.getBaiduMapRoutePlan(mMapNavigationActivity, points[0], points[1]) mRoutePlanningViewModel.getBaiduMapRoutePlan(mMapNavigationActivity, points[0], points[1])
//设置折线的属性 //设置折线的属性

View File

@@ -59,7 +59,7 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() {
//计算2点的距离 //计算2点的距离
val distance = val distance =
com.abbidot.tracker.util.Util.measureLatLonDistance(mMyLocation!!.latitude, com.abbidot.tracker.util.Util.measureLatLonDistance(mMyLocation!!.latitude,
mMyLocation!!.longitude, mPetLatLng!!.latitude, mPetLatLng!!.longitude) mMyLocation!!.longitude, getPetLatLng()!!.latitude, getPetLatLng()!!.longitude)
//计算步行需要多久 假设步行速度为1.3m/s 只计算大概数据 //计算步行需要多久 假设步行速度为1.3m/s 只计算大概数据
val time = distance / 1.3 val time = distance / 1.3
@@ -127,14 +127,14 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() {
setGoogleMapZoom(12.5f) setGoogleMapZoom(12.5f)
mMapNavigationActivity.apply { mMapNavigationActivity.apply {
mPetLatLng = LatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude) setPetLatLng(LatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude))
//画围栏 //画围栏
mFencesMapViewModel.setFencesData( mFencesMapViewModel.setFencesData(
mContext, mContext,
mMapDeviceBean!!.fences, this@NavigationGoogleMapFragment) mMapDeviceBean!!.fences, this@NavigationGoogleMapFragment)
refreshPetCurrentLocation(mPetLatLng!!, isAnimMoveCamera = false, refreshPetCurrentLocation(getPetLatLng()!!, isAnimMoveCamera = false,
headBgResId = R.drawable.pic_map_location) headBgResId = R.drawable.pic_map_location)
} }
@@ -142,6 +142,6 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() {
override fun locationSuccess(location: Location?) { override fun locationSuccess(location: Location?) {
mMyLocation = location mMyLocation = location
addNavigationLine(LatLng(location!!.latitude, location.longitude), mPetLatLng!!) addNavigationLine(LatLng(location!!.latitude, location.longitude), getPetLatLng()!!)
} }
} }

View File

@@ -31,7 +31,7 @@ class BaiduLocationService : Service() {
} }
fun startLocation(locationPeriod: Int = 1, needStopLocation: Boolean = false) { fun startLocation(locationPeriod: Int, needStopLocation: Boolean = false) {
if (mLocationClient != null) return if (mLocationClient != null) return
mLocationClient = LocationClient(applicationContext).apply { mLocationClient = LocationClient(applicationContext).apply {
locOption = LocationClientOption().apply { locOption = LocationClientOption().apply {
@@ -67,6 +67,15 @@ class BaiduLocationService : Service() {
} }
} }
/**
* 重新设置定位时间间隔,单位秒,直播场景下建议设置为10秒以上
*/
fun setScanSpan(locationPeriod: Int) {
mLocationClient?.apply {
locOption.scanSpan = locationPeriod * 1000
}
}
fun stopLocation() { fun stopLocation() {
mLocationClient?.apply { mLocationClient?.apply {
stop() stop()

View File

@@ -167,6 +167,10 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
mViewBinding.homeV2ViewPager2.setCurrentItem(2, false) mViewBinding.homeV2ViewPager2.setCurrentItem(2, false)
setLineShow(2) setLineShow(2)
//判断是否登录失效
if (loginInfoInvalid())
return
//出现闪退,5秒退出APP //出现闪退,5秒退出APP
val isCrash = MMKVUtil.getBoolean(MMKVKey.isCrash, false) val isCrash = MMKVUtil.getBoolean(MMKVKey.isCrash, false)
if (isCrash) { if (isCrash) {
@@ -222,8 +226,26 @@ class HomeV2Activity : BaseActivity<ActivityHomeV2Binding>(ActivityHomeV2Binding
} }
} }
/**
* 登录失效处理
*/
private fun loginInfoInvalid(): Boolean {
//判断是否登录失效
val userId = MMKVUtil.getString(MMKVKey.UserId)
if (TextUtils.isEmpty(userId)) {
showToast(R.string.txt_login_info_invalid, gravity = Gravity.CENTER)
mViewBinding.root.postDelayed({
Util.logOut(this@HomeV2Activity, lifecycleScope)
}, 2500)
return true
}
return false
}
override fun onResume() { override fun onResume() {
super.onResume() super.onResume()
if (loginInfoInvalid())
return
if (isCountdownAutoConnBle && mCountdownType == ConstantInt.Type1) { if (isCountdownAutoConnBle && mCountdownType == ConstantInt.Type1) {
LogUtil.e("onResume,自动连接设备20秒计时开始") LogUtil.e("onResume,自动连接设备20秒计时开始")
mCountDownTimerViewModel.startCountDown(20) mCountDownTimerViewModel.startCountDown(20)

View File

@@ -47,6 +47,7 @@ import com.abbidot.tracker.dialog.CommonDialog1
import com.abbidot.tracker.dialog.SelectMapTypeDialog import com.abbidot.tracker.dialog.SelectMapTypeDialog
import com.abbidot.tracker.ui.DebugActivity import com.abbidot.tracker.ui.DebugActivity
import com.abbidot.tracker.ui.common.map.HomeMapCommonV3 import com.abbidot.tracker.ui.common.map.HomeMapCommonV3
import com.abbidot.tracker.util.BaiduLocationManager
import com.abbidot.tracker.util.Util import com.abbidot.tracker.util.Util
import com.abbidot.tracker.util.ViewUtil import com.abbidot.tracker.util.ViewUtil
import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil
@@ -171,6 +172,7 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
Utils.DATE_FORMAT_PATTERN_EN12, Utils.DATE_FORMAT_PATTERN_EN12,
isLiveJump isLiveJump
) { mapLoadOk() } ) { mapLoadOk() }
if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(10)
ViewUtil.instance.setMapSwitchLocationButtonImage( ViewUtil.instance.setMapSwitchLocationButtonImage(
ivMapLiveV2RefreshBtn, mShowCenterLocation ivMapLiveV2RefreshBtn, mShowCenterLocation
) )
@@ -920,6 +922,9 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
// mViewBinding.tvLiveV2Distance.text = String.format( // mViewBinding.tvLiveV2Distance.text = String.format(
// getString(R.string.txt_ft_unit), Utils.formatDecimal(userAndPetDistance) // getString(R.string.txt_ft_unit), Utils.formatDecimal(userAndPetDistance)
// ) // )
if (isShowDashed) {
mHomeMapCommon.addUserAndPetLine()
}
} }
} }
} }
@@ -1342,8 +1347,8 @@ class LiveActivityV3 : BaseActivity<ActivityLiveV3Binding>(ActivityLiveV3Binding
} }
override fun onDestroy() { override fun onDestroy() {
if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(30)
super.onDestroy() super.onDestroy()
mViewBinding.lavLiveV2StateAnim.cancelAnimation() mViewBinding.lavLiveV2StateAnim.cancelAnimation()
// stopLive()
} }
} }

View File

@@ -56,6 +56,7 @@ import com.baidu.mapapi.model.LatLng
import com.baidu.mapapi.model.LatLngBounds import com.baidu.mapapi.model.LatLngBounds
import com.baidu.mapapi.utils.DistanceUtil import com.baidu.mapapi.utils.DistanceUtil
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.concurrent.locks.ReentrantReadWriteLock
import kotlin.math.abs import kotlin.math.abs
@@ -94,7 +95,10 @@ abstract class BaseBaiduMapFragment :
var mUserLatLng: LatLng? = null var mUserLatLng: LatLng? = null
//宠物位置经纬度 //宠物位置经纬度
var mPetLatLng: LatLng? = null private var mPetLatLng: LatLng? = null
//可重入的读写锁
private val mReadWriteLock = ReentrantReadWriteLock()
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -189,6 +193,26 @@ abstract class BaseBaiduMapFragment :
} }
// 写操作:加写锁
fun setPetLatLng(latLng: LatLng) {
mReadWriteLock.writeLock().lock()
try {
mPetLatLng = latLng
} finally {
mReadWriteLock.writeLock().unlock()
}
}
// 读操作:加读锁
fun getPetLatLng(): LatLng? {
mReadWriteLock.readLock().lock()
try {
return mPetLatLng
} finally {
mReadWriteLock.readLock().unlock()
}
}
/** /**
* 卫星标准地图模式切换 * 卫星标准地图模式切换
*/ */
@@ -249,7 +273,7 @@ abstract class BaseBaiduMapFragment :
*/ */
fun switchShowLocation(@ConstantInt type: Int) { fun switchShowLocation(@ConstantInt type: Int) {
val latLng = if (type == ConstantInt.PetLocationType) { val latLng = if (type == ConstantInt.PetLocationType) {
mPetLatLng getPetLatLng()
} else mUserLatLng } else mUserLatLng
latLng?.apply { latLng?.apply {
@@ -277,7 +301,8 @@ abstract class BaseBaiduMapFragment :
getMarkerBitmapDescriptor(mContext!!, mPetHeadUrl, mPetType, headBgResId) getMarkerBitmapDescriptor(mContext!!, mPetHeadUrl, mPetType, headBgResId)
mMarker?.remove() mMarker?.remove()
val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02) val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02)
mPetLatLng = latLng setPetLatLng(latLng)
LogUtil.e("setPetHeadMarker,mPetLatLng = $mPetLatLng")
//构建MarkerOption,用于在地图上添加Marker //构建MarkerOption,用于在地图上添加Marker
val option = val option =
MarkerOptions().position(latLng).animateType(MarkerOptions.MarkerAnimateType.grow) MarkerOptions().position(latLng).animateType(MarkerOptions.MarkerAnimateType.grow)

View File

@@ -259,7 +259,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
fun getUserAndPetDistance(): Double { fun getUserAndPetDistance(): Double {
var distance = 0.0 var distance = 0.0
mUserLatLng?.apply { mUserLatLng?.apply {
mPetLatLng?.let { getPetLatLng()?.let {
distance = distance =
Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude)
} }
@@ -277,7 +277,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
} }
fun setMarkerInfoViewOffset() { fun setMarkerInfoViewOffset() {
mPetLatLng?.apply { getPetLatLng()?.apply {
mMapDeviceBean?.let { mMapDeviceBean?.let {
setMapDeviceBatteryOffset( setMapDeviceBatteryOffset(
mDeviceBatteryLayout, this, it mDeviceBatteryLayout, this, it
@@ -297,9 +297,10 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon) val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon)
mUserLatLng = getBaiduMapLatLng(userGpsLat, userGpsLon) mUserLatLng = getBaiduMapLatLng(userGpsLat, userGpsLon)
mUserLatLng?.let { u -> mUserLatLng?.let { u ->
mPetLatLng?.let { p -> getPetLatLng()?.let { p ->
LogUtil.e("addUserAndPetLine,getPetLatLng() = $p")
mUserAndPetLine?.remove() mUserAndPetLine?.remove()
val latLngList: MutableList<LatLng> = mutableListOf() val latLngList = mutableListOf<LatLng>()
latLngList.add(p) latLngList.add(p)
latLngList.add(u) latLngList.add(u)
getPolylineOptions(1.5f, R.color.blue_color9).let { getPolylineOptions(1.5f, R.color.blue_color9).let {
@@ -321,7 +322,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
* 初始化并添加水波纹圆 * 初始化并添加水波纹圆
*/ */
private fun addRippleCircle() { private fun addRippleCircle() {
mPetLatLng?.apply { getPetLatLng()?.apply {
mBaiduMap?.let { mBaiduMap?.let {
mRippleCircle?.remove() mRippleCircle?.remove()
val sColor = ContextCompat.getColor(mContext!!, mRippleCircleColor) val sColor = ContextCompat.getColor(mContext!!, mRippleCircleColor)
@@ -341,7 +342,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
private fun setRippleCircleAnim() { private fun setRippleCircleAnim() {
if (null == mValueAnimator) { if (null == mValueAnimator) {
mValueAnimator = ViewUtil.instance.setValueAnimator( mValueAnimator = ViewUtil.instance.setValueAnimator(
0.0, 100.0, 2000, LinearInterpolator() 0.0, 100.0, 1500, LinearInterpolator()
) { ) {
mRippleCirclePercent = it.animatedValue as Float / 100.0 mRippleCirclePercent = it.animatedValue as Float / 100.0
addRippleCircle() addRippleCircle()
@@ -360,7 +361,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() {
* 开始水波纹动画 * 开始水波纹动画
*/ */
fun startRippleCircleAnim() { fun startRippleCircleAnim() {
mPetLatLng?.apply { getPetLatLng()?.apply {
//一像素对应几米 //一像素对应几米
val pxDis = 2.0.pow(17.0 - getBaiduMapZoom()) val pxDis = 2.0.pow(17.0 - getBaiduMapZoom())
mRippleCircleRadius = (pxDis * 150).toInt() mRippleCircleRadius = (pxDis * 150).toInt()

View File

@@ -58,6 +58,7 @@ import com.google.android.gms.maps.model.PolylineOptions
import com.google.android.gms.maps.model.RoundCap import com.google.android.gms.maps.model.RoundCap
import com.qmuiteam.qmui.util.QMUIDisplayHelper import com.qmuiteam.qmui.util.QMUIDisplayHelper
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import java.util.concurrent.locks.ReentrantReadWriteLock
/** /**
@@ -107,10 +108,10 @@ abstract class BaseGoogleMapFragment :
var mUserLatLng: LatLng? = null var mUserLatLng: LatLng? = null
//宠物位置经纬度 //宠物位置经纬度
var mPetLatLng: LatLng? = null private var mPetLatLng: LatLng? = null
//第一次执行定位回调,方便只刷新用户位置 //可重入的读写锁
private var isLocationSuccessCallback = true private val mReadWriteLock = ReentrantReadWriteLock()
override fun onCreateView( override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?
@@ -176,6 +177,26 @@ abstract class BaseGoogleMapFragment :
mGoogleMapView?.onSaveInstanceState(mapViewBundle) mGoogleMapView?.onSaveInstanceState(mapViewBundle)
} }
// 写操作:加写锁
fun setPetLatLng(latLng: LatLng) {
mReadWriteLock.writeLock().lock()
try {
mPetLatLng = latLng
} finally {
mReadWriteLock.writeLock().unlock()
}
}
// 读操作:加读锁
fun getPetLatLng(): LatLng? {
mReadWriteLock.readLock().lock()
try {
return mPetLatLng
} finally {
mReadWriteLock.readLock().unlock()
}
}
override fun onMapReady(googleMap: GoogleMap) { override fun onMapReady(googleMap: GoogleMap) {
LogUtil.e("谷歌地图加载好了") LogUtil.e("谷歌地图加载好了")
mGoogleMap = googleMap mGoogleMap = googleMap
@@ -364,20 +385,20 @@ abstract class BaseGoogleMapFragment :
fun switchShowLocation(@ConstantInt type: Int) { fun switchShowLocation(@ConstantInt type: Int) {
when (type) { when (type) {
ConstantInt.PetLocationType -> { ConstantInt.PetLocationType -> {
mPetLatLng?.let { getPetLatLng()?.let {
mGoogleMapZoom = 17f mGoogleMapZoom = 17f
refreshPetCurrentLocation(it, true) refreshPetCurrentLocation(it, true)
} }
} }
ConstantInt.UserLocationType -> { ConstantInt.UserLocationType -> {
if (null == mPetLatLng) { if (null == getPetLatLng()) {
mUserLatLng?.apply { mUserLatLng?.apply {
moveCameraLocation(this) moveCameraLocation(this)
} }
} else { } else {
mUserLatLng?.apply { mUserLatLng?.apply {
setLatLngZoom(mContext!!, 250, mPetLatLng!!, this) setLatLngZoom(mContext!!, 250, getPetLatLng()!!, this)
cameraUpdateMove() cameraUpdateMove()
} }
} }
@@ -388,7 +409,7 @@ abstract class BaseGoogleMapFragment :
} }
// ConstantInt.DefaultType -> { // ConstantInt.DefaultType -> {
// mPetLatLng?.let { // getPetLatLng()?.let {
// mGoogleMapZoom = 17f // mGoogleMapZoom = 17f
// refreshPetCurrentLocation(it, true) // refreshPetCurrentLocation(it, true)
// } // }
@@ -498,7 +519,8 @@ abstract class BaseGoogleMapFragment :
fun setPetCurrentLocation(petHeadUrl: String, lat: Double, lon: Double, petType: Int) { fun setPetCurrentLocation(petHeadUrl: String, lat: Double, lon: Double, petType: Int) {
lifecycleScope.launch(lifecycleScope.coroutineContext) { lifecycleScope.launch(lifecycleScope.coroutineContext) {
setPetHeadIconUrl(petHeadUrl, petType) setPetHeadIconUrl(petHeadUrl, petType)
mPetLatLng = LatLng(lat, lon).apply { LatLng(lat, lon).apply {
setPetLatLng(this)
setPetHeadMarker(this) setPetHeadMarker(this)
} }
} }
@@ -515,7 +537,7 @@ abstract class BaseGoogleMapFragment :
isAnimMoveCamera: Boolean = false, isAnimMoveCamera: Boolean = false,
headBgResId: Int = R.drawable.pic_map_gps_avatar headBgResId: Int = R.drawable.pic_map_gps_avatar
) { ) {
mPetLatLng = latLng setPetLatLng(latLng)
if (null != mGoogleMap) { if (null != mGoogleMap) {

View File

@@ -205,7 +205,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
} }
fun setMarkerInfoViewOffset() { fun setMarkerInfoViewOffset() {
mPetLatLng?.apply { getPetLatLng()?.apply {
mMapDeviceBean?.let { mMapDeviceBean?.let {
setMapDeviceBatteryOffset( setMapDeviceBatteryOffset(
mDeviceBatteryLayout, LatLng(latitude, longitude), it mDeviceBatteryLayout, LatLng(latitude, longitude), it
@@ -220,7 +220,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
fun getUserAndPetDistance(): Double { fun getUserAndPetDistance(): Double {
var distance = 0.0 var distance = 0.0
mUserLatLng?.apply { mUserLatLng?.apply {
mPetLatLng?.let { getPetLatLng()?.let {
distance = distance =
Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude)
} }
@@ -237,7 +237,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon) val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon)
mUserLatLng = LatLng(userGpsLat, userGpsLon) mUserLatLng = LatLng(userGpsLat, userGpsLon)
mUserLatLng?.let { u -> mUserLatLng?.let { u ->
mPetLatLng?.let { p -> getPetLatLng()?.let { p ->
mUserAndPetLine?.remove() mUserAndPetLine?.remove()
getPolylineOptions(1.5f, R.color.blue_color9).let { getPolylineOptions(1.5f, R.color.blue_color9).let {
it.add(toGCJ02LatLon(p)) it.add(toGCJ02LatLon(p))
@@ -258,7 +258,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
* 初始化并添加水波纹圆 * 初始化并添加水波纹圆
*/ */
private fun addRippleCircle() { private fun addRippleCircle() {
mPetLatLng?.apply { getPetLatLng()?.apply {
mGoogleMap?.let { mGoogleMap?.let {
if (null == mRippleCircle) { if (null == mRippleCircle) {
mRippleCircle = it.addCircle( mRippleCircle = it.addCircle(
@@ -285,7 +285,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
) { ) {
mRippleCirclePercent = it.animatedValue as Float / 100.0 mRippleCirclePercent = it.animatedValue as Float / 100.0
mRippleCircle?.apply { mRippleCircle?.apply {
mPetLatLng?.let { petLatLng -> getPetLatLng()?.let { petLatLng ->
center = toGCJ02LatLon(petLatLng) center = toGCJ02LatLon(petLatLng)
radius = mRippleCircleRadius * mRippleCirclePercent radius = mRippleCircleRadius * mRippleCirclePercent
} }
@@ -343,7 +343,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() {
* 开始水波纹动画 * 开始水波纹动画
*/ */
fun startRippleCircleAnim() { fun startRippleCircleAnim() {
mPetLatLng?.apply { getPetLatLng()?.apply {
//一像素对应几米 //一像素对应几米
val pxDis = 2.0.pow(15.5 - getGoogleMapZoom()) val pxDis = 2.0.pow(15.5 - getGoogleMapZoom())
mRippleCircleRadius = (pxDis * 150).toInt() mRippleCircleRadius = (pxDis * 150).toInt()

View File

@@ -40,10 +40,17 @@ object BaiduLocationManager {
} }
// 启动定位(所有页面统一调用此方法) // 启动定位(所有页面统一调用此方法)
fun startLocation(locationPeriod: Int = 1, needStopLocation: Boolean = false) { fun startLocation(locationPeriod: Int, needStopLocation: Boolean = false) {
locationService?.startLocation(locationPeriod, needStopLocation) locationService?.startLocation(locationPeriod, needStopLocation)
} }
/**
* 重新设置定位时间间隔,单位秒,直播场景下建议设置为10秒以上
*/
fun setScanSpan(locationPeriod: Int) {
locationService?.setScanSpan(locationPeriod)
}
// 停止定位 // 停止定位
fun stopLocation() { fun stopLocation() {
locationService?.stopLocation() locationService?.stopLocation()

View File

@@ -1,7 +1,5 @@
package com.abbidot.tracker.wxapi package com.abbidot.tracker.wxapi
import com.abbidot.baselibrary.constant.EventName
import com.abbidot.baselibrary.eventbus.XEventBus
import com.abbidot.baselibrary.util.LogUtil import com.abbidot.baselibrary.util.LogUtil
import com.abbidot.tracker.vm.cn.LoginCNViewModel import com.abbidot.tracker.vm.cn.LoginCNViewModel
import com.hjq.toast.Toaster import com.hjq.toast.Toaster
@@ -24,7 +22,7 @@ class WXEntryActivity : WXBaseActivity() {
override fun initData() { override fun initData() {
mLoginCNViewModel.mWXLoginResultLiveData.observe(this) { mLoginCNViewModel.mWXLoginResultLiveData.observe(this) {
LogUtil.e("mWXLoginResultLiveData:$it") LogUtil.e("mWXLoginResultLiveData:$it")
XEventBus.post(EventName.WXLoginResult, it) // XEventBus.post(EventName.WXLoginResult, it)
finish() finish()
} }
} }
@@ -37,8 +35,8 @@ class WXEntryActivity : WXBaseActivity() {
BaseResp.ErrCode.ERR_OK -> { BaseResp.ErrCode.ERR_OK -> {
result = "登录成功" result = "登录成功"
val code = r.code val code = r.code
XEventBus.post(EventName.PostValue, code) LogUtil.e("${result}TAG_WECHAT_CODE:${r.openId}")
LogUtil.e("${result}TAG_WECHAT_CODE", code) // XEventBus.post(EventName.PostValue, code)
mLoginCNViewModel.wxLogin(code) mLoginCNViewModel.wxLogin(code)
} }

View File

@@ -42,7 +42,7 @@
<string name="txt_delete_tracker_dec">Lösen Sie die Verbindung Ihres Trackers nur von Ihrem Konto, wenn Sie ihn zurückgeben oder weitergeben.</string> <string name="txt_delete_tracker_dec">Lösen Sie die Verbindung Ihres Trackers nur von Ihrem Konto, wenn Sie ihn zurückgeben oder weitergeben.</string>
<string name="txt_con_tracker_dec">Bringen Sie das Smartphone in die Nähe des Trackers %s.</string> <string name="txt_con_tracker_dec">Bringen Sie das Smartphone in die Nähe des Trackers %s.</string>
<string name="txt_update_time">Aktualisiert: %s</string> <string name="txt_update_time">Aktualisiert: %s</string>
<string name="txt_near">In der Nähe</string> <string name="txt_near">Bei %s</string>
<string name="txt_per_day">/Tag</string> <string name="txt_per_day">/Tag</string>
<string name="txt_locating">Standort wird ermittelt&#8230;</string> <string name="txt_locating">Standort wird ermittelt&#8230;</string>
<string name="txt_fell_asleep">Ist vor %s eingeschlafen</string> <string name="txt_fell_asleep">Ist vor %s eingeschlafen</string>
@@ -897,4 +897,5 @@
<string name="txt_terms_html">terms_de.html</string> <string name="txt_terms_html">terms_de.html</string>
<string name="txt_privacy_html">privacy_de.html</string> <string name="txt_privacy_html">privacy_de.html</string>
<string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_de.html</string> <string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_de.html</string>
<string name="txt_login_info_invalid">Sitzung abgelaufen. Bitte erneut anmelden</string>
</resources> </resources>

View File

@@ -42,7 +42,7 @@
<string name="txt_delete_tracker_dec">Ne dissociez votre traceur de votre compte que si vous le retournez ou le donnez.</string> <string name="txt_delete_tracker_dec">Ne dissociez votre traceur de votre compte que si vous le retournez ou le donnez.</string>
<string name="txt_con_tracker_dec">Approchez le téléphone du traceur %s.</string> <string name="txt_con_tracker_dec">Approchez le téléphone du traceur %s.</string>
<string name="txt_update_time">Mis à jour : %s</string> <string name="txt_update_time">Mis à jour : %s</string>
<string name="txt_near">À proximité de %s</string> <string name="txt_near">Près de %s</string>
<string name="txt_per_day">/jour</string> <string name="txt_per_day">/jour</string>
<string name="txt_locating">Localisation&#8230;</string> <string name="txt_locating">Localisation&#8230;</string>
<string name="txt_fell_asleep">S’est endormi il y a %s</string> <string name="txt_fell_asleep">S’est endormi il y a %s</string>
@@ -898,4 +898,5 @@
<string name="txt_terms_html">terms_fr.html</string> <string name="txt_terms_html">terms_fr.html</string>
<string name="txt_privacy_html">privacy_fr.html</string> <string name="txt_privacy_html">privacy_fr.html</string>
<string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_fr.html</string> <string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_fr.html</string>
<string name="txt_login_info_invalid">Session expirée. Veuillez vous reconnecter</string>
</resources> </resources>

View File

@@ -0,0 +1,891 @@
<resources>
<!-- 意大利-Android-->
<string name="pet_manage">La mia piccola</string>
<string name="acccount_height_how_detail">Misura dal pavimento fino al punto più a \nlto delle scapole del tuo pet</string>
<string name="tracker_manage_set_battery">Batteria: %s%%</string>
<string name="pet_managet_age">%s Anni</string>
<string name="pet_manage_weight">%d lb</string>
<string name="txt_about_version">Versione%s</string>
<string name="txt_service_contract">Termini e condizioni</string>
<string name="txt_read_and_accept">Accetta l\'Informativa sulla privacy e i Termini.</string>
<string name="txt_device_has_bind">Il tracker è abbinato a %s</string>
<string name="txt_activity_goal">Obiettivo dell\’attività</string>
<string name="txt_end_time">Ora di fine</string>
<string name="txt_fix_goal_tip">Personalizza la routine quotidiana del tuo animale domestico per divertirti con \nimpegno mattutino e serale focalizzato, considerando \nleloro esigenze, specie e razza.</string>
<string name="txt_invite">+\tInvita</string>
<string name="txt_invite_family_tip">Il tuo familiare o amico condiviso può tracciare la posizione e la data del tuo \npet senza la possibilità di modificarli.</string>
<string name="txt_otp_verification_tips">Inserisci il codice a 4 cifre inviato a %s.</string>
<string name="txt_time_remaining">Tempo rimanente:\t</string>
<string name="txt_create_account_terms1">Registrandoti, accetti i Termini e condizioni e l\'Informativa sulla privacy di Nation Remit.</string>
<string name="txt_pair_tracker_tip">Confermare che l\'ID di 6 caratteri corrisponda a quello \non sul retro del tracker.</string>
<string name="txt_input_id_tip">Individua l\'ID di 6 caratteri sul retro del \ntracker.</string>
<string name="txt_add_tracker_tip">L\'ID del tracker è errato, verifica \ne riprova</string>
<string name="txt_success_paired">Parato con \nsuccesso</string>
<string name="txt_renew_year1">(Rinnovare a</string>
<string name="txt_is_pet_home">Questa è la casa del tuo animale domestico?</string>
<string name="txt_unassign_other">Annulla assegnazione %s</string>
<string name="txt_ble_permissions_tip">•\tNecessarioper una sincronizzazione accurata delle attività.</string>
<string name="txt_location_permissions_tip">•\tMostra la tua posizione sulla mappa\n•\ tRichiesta di sincronizzazione dei dati di attività\n•\ tMigliora la precisione del tracker</string>
<string name="txt_notice_permissions_tip">•\tConsenti alle notifiche di tenere traccia delle informazioni importanti, ad esempio se il tuo amico ha lasciato una zona sicura o se dovresti prendere in considerazione la ricarica del tuo dispositivo.</string>
<string name="txt_signup_success">Registrazione \nconsuccesso!</string>
<string name="txt_battery_less_than">Batteria inferiore a %s%%</string>
<string name="txt_tracker_battery_tip4">Seleziona \'Animale domestico\' &gt; \'Tracker\'. Fai clic su \'Aggiornamento GPS\' Seleziona3/5/10/15 minuti.</string>
<string name="txt_tracker_battery_tip5">(Intervalli di rete più brevi scaricano più velocemente la batteria del Tracker. Per impostazione predefinita, la rete si riconnette ogni 15 minuti.)</string>
<string name="txt_tracker_battery_tip6">Quando la modalità Live è attivata, il Tracker entra in uno stato di posizionamento e networking rapido, di solito entro 15–20 secondi. Questa modalità scarica la batteria più velocemente, quindi è meglio riservarla alle situazioni di emergenza.</string>
<string name="txt_renewal_year1">Rinnovo:</string>
<string name="txt_change_email_tip">Invierà il codice di verifica a %s.</string>
<string name="txt_upgrade_unlock">Passa a Prime per sbloccare \nFunzionalità esclusive!</string>
<string name="txt_new_firmware_version">Rilevata nuova versione firmware: %s</string>
<string name="txt_invites_you_check">"%s" ti invita a effettuare il check-in su "%s"</string>
<string name="txt_subscription_expired">Il tuo abbonamento è scaduto, \ntipreghiamo di ricaricarlo</string>
<string name="txt_fences_set">Set recinzioni %s</string>
<string name="txt_is_nearby">%s è nelle vicinanze</string>
<string name="txt_delete_tracker_dec">Scollega il tuo Tracker dal tuo account solo se lo restituisci o lo dai via.</string>
<string name="txt_con_tracker_dec">Avvicinare il telefono al tracker %s.</string>
<string name="txt_update_time">Aggiornato: %s</string>
<string name="txt_near">Vicino a %s</string>
<string name="txt_per_day">/giorno</string>
<string name="txt_locating">Localizzazione&amp;#8230;</string>
<string name="txt_fell_asleep">Si è addormentato %s fa</string>
<string name="txt_move_wake_up">Sposta %s per svegliarti</string>
<string name="txt_location_ago">(%s fa)</string>
<string name="txt_init_device_tip">La configurazione iniziale può richiedere %s minuti</string>
<string name="txt_init_device_dec">1. Muoviti all\'aperto con il dispositivo\n2. Attendere la connessione GPS LTE &amp;amp;\n3. Blu lampeggiante = LTE &amp;amp; GPS attivo</string>
<string name="txt_init_g40_dec">1. Muoviti all\'aperto con il dispositivo\n2. Attendere la connessione GPS LTE &amp;amp;\n3. Verde lampeggiante = LTE &amp;amp; GPS attivo</string>
<string name="txt_min_unit_lower">%s min</string>
<string name="txt_duration_min_unit">%s Min</string>
<string name="start_txt_yes">Sì</string>
<string name="txt_credit_card_exists">Il numero della carta esiste già. Sovrascriverlo?</string>
<string name="txt_wifi_password_dec">Il Wi-Fi garantisce che il tuo tracker rimanga connesso quando i segnali LTE sono deboli.</string>
<string name="txt_renewal_day">Rinnovo: $%s/%s giorno su %s</string>
<string name="txt_day_unit">/giorno x%s</string>
<string name="txt_year_care">%s Anno Cura</string>
<string name="login_txt_no_account">Non hai ancora un account?</string>
<string name="login_txt_no_account_sign_up">Inizia</string>
<string name="register_txt_back_login">Torna al login</string>
<string name="register_txt_name">Nome e cognome</string>
<string name="register_txt_next">Avanti</string>
<string name="register_txt_resend">Invia di nuovo</string>
<string name="register_txt_agree">Proseguire con l\'accettazione.</string>
<string name="register_txt_submit">Invia</string>
<string name="system_txt_map">Mappa</string>
<string name="system_txt_profile">Profilo</string>
<string name="txt_setting">Impostazioni</string>
<string name="txt_setting_notification">Notifica</string>
<string name="txt_setting_account">Account</string>
<string name="txt_setting_about">Informazioni</string>
<string name="txt_setting_clear">Cancella la cache</string>
<string name="txt_feedback_title">Commenti</string>
<string name="txt_feedback_type">Tipo di domanda (obbligatorio)</string>
<string name="txt_feedback_type_app">Informazioni sull\'app</string>
<string name="txt_feedback_type_tracker">Informazioni su Tracker</string>
<string name="txt_feedback_type_others">Altro</string>
<string name="txt_feedback_enter">Inserisci il tuo problema o suggerimento</string>
<string name="txt_feedback_email">Lasciaci la tua email in modo che possiamo aiutarti più velocemente</string>
<string name="acccount_img">Carica immagine</string>
<string name="acccount_name">Nome</string>
<string name="acccount_birthday">Compleanno</string>
<string name="acccount_email">E-mail</string>
<string name="acccount_weight">Peso</string>
<string name="acccount_height">Altezza</string>
<string name="acccount_height_how">Come misurare l\'altezza</string>
<string name="acccount_btn_save">Salva</string>
<string name="acccount_label">Tag</string>
<string name="tracker_activate">Attiva</string>
<string name="tracker_activate_no">No, grazie</string>
<string name="tracker_manage">Strumento di monitoraggio delle squadre</string>
<string name="tracker_manage_led">LED Light</string>
<string name="tracker_manage_add_pet">Nuovo Assistente animali</string>
<string name="tracker_manage_set_unbind">Sblocca</string>
<string name="txt_unsafe">Non sicuro</string>
<string name="txt_vegetable_garden">Orto</string>
<string name="txt_water">Acqua</string>
<string name="login_txt_welcome">È un piacere rivederti</string>
<string name="login_txt_email">E-mail</string>
<string name="login_txt_password">Password</string>
<string name="login_txt_fogot">Hai dimenticato la password?</string>
<string name="txt_no_refund">Nessun rimborso dopo 30 giorni</string>
<string name="txt_garden">Arredamento per il</string>
<string name="txt_park">Parco</string>
<string name="txt_play">Giocare</string>
<string name="txt_replacement_year">1 sostituzione/anno, qualsiasi motivo</string>
<string name="txt_fence_saved">Salvato. Attivo quando è online.</string>
<string name="txt_refund_expired">Il periodo di rimborso è scaduto</string>
<string name="txt_refund_policy">Politica di rimborso</string>
<string name="txt_automatic_refund">Rimborso automatico (entro 48 ore)</string>
<string name="txt_standard_refund_dec">Dopo il periodo iniziale di 48 ore, gli utenti possono richiedere un rimborso entro 30 giorni dall\'acquisto.\n\t1.Tutti i piani di abbonamento (3 mesi, 1 anno, 2 anni) sono idonei\n\t2.Le richieste di rimborso sono soggette a revisione e approvazione\n\t3.I rimborsi possono essere parzialmente adeguati in base all\'utilizzo e al consumo di servizi\n</string>
<string name="txt_automatic_refund_dec">Tutti gli acquisti in abbonamento hanno diritto a un rimborso automatico completo entro 48 ore dal pagamento. I rimborsi verranno elaborati automaticamente senza revisione manuale.\n</string>
<string name="txt_standard_refund">Finestra di rimborso standard (30 giorni)</string>
<string name="txt_no_refund_dec">Gli abbonamenti più vecchi di 30 giorni non sono rimborsabili.</string>
<string name="tracker_manage_set_network">Network</string>
<string name="tracker_manage_set_gps">GPS</string>
<string name="tracker_manage_set_ble_connect">Bluetooth connesso</string>
<string name="tracker_manage_set_ble_unconnect">Bluetooth non connesso</string>
<string name="tracker_manage_set_led_off">Disattivato</string>
<string name="tracker_manage_set_led_on">Attivato</string>
<string name="tracker_manage_set_add_family_invite">Invitare</string>
<string name="tracker_manage_set_add_family_succ">Invio riuscito</string>
<string name="tracker_manage_set_duration">Aggiornamenti GPS</string>
<string name="tracker_manage_set_fence_name">Nome</string>
<string name="tracker_manage_set_fence_shape">Forma</string>
<string name="tracker_manage_set_fence_activate">Attiva recinzione</string>
<string name="tracker_manage_set_finish">Termina</string>
<string name="tracker_light_mode_sustained">Accolta.</string>
<string name="tracker_light_mode_breathing">Modalità respirazione</string>
<string name="tracker_light_mode_flash">LAMPEGGIATORE</string>
<string name="pet_manage_gender_male">Maschio</string>
<string name="pet_manage_gender_female">Femmina</string>
<string name="pet_manage_detail_edit">Modificare</string>
<string name="map_live_btn_stop">Stop Live</string>
<string name="map_navigate_cancel">Annulla</string>
<string name="data_active_time">Tempo attivazione</string>
<string name="data_active_calories">Calorie</string>
<string name="data_active_goal_set">Imposta obiettivo</string>
<string name="data_active_btn_change">Modifica</string>
<string name="data_active_btn_current">Attuale</string>
<string name="data_active_unit_min">min</string>
<string name="data_active_unit_distance">miglio</string>
<string name="data_active_unit_calorie">kcal</string>
<string name="txt_not_null">Si prega di compilare completamente</string>
<string name="txt_successful">Successful</string>
<string name="txt_upload_successful">Caricamento completato</string>
<string name="txt_save_successful">Salvato con successo</string>
<string name="txt_login_successful">Accesso riuscito</string>
<string name="txt_change_successful">Modificati correttamente</string>
<string name="txt_tips">Suggerimenti</string>
<string name="txt_add_fences">Aggiungi recinzioni</string>
<string name="no_data">Nessun dato</string>
<string name="txt_delete_tips">Sei sicuro di voler eliminare il rigo?</string>
<string name="txt_today">Oggi</string>
<string name="txt_min">min</string>
<string name="txt_persisted_unit">giorni</string>
<string name="txt_stop_live_tips">Stop Live Tracking?</string>
<string name="txt_delete">Elimina</string>
<string name="txt_cancel">Annulla</string>
<string name="txt_pet_birthdayDate_mon">Lun</string>
<string name="txt_sure">Sì</string>
<string name="txt_notifications">Notifiche</string>
<string name="txt_net_error">Richiesta non riuscita, riprova.</string>
<string name="selector_folder_all_easy_photos">Tutti gli annunci</string>
<string name="selector_permission_error_easy_photos">Consenti le autorizzazioni pertinenti</string>
<string name="edit_easy_photos">Modificare</string>
<string name="txt_card_auto_sub">Rinnovo automatico</string>
<string name="txt_card_recharge">Ricarica</string>
<string name="txt_pay_order_total">Totale Generale</string>
<string name="txt_pay_order_payment_again">Riprovare</string>
<string name="txt_pay_order_payment_back">Indietro</string>
<string name="txt_log_out_tips">Sei sicuro di voler uscire?</string>
<string name="txt_clear_cache_tips">Confermi la cancellazione della cache dell\'app?</string>
<string name="txt_light_mode">Modalità chiara</string>
<string name="txt_loading">Caricamento in corso...</string>
<string name="txt_auto_recharge_title">Annullare l\'abbonamento automatico? Confermare?</string>
<string name="txt_auto_recharge_content">L\'abbonamento automatico è conveniente in quanto non ci sono problemi di scadenza</string>
<string name="txt_card_number">Numero carta</string>
<string name="txt_validity_card">MM/AA</string>
<string name="txt_cvv_card">CVV</string>
<string name="txt_pay_success">Pagamento pagoPA effettuato con successo</string>
<string name="txt_pay_fail">Pagamento non riuscito, riprova.</string>
<string name="txt_connecting">Connessione al Bluetooth</string>
<string name="txt_close_account_tips">La cancellazione del tuo account cancellerà definitivamente tutti i dati. Sei sicuro?</string>
<string name="txt_user_password_error">Incorrect username or password</string>
<string name="txt_verify_code_error">Errore del codice di verifica</string>
<string name="txt_verify_code_expire">Verification code expired</string>
<string name="txt_user_no_exist">User does not exist</string>
<string name="txt_user_has_exist">User already exists</string>
<string name="txt_find_password">Reset password</string>
<string name="txt_privacy_policy">Privacy Policy</string>
<string name="txt_website">Website</string>
<string name="txt_ble_enable">Turn on phone Bluetooth please</string>
<string name="txt_no_share_myself">You cannot share with yourself</string>
<string name="txt_online">Online</string>
<string name="txt_offline">Offline</string>
<string name="txt_firmware_version">Firmware Version</string>
<string name="txt_upgrade">Upgrade</string>
<string name="txt_no_dfu">Device does not exist</string>
<string name="txt_unconnect_no">Disconnected</string>
<string name="txt_latest_version">Already latest version</string>
<string name="txt_activity">Activity</string>
<string name="txt_route">Route</string>
<string name="txt_pet">Pet</string>
<string name="txt_more">More</string>
<string name="txt_km">KM</string>
<string name="txt_sleep">Sleep</string>
<string name="txt_live">Live</string>
<string name="txt_tracker">Tracker</string>
<string name="txt_badges">Badges</string>
<string name="txt_view_all">View all</string>
<string name="txt_manage">Manage</string>
<string name="txt_time">Time</string>
<string name="txt_low_zone">WiFi Zone</string>
<string name="txt_connected">Connected</string>
<string name="txt_weak_signal">Weak signal</string>
<string name="txt_bluetooth">Bluetooth</string>
<string name="txt_light">Light</string>
<string name="txt_track_and_points">Check the track and points</string>
<string name="txt_read_all">Read All</string>
<string name="txt_subscription">Subscription</string>
<string name="txt_help">Help</string>
<string name="txt_tracker_guide">How It Works</string>
<string name="txt_measurement_units">Units Setting</string>
<string name="txt_sign_out">Sign Out</string>
<string name="txt_calories_avg">Calories Avg.</string>
<string name="txt_time_avg">Time Avg.</string>
<string name="txt_total_data">Total Data</string>
<string name="txt_hrs">hrs</string>
<string name="txt_last_7days">Last 7 days</string>
<string name="txt_last_30days">Last 30 days</string>
<string name="txt_ok">Ok</string>
<string name="txt_january">January</string>
<string name="txt_february">February</string>
<string name="txt_march">March</string>
<string name="txt_april">April</string>
<string name="txt_may">May</string>
<string name="txt_june">June</string>
<string name="txt_july">July</string>
<string name="txt_august">August</string>
<string name="txt_september">September</string>
<string name="txt_october">October</string>
<string name="txt_november">November</string>
<string name="txt_december">December</string>
<string name="txt_find_device_tips">As sound speeds up, the distance is closer.</string>
<string name="txt_stop_radar">Stop Radar</string>
<string name="txt_edit_power_zone">Edit WiFi Zone</string>
<string name="txt_wifi_name">WiFi Name:</string>
<string name="txt_safe_zone">Safe Zone</string>
<string name="txt_add_new">+ Add new</string>
<string name="txt_no_go_zone">No-go Zone</string>
<string name="txt_no_zone_data">No zone added, yet</string>
<string name="txt_add_safe_zone">Add Safe Zone</string>
<string name="txt_edit_safe_zone">Edit Safe Zone</string>
<string name="txt_fence_name">Fence Name</string>
<string name="txt_zone_name">Zone Name</string>
<string name="txt_add_no_go_zone">Add No-go Zone</string>
<string name="txt_edit_no_go_zone">Edit No-go Zone</string>
<string name="txt_data_board">Data Board</string>
<string name="txt_hr">hr</string>
<string name="txt_fix_daily_goal">Set Daily Goal</string>
<string name="txt_awesome_ready_begin">Awesome! Ready to begin!</string>
<string name="txt_km_small">km</string>
<string name="txt_avg_activity_time">Daily Avg. activity time</string>
<string name="txt_avg_calories">Avg. Calories</string>
<string name="txt_avg_sleep_time">Daily Avg Resting time</string>
<string name="txt_pet_profile">Profilo</string>
<string name="txt_lb">lb</string>
<string name="txt_in">in</string>
<string name="txt_type">Type</string>
<string name="txt_sex">Sex</string>
<string name="txt_dog">Dog</string>
<string name="txt_cat">Cat</string>
<string name="txt_other">Other</string>
<string name="txt_kg">kg</string>
<string name="txt_cm">cm</string>
<string name="txt_members">Members</string>
<string name="txt_active">Active</string>
<string name="txt_pending">Pending</string>
<string name="txt_choose_avatar">Choose avatar</string>
<string name="txt_unlock_new_milestones">Unlock New Milestones!</string>
<string name="txt_congratulations">Congratulations!</string>
<string name="txt_share">Share</string>
<string name="txt_login">Log in</string>
<string name="txt_signup">Inizia</string>
<string name="txt_create_account">Create account</string>
<string name="txt_minimum_characters">Minimum 6 characters</string>
<string name="txt_country">Country</string>
<string name="txt_email_address">Email Address</string>
<string name="txt_continue">Continue</string>
<string name="txt_otp_verification">OTP verification</string>
<string name="txt_sec">sec</string>
<string name="txt_resend_code">Resend Code</string>
<string name="txt_create_new_password">Create new password</string>
<string name="txt_reset_now">Reset Now</string>
<string name="txt_confirm_password">Confirm Password</string>
<string name="txt_pwd_reset_successful">Password reset successful!</string>
<string name="txt_standard">Standard</string>
<string name="txt_satellite">Satellite</string>
<string name="txt_display_fences">Display Fences</string>
<string name="txt_select">Select</string>
<string name="txt_say_hi_tip">Always By Your Side!</string>
<string name="txt_powered_by">Powered by</string>
<string name="txt_view_less">View Less</string>
<string name="txt_see_all">See All</string>
<string name="txt_adventure">Adventure</string>
<string name="txt_new_tracker">New Tracker</string>
<string name="txt_add_new_tracker">Add new tracker</string>
<string name="txt_charge_power_on">Charge and Power On</string>
<string name="txt_step_one">Step 1 :</string>
<string name="txt_step_one_tips">Charge the tracker, 3 white lights flash, then red stays on.</string>
<string name="txt_step_two_tips">Unplug cable; slow green blinking indicates device is on.</string>
<string name="txt_step_two">Step 2 :</string>
<string name="txt_searching_tracker">Searching for Tracker</string>
<string name="txt_searching_tracker_tip">Bring the phone close to the tracker.</string>
<string name="txt_pair_tracker">Pair with Tracker</string>
<string name="txt_id_number">ID number</string>
<string name="txt_no">No</string>
<string name="txt_input_id">Input ID for Pairing</string>
<string name="txt_add_tracker">Add Tracker</string>
<string name="txt_choose_your_plan">Choose Your Plan</string>
<string name="txt_benefits">Benefits</string>
<string name="txt_monthly_subscription">Monthly Subscription</string>
<string name="txt_per_month">/month</string>
<string name="txt_per_year">/year</string>
<string name="txt_popular">Best Value</string>
<string name="txt_confirm_plan">Confirm Your Plan</string>
<string name="txt_device_number">Device Number</string>
<string name="txt_terms_conditions_v2">Terms and Conditions</string>
<string name="txt_summary">Summary</string>
<string name="txt_sales_tax">Tax</string>
<string name="txt_payment_method">Payment Method</string>
<string name="txt_choose_card">My Card</string>
<string name="txt_no_card">No Payment Method</string>
<string name="txt_add_card">+ Add New Card</string>
<string name="txt_primary">Primary</string>
<string name="txt_make_payment">Make Payment</string>
<string name="txt_redirect_paypal">We will redirect to paypal</string>
<string name="txt_add_payment">Add Payment Method</string>
<string name="txt_save_card">Save New Card</string>
<string name="txt_payment_success">Payment was Successful</string>
<string name="txt_accepted_cards">Accepted Payment Cards</string>
<string name="txt_set_primary_card">Set as primary Card</string>
<string name="txt_name_card">Name On Card</string>
<string name="txt_permissions">Permissions</string>
<string name="txt_skip">Skip</string>
<string name="txt_grant_permissions">Grant permissions for better experience.</string>
<string name="txt_tracker_id">Tracker ID</string>
<string name="txt_plan">Plan:</string>
<string name="txt_renews_on">Renews On:</string>
<string name="txt_power_saving_zone_tip">Adding where they live can improve battery and provide extra safety</string>
<string name="txt_power_saving_zone">Establish WiFi Zone</string>
<string name="txt_permanent_residence_tip">Permanent residence saves power, enhances positioning.</string>
<string name="txt_permanent_residence">Permanent Residence</string>
<string name="txt_choose_wifi">Choose Wi-Fi network</string>
<string name="txt_later">Later</string>
<string name="txt_notifications_set">Notifications Setting</string>
<string name="txt_display_fences_desc">Enter or leave Safe Zone/No-go Zone</string>
<string name="txt_tracker_status">Tracker Status</string>
<string name="txt_tracker_status_desc">Subscription/Battery Warnings/Power Off</string>
<string name="txt_activity_desc">Active/sleep reminder/goal achievement</string>
<string name="txt_about_power_saving_zone">About WiFi Zone</string>
<string name="txt_office_tip">Choose a network in a trusted space where your spents lots of time. Like your home. Once in range, your tracker will recognize this network as a WiFi Zone.</string>
<string name="txt_office">Office</string>
<string name="txt_save_power">Save Power</string>
<string name="txt_tracking_pet_tip">With Bluetooth range? Pinpoint a nearby tracker using Radar. Live will also become available, but using it will end power saving.</string>
<string name="txt_tracking_pet">Tracking your pet</string>
<string name="txt_power_saving_set">WiFi Zone Settings</string>
<string name="txt_feedback_tip">Please enter your feedback</string>
<string name="txt_enter_email_tip">Enter Your Email Address</string>
<string name="txt_choose_file">Choose File</string>
<string name="txt_power_off">Power Off</string>
<string name="txt_pet_type">What is your pet type?</string>
<string name="txt_pet_name">What is your pet name?</string>
<string name="txt_current_led">Current LED</string>
<string name="txt_out_save_zone">Left the safe zone</string>
<string name="txt_in_power_zone">In the WiFi Zone</string>
<string name="txt_in_no_go_zone">In the no-go zone</string>
<string name="txt_strong_signal">Strong signal</string>
<string name="txt_smart_power_zone">WiFi Zone</string>
<string name="txt_deactivate">Deactivate</string>
<string name="txt_valid_email">Please use a valid email address.</string>
<string name="txt_name_input">Please enter a full name.</string>
<string name="txt_password_error">Please use a valid password.</string>
<string name="txt_country_select">Please select a region.</string>
<string name="txt_to_abbidot">To ABBIDOT</string>
<string name="txt_password_no_same">Entered passwords differ!</string>
<string name="txt_no_member_yet">No Member, yet</string>
<string name="txt_invite_members">Invite Members</string>
<string name="txt_home">Home</string>
<string name="txt_live_duration">Live Duration</string>
<string name="txt_about_live_duration">About Live Duration</string>
<string name="txt_keep_short_dec">Live Mode helps find pets with location updates every 2~3 seconds, but uses more battery. You’ll still get regular updates with default tracking.</string>
<string name="txt_stop_live_dec">Live Tracking will stop at the end of the set duration, but you can stop it before to save battery.</string>
<string name="txt_keep_it_short">Keep it short</string>
<string name="txt_location_enabled">GPS Location</string>
<string name="txt_receive_notice">Receive Notifications</string>
<string name="txt_turn_on_upper">Turn ON</string>
<string name="txt_activated_tips">Device not activated. Subscribe to activate.</string>
<string name="txt_no_search_device">Keep tracker on and nearby to scan.</string>
<string name="txt_outside">Outside</string>
<string name="txt_inside">Inside</string>
<string name="txt_created_many_fences">You have created too many fences</string>
<string name="txt_live_ended">LIVE has ended. LIVE time can set through Live Duration.</string>
<string name="txt_tracker_power_off">Tracker power off</string>
<string name="txt_starting_live">Starting Live…</string>
<string name="txt_con_network">Connecting to network</string>
<string name="txt_gps_position">GPS positioning</string>
<string name="txt_start_min_live1">Starting</string>
<string name="txt_start_min_live2">-min Live</string>
<string name="txt_time_out_try_again">Timeout, please try again</string>
<string name="txt_close">Close</string>
<string name="txt_about_live">About Live</string>
<string name="txt_about_live_tip">Live Tracking will stop in one hour, but you can stop it before to save battery.</string>
<string name="txt_resting">Resting</string>
<string name="txt_resting_time">Resting time</string>
<string name="txt_no_signal">No signal</string>
<string name="txt_wifi">WiFi</string>
<string name="txt_set_measurement_units">Select measurement unit</string>
<string name="txt_metric">Metric(cm, kg)</string>
<string name="txt_imperial">Imperial(in, lb)</string>
<string name="txt_m">m</string>
<string name="txt_ft">ft</string>
<string name="txt_fences_alerts">Fences Alerts</string>
<string name="txt_my_pet_fence">My Pet Fence</string>
<string name="txt_feedback_helps_us">Your feedback helps us get better.</string>
<string name="txt_type_message">Type Message</string>
<string name="txt_verify_your_email">Please continue to verify your email</string>
<string name="txt_code_valid_min1">Code valid for</string>
<string name="txt_create_password">Create password</string>
<string name="txt_change_email_success">Change Email successful!</string>
<string name="txt_change_email">Change Email</string>
<string name="txt_enter_new_email">Enter new email</string>
<string name="txt_reminder_tip">Keep the app running in the background to receive tracker status notifications.</string>
<string name="txt_reminder">Reminder</string>
<string name="txt_yesterday">Yesterday</string>
<string name="txt_power_on_off">Power On/Off</string>
<string name="txt_power_on_off_tip">Charge and unplug to turn on \nFlashing green light = on</string>
<string name="txt_active_tracker_tip">1. Choose a subscription \n2. Tap to activate the tracker \n3. Enable GPS and cellular tracking</string>
<string name="txt_active_tracker">Active Tracker</string>
<string name="txt_check_tracker_status_tip">(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.)</string>
<string name="txt_check_tracker_status">Check Tracker Status</string>
<string name="txt_tracker_battery_tip1">When the Tracker detects no movement for 15 minutes, it turns off GPS and cellular networks, entering sleep mode automatically. Upon detecting movement, the Tracker activates and resumes normal operation.</string>
<string name="txt_tracker_battery_tip2">Connect the tracker to home WiFi (no password required). In the WiFi Zone, GPS activation is disabled. It connects to the network every 10–60 minutes, with very low power consumption.</string>
<string name="txt_tracker_battery_tip3">When your tracker is outside the WiFi Zone, it activates GPS and connects to the network every 3/5/10/15 minutes.</string>
<string name="txt_tracker_battery_life">Tracker Battery Life</string>
<string name="txt_create_fence_tip2">Choose location and adjust radius or shapeSave fence to activate it</string>
<string name="txt_create_fence_tip3">Alerts when pet enters or leaves the zone</string>
<string name="txt_create_pet_fence">Create a Pet Fence</string>
<string name="txt_tracker_sleeping_mode">Tracker in Sleeping Mode</string>
<string name="txt_low_power">(Super Low power usage)</string>
<string name="txt_in_wifi_zone">Tracker in WiFi Zone</string>
<string name="txt_outside_wifi_zone">Tracker outside WiFi Zone</string>
<string name="txt_low_power_usage">(Low power usage)</string>
<string name="txt_standard_power_usage">(Standard power usage)</string>
<string name="txt_highest_power_usage">(The highest power usage)</string>
<string name="txt_gps_update_interval">Choose the right GPS update interval</string>
<string name="txt_in_live_mode">Tracker in Live Mode</string>
<string name="txt_fresh_paws">Fresh Paws</string>
<string name="txt_day_1_devotee">Day 1 Devotee</string>
<string name="txt_newbie_navigator">Newbie Navigator</string>
<string name="txt_furry_friend">Furry Friend</string>
<string name="txt_pawtential_pal">Pawtential Pal</string>
<string name="txt_month_mate">Month Mate</string>
<string name="txt_tailwag_explorer">Tailwag Explorer</string>
<string name="txt_pawsome_partner">Pawsome Partner</string>
<string name="txt_1_year_hugger">1 Year Hugger</string>
<string name="txt_purrfect_partner">Purrfect Partner</string>
<string name="txt_2_year_companion">2 Year Companion</string>
<string name="txt_faithful_friend">Faithful Friend</string>
<string name="txt_3_year_harmony">3 Year Harmony</string>
<string name="txt_furr_timer_friend">Furr-timer Friend</string>
<string name="txt_fresh_paws_dec">Welcome to the community! Start your journey with your first badge.</string>
<string name="txt_day_1_devotee_dec1">You\’ve just started! Your dedication on the first day is noted.</string>
<string name="txt_day_1_devotee_dec2">Log in for a day to earn this badge!</string>
<string name="txt_newbie_navigator_dec1">You\’re finding your way around. Keep exploring to reach new milestones!</string>
<string name="txt_newbie_navigator_dec2">Continue exploring for three days to achieve this milestone!</string>
<string name="txt_furry_friend_dec1">A week in, and you\’re already becoming a part of our furry family!</string>
<string name="txt_furry_friend_dec2">Stay active for a week to earn the Furry Friend badge!</string>
<string name="txt_pawtential_pal_dec1">You\’re showing great potential! Keep up the good work.</string>
<string name="txt_pawtential_pal_dec2">Keep engaging for fifteen days to unlock this badge!</string>
<string name="txt_month_mate_dec1">One month in and you\’re a valued member of our community!</string>
<string name="txt_month_mate_dec2">Be a part of our community for a month to achieve this badge!</string>
<string name="txt_tailwag_explorer_dec1">Three months of exploration and adventure—well done!</string>
<string name="txt_tailwag_explorer_dec2">Explore with us for three months to earn the Tailwag Explorer badge!</string>
<string name="txt_pawsome_partner_dec1">Six months of fantastic partnership. Thanks for sticking with us!</string>
<string name="txt_pawsome_partner_dec2">Stick around for six months to earn the Pawsome Partner badge!</string>
<string name="txt_1_year_hugger_dec1">A whole year of dedication! Here\’s to many more!</string>
<string name="txt_1_year_hugger_dec2">Continue with us for a year to achieve this milestone!</string>
<string name="txt_purrfect_partner_dec1">Eighteen months and still going strong. You\’re truly purrfect!</string>
<string name="txt_purrfect_partner_dec2">Stay engaged for eighteen months to earn the Purrfect Partner badge!</string>
<string name="txt_2_year_companion_dec1">Two years with us—your loyalty is greatly appreciated!</string>
<string name="txt_2_year_companion_dec2">Complete two years with us to receive the 2 Year Companion badge!</string>
<string name="txt_faithful_friend_dec1">Thirty months of faithful companionship. You\’re a treasured friend!</string>
<string name="txt_faithful_friend_dec2">Remain a faithful friend for thirty months to earn this badge!</string>
<string name="txt_3_year_harmony_dec1">Three years together in perfect harmony. Thank you for being with us!</string>
<string name="txt_3_year_harmony_dec2">Three years of harmony with us will earn you this badge!</string>
<string name="txt_furr_timer_friend_dec1">Five years of wonderful friendship. Your commitment is truly inspiring!</string>
<string name="txt_furr_timer_friend_dec2">Five years of commitment will unlock the Furr-timer Friend badge!</string>
<string name="txt_how_to_get">How to get?</string>
<string name="txt_family_invitation">Family Invitation</string>
<string name="txt_active_time1">Active Time:</string>
<string name="txt_expires_on1">Expires On:</string>
<string name="txt_expires_on2">Expired on:</string>
<string name="txt_years">YEARS</string>
<string name="txt_mouths">MONTHS</string>
<string name="txt_days">DAYS</string>
<string name="txt_subscription_history">Subscription Order</string>
<string name="txt_order_id">Order ID:</string>
<string name="txt_request_refund_dec">Enter your reason for the refund</string>
<string name="txt_request_refund">Request a refund</string>
<string name="txt_refund">Refund</string>
<string name="txt_waiting">Waiting</string>
<string name="txt_refunding">Refunding</string>
<string name="txt_refunded">Refunded</string>
<string name="txt_renewal_year2">/year on</string>
<string name="txt_renewal_month2">/month on</string>
<string name="txt_annual_care_text">Annual Care</string>
<string name="txt_annual_care_text1">Annual Care:</string>
<string name="txt_led_light_set">LED Light Settings</string>
<string name="txt_bluetooth_setup_dec">When the tracker is next to your phone, it is recommended to connect to the tracker via Bluetooth and adjust the LED settings. The changes will take effect immediately.</string>
<string name="txt_bluetooth_setup">Bluetooth Setup</string>
<string name="txt_network_setup_dec">When the tracker is not near your phone, you can set the LED lights remotely via the network. In this case, it usually takes a few minutes for the settings to take effect.</string>
<string name="txt_duplicate_wifi_not">Sorry, duplicate WiFi not allowed</string>
<string name="txt_network_setup">Network Setup</string>
<string name="txt_about_weight_dec">Set accurate weight to improve calorie accuracy.</string>
<string name="txt_enable_auto_renew">Enable Auto-Renew</string>
<string name="txt_about_weight">About Weight</string>
<string name="txt_order">Order</string>
<string name="txt_set_premium">Set Premium</string>
<string name="txt_basic">Basic</string>
<string name="txt_premium">Premium</string>
<string name="txt_rejected">Rejected</string>
<string name="txt_expired">Expired</string>
<string name="txt_upgrade_plan">Upgrade Your Plan</string>
<string name="txt_residual_value">Residual Value</string>
<string name="txt_about_dec">Track and train pets to prevent loss or danger.</string>
<string name="txt_advanced_set">Advanced Setting</string>
<string name="txt_delete_account">Delete Account</string>
<string name="txt_change_name">Change Name</string>
<string name="txt_your_email">Your Email Address:</string>
<string name="txt_change_now">Change Now</string>
<string name="txt_upgrade_now">Upgrade Now</string>
<string name="txt_activity_time">Activity Time</string>
<string name="txt_not_set">Not Set</string>
<string name="txt_done">Done</string>
<string name="txt_weather_save">Weather to save?</string>
<string name="txt_connect">Connect</string>
<string name="txt_skip_password">Skip password</string>
<string name="txt_connect_ing">Connecting</string>
<string name="txt_incorrect_password">Incorrect password, please try again.</string>
<string name="txt_view_access">Your view access has ended.</string>
<string name="txt_about_track_duration_dec">As long as your tracker detects your buddy is safe and sound in a Power Saving Zone, it will keep LIVE Tracking, Light and Sound off to extend battery life.</string>
<string name="txt_about_track_duration">About Tracking Duration</string>
<string name="txt_be_deleted">Will be Deleted</string>
<string name="txt_led_setting">LED Light Setting</string>
<string name="txt_reserve">Reserve</string>
<string name="txt_subscription_plan">Subscription Plan</string>
<string name="txt_con_tracker">Connecting Tracker</string>
<string name="txt_annual_care_included">Annual Care included, non-adjustable</string>
<string name="txt_delete_succe">Delete successfully</string>
<string name="txt_sure_delete_card">Sure to delete this card?</string>
<string name="txt_account_exists_log_in">Account exists. Log in now?</string>
<string name="txt_time_out_of_range">Selected date is out of range</string>
<string name="txt_power_on_off_install_tip">Shake to turn on \nFlashing green light confirms on</string>
<string name="txt_check_tracker_status_top_tip">GPS and cellular signals may vary by location. \nTest in different locations before use.</string>
<string name="txt_on_charging">Tracker is on charging</string>
<string name="txt_active_subscribed">Subscribed</string>
<string name="map_baidu_map">Baidu Maps</string>
<string name="txt_send">Send</string>
<string name="txt_turn_on_power">To turn on, connect the power cable. After first-time startup, shake to turn on.</string>
<string name="txt_as_low_as">As low as</string>
<string name="txt_payment_manager">Payment Manager</string>
<string name="txt_basic_plan">Basic Plan</string>
<string name="txt_premium_plan">Premium Plan</string>
<string name="txt_activate_subscribe">Activate Subscription</string>
<string name="txt_charging">Charging</string>
<string name="txt_total_time">Total Time</string>
<string name="txt_live_works_cellular">Live works on cellular only</string>
<string name="txt_unbind_device">Unbind Device</string>
<string name="txt_edit_profile">Edit Profile</string>
<string name="txt_no_internet">No internet connection</string>
<string name="txt_system_error">System Error: Please try again later.</string>
<string name="txt_missing_param">Missing Parameters.</string>
<string name="txt_tracker_busy">Tracker Busy. Please wait and retry.</string>
<string name="txt_tracker_offline">Tracker Offline. Unable to proceed.</string>
<string name="txt_tracker_live">Live stream in progress. Settings unavailable.</string>
<string name="txt_abnormity">Operation failed. Please try again.</string>
<string name="txt_tone">Tone</string>
<string name="txt_locate_works">Locate works on cellular only</string>
<string name="txt_pet_close">Pet is close, try Radar</string>
<string name="txt_fully_charged">Fully charged</string>
<string name="txt_time_line">Timeline</string>
<string name="txt_phone_close_device">Keep phone close to device</string>
<string name="txt_auto_renew_cancel">Auto-Renew: Cancel</string>
<string name="txt_display_dashed_line">Display Dashed Line</string>
<string name="txt_first_use">First use</string>
<string name="txt_daily_use">Daily use</string>
<string name="txt_sleep_mode">Sleep Mode</string>
<string name="txt_sleep_mode_help">1. 15 minutes no movement → sleep mode. \n2. Auto wake on movement. \n3. Battery updates every 24 hours.</string>
<string name="txt_wifi_zone_home">WiFi Zone(Home)</string>
<string name="txt_wifi_zone_home_help">1. Connect to home WiFi. \n2. GPS off → save battery. \n3. Update every ~60 minutes.</string>
<string name="txt_gps_update_help">1. Select 3–15 min. \n2. Short interval = higher battery use. \n3. Default: 5 min.</string>
<string name="txt_set_fence_type">Set Fence type</string>
<string name="txt_fence_type_help">Safe Zone or No-go Zone</string>
<string name="txt_set_boundary">Set boundary</string>
<string name="txt_enable_set_notify">Enable alerts in Account &gt; Settings &gt; Notifications</string>
<string name="txt_edit_delete_fence">Edit or delete fence in Manage</string>
<string name="txt_init_device">Initializing Device</string>
<string name="txt_add_wifi_tips">Add Wi-Fi zone to prolong care time</string>
<string name="txt_add">Add</string>
<string name="txt_already_min_size">Already at minimum size</string>
<string name="txt_login_with">Login with</string>
<string name="txt_my_card">My Card</string>
<string name="txt_edit_my_card">Edit Payment Method</string>
<string name="txt_phone_has_bound">Your phone number has already been bound</string>
<string name="txt_go_to">Go to</string>
<string name="txt_pet_tracker">Pet &gt; Tracker</string>
<string name="txt_pet_tracker_gps">Pet &gt; Tracker &gt; GPS Update</string>
<string name="txt_pet_fence_add">Pet &gt; My Pet Fence &gt; Manage &gt; + Add New</string>
<string name="txt_check">Check:</string>
<string name="txt_help_status_network">· Network\n· WiFi Zone\n· GPS</string>
<string name="txt_help_status_bluetooth">· Bluetooth\n· Battery\n· LED</string>
<string name="register_txt_policy">Privacy Policy</string>
<string name="txt_expires_on">Expires On</string>
<string name="map_navigate_map_google">Google Map</string>
<string name="txt_upgrade_success">Upgrade successful</string>
<string name="txt_upgrade_fail">Upgrade failed</string>
<string name="txt_please_enter_email">Please enter email address.</string>
<string name="tracker_enter_id">Enter Tracker ID</string>
<string name="txt_no_signal_tip">No signal. Check if pet indoors.</string>
<string name="txt_recommenced">Recommenced</string>
<string name="txt_expiry_time">Expiry Time:</string>
<string name="txt_terms_html">terms_it.html</string>
<string name="txt_privacy_html">privacy_it.html</string>
<string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_it.html</string>
<string name="register_txt_noreceive">Non hai ricevuto l\’e-mail?</string>
<string name="pet_managet_age_1">%d anno</string>
<string name="pet_manage_detail_earned">%d/100 ottenuti</string>
<string name="map_current_update_time">Ultima volta: %s</string>
<string name="txt_show_track_point">Mostra percorso e punto</string>
<string name="txt_share_pet_tips">Sei sicuro di voler condividere i dati dell\'animale con \' %s \'?</string>
<string name="select_puzzle_photos">Seleziona 2 \~ 9 foto</string>
<string name="txt_pay_amount_detail1">Rinnova a %.2f all\'anno successivamente, annulla in qualsiasi momento</string>
<string name="txt_pay_order_off">$%doff già</string>
<string name="txt_pay_order_detail_sub_on">Il piano di abbonamento è attivo fino a %s</string>
<string name="txt_pay_order_detail_sub_off">Il rinnovo automatico è disattivato e il piano di abbonamento non sarà disponibile dopo %s</string>
<string name="txt_confirm_save_card">Salva e conferma</string>
<string name="txt_perMonth">$%s/mese</string>
<string name="txt_congratulations_tip">Hai configurato correttamente il tuo animale domestico e hai \neparato il badge di sicurezza!</string>
<string name="txt_add_tracker_tip2">Dispositivo già associato, verifica \ne riprova</string>
<string name="txt_ft_unit">%s piedi</string>
<string name="txt_mph_unit">%s mph</string>
<string name="txt_family_delete">Sei sicuro di voler eliminare la famiglia %s?</string>
<string name="txt_create_fence_tip4">4. Attiva le notifiche: vai su &amp;#39;Account&amp;#39; &amp;gt; &amp;#39;Impostazioni&amp;#39;. Fai clic su &amp;#39;Notifiche&amp;#39; e attiva</string>
<string name="txt_month_unit">/mese x%s</string>
<string name="txt_year_unit">/%s anno</string>
<string name="txt_card_list_end">A partire da %s</string>
<string name="txt_legal_info_content">Utilizzando la nostra app, accetti la nostra Informativa sulla privacy e i nostri Termini. Potremmo aggiornarli occasionalmente: l\'uso continuato significa che accetti eventuali modifiche.</string>
<string name="login_txt_phone">Telefono</string>
<string name="login_txt_login_wechat">Accedi con WeChat</string>
<string name="login_txt_login_code">Accedi con codice di verifica</string>
<string name="login_txt_login_apple">Accedi con Apple</string>
<string name="login_txt_login_account">Accedi con l\'account</string>
<string name="txt_set_new_password">Imposta nuova password</string>
<string name="txt_code_success">Codice di verifica inviato</string>
<string name="login_txt_login_password">Accedi con la password</string>
<string name="register_txt_hey">Salve!</string>
<string name="register_txt_set_password">Imposta password di accesso</string>
<string name="register_txt_get_code">Ottieni</string>
<string name="register_txt_sented_code">Abbiamo inviato il link di verifica al tuo indirizzo e-mail.</string>
<string name="register_txt_verification">Codice di verifica</string>
<string name="register_txt_agree1">Leggi e accetta l\'</string>
<string name="register_txt_agree2">e</string>
<string name="register_txt_terms">Termini di utilizzo</string>
<string name="register_txt_bind_phone">Vincolo</string>
<string name="login_txt_login_finish">Completato</string>
<string name="system_txt_data">Dati</string>
<string name="txt_my_orders">I miei Ordini</string>
<string name="txt_help_center">Centro assistenza</string>
<string name="txt_feedback">Commenti</string>
<string name="txt_setting_title">Impostazione</string>
<string name="txt_setting_language">Lingua</string>
<string name="txt_setting_logout">Esci</string>
<string name="txt_feedback_notype">Per favore, seleziona un tipo di domanda</string>
<string name="acccount_gender">Genere.</string>
<string name="acccount_location">Località</string>
<string name="acccount_phone">Telefono</string>
<string name="acccount_breed">Razza</string>
<string name="tracker_activate_cancel">Attiva il dispositivo per continuare.</string>
<string name="tracker_activate_yes">Attiva</string>
<string name="tracker_manage_title">Tracker</string>
<string name="tracker_manage_mine">Strumento di monitoraggio delle squadre</string>
<string name="tracker_manage_authorized">Autorizzato</string>
<string name="tracker_manage_fence">Recinto</string>
<string name="tracker_manage_set">Impostazione</string>
<string name="tracker_manage_set_card_day">Giorni</string>
<string name="tracker_manage_set_led">Luce LED</string>
<string name="tracker_manage_set_Fence">Recinto</string>
<string name="tracker_manage_set_family">Famiglia</string>
<string name="tracker_manage_set_add_family">Aggiungere famiglia</string>
<string name="tracker_manage_set_add_family_detail">Invita la tua famiglia a condividere la posizione o l\'attività dell\'animale domestico. I membri della famiglia non possono creare recinzioni o modificare le impostazioni.</string>
<string name="tracker_manage_set_add_family_back">Indietro</string>
<string name="tracker_manage_set_power">Spegni</string>
<string name="pet_manage_detail_title2">Badge attività</string>
<string name="map_navigate_select_map">Seleziona mappa</string>
<string name="map_navigate_map_gaode">Mappa Gaode</string>
<string name="txt_no_install">L\'APP non è installata, scarica e installa prima l\'app</string>
<string name="txt_add_successful">Aggiunto con successo</string>
<string name="txt_delete_success">Eliminato correttamente</string>
<string name="txt_unbind_tips">Sei sicuro di voler scollegare il dispositivo?</string>
<string name="txt_unbind_success">Scollegamento riuscito</string>
<string name="txt_bind_success">Rilegatura riuscita</string>
<string name="txt_distance_unit">miglio</string>
<string name="txt_calorie_unit">kcal</string>
<string name="txt_device_renewal">Il tuo dispositivo è scaduto, rinnovalo</string>
<string name="txt_load_map">Caricamento mappa in corso...</string>
<string name="hello_blank_fragment">Ciao, frammento vuoto</string>
<string name="selector_folder_all_video_photo_easy_photos">Foto e Video</string>
<string name="selector_easy_photos">Seleziona</string>
<string name="selector_preview_easy_photos">Anteprima</string>
<string name="selector_single_type_hint_easy_photos">È possibile selezionare un solo tipo di file</string>
<string name="msg_no_camera_easy_photos">Impossibile avviare la telecamera</string>
<string name="camera_temp_file_error_easy_photos">Immagine errata</string>
<string name="selector_image_type_error_easy_photos">Formato dell\'immagine non supportato.</string>
<string name="empty_easy_photos">Cancella</string>
<string name="no_photos_easy_photos">Nessuna foto corrispondente</string>
<string name="no_videos_easy_photos">Nessun video corrispondente</string>
<string name="original_easy_photos">Originale</string>
<string name="done_easy_photos">Termina</string>
<string name="cancel_easy_photos">Annulla</string>
<string name="template_easy_photos">Modello</string>
<string name="text_sticker_easy_photos">Testo</string>
<string name="text_sticker_date_easy_photos">Data</string>
<string name="text_sticker_hint_easy_photos">Doppio click per modificare</string>
<string name="text_sticker_hint_name_easy_photos">Personalizza</string>
<string name="picture_selection_easy_photos">&lt;g id="1"&gt;Selezione foto:&lt;/g&gt;</string>
<string name="gif_easy_photos">GIF</string>
<string name="txt_pay_order_add_card">Aggiungi Nuova Carta</string>
<string name="txt_pay_order_payment_title">Pagamento</string>
<string name="txt_pay_order_detail_plan">Piano di abbonamento:</string>
<string name="txt_firmware_upgrade">Aggiornamento firmware</string>
<string name="txt_feedback_success">Invio riuscito</string>
<string name="txt_clear_cache_success">Completato con successo</string>
<string name="txt_token_overdue">Login fallito, riprovare</string>
<string name="txt_cardholder_name">Nome titolare carta</string>
<string name="card_holder">Titolare della carta</string>
<string name="expiry">DATA DI SCADENZA</string>
<string name="txt_card_validity_format">Data di scadenza non valida</string>
<string name="txt_card_number_format">Formato della carta di credito non valido</string>
<string name="txt_turnoff_tips">Sei sicuro di voler spegnere il dispositivo?</string>
<string name="txt_crop">Coltura</string>
<string name="txt_exit_return">Premere di nuovo per uscire dall\'app</string>
<string name="txt_register_fail">Registrazione non riuscita</string>
<string name="txt_email_format_error">Formato e-mail errato</string>
<string name="txt_disconnect_tips">Scollega dispositivo</string>
<string name="txt_connect_success">Connessione riuscita</string>
<string name="txt_connect_fail">Collegamento non riuscito</string>
<string name="txt_register_phone">Inserisci il tuo numero di telefono</string>
<string name="txt_about_app_name">Abbidot</string>
<string name="txt_change_pwd">Reimposta password</string>
<string name="txt_cancel_pay">Annullare il pagamento</string>
<string name="txt_device_has_bound">L\'utente corrente ha già associato questo dispositivo</string>
<string name="txt_first_name">Nome</string>
<string name="txt_last_name">Cognome</string>
<string name="txt_legal_info_title">Informazioni legali</string>
<string name="txt_accept">Ho letto ed approvo la Privacy Policy</string>
<string name="txt_deny">Rifiuto</string>
<string name="txt_no_down_url">Scarica l\’indirizzo</string>
<string name="txt_please_wait">Attendi...</string>
<string name="txt_release_notes">Descrizione versione</string>
<string name="txt_firmware_name">Nome del Firmware</string>
<string name="txt_firmware_size">File del firmware</string>
<string name="txt_down_firmware">Scarica il firmware</string>
<string name="txt_dfu_model">Entrare in modalità DFU</string>
<string name="txt_search_dfu">Cerca dispositivi...</string>
<string name="txt_connect_device">A connettere dispositivi</string>
<string name="txt_reconnect_device">Ricollega l\'apparecchiatura</string>
<string name="txt_unconnect">Periferica disconnessa</string>
<string name="txt_upgrading">potenziamento</string>
<string name="txt_upgrade_start">Preparazione per l\'aggiornamento</string>
<string name="txt_device_connect_success">Dispositivo collegato con successo</string>
<string name="txt_battery">Batteria</string>
<string name="txt_january_abbr">Gen</string>
<string name="txt_february_abbr">feb</string>
<string name="txt_march_abbr">mar</string>
<string name="txt_april_abbr">apr</string>
<string name="txt_may_abbr">Maggio</string>
<string name="txt_june_abbr">Giù</string>
<string name="txt_july_abbr">Lug</string>
<string name="txt_august_abbr">ago</string>
<string name="txt_september_abbr">Set</string>
<string name="txt_october_abbr">Ott</string>
<string name="txt_november_abbr">nov</string>
<string name="txt_december_abbr">Dic</string>
<string name="txt_minimum">minimo</string>
<string name="txt_total_activity_distance">Distanza totale attività</string>
<string name="txt_welcome_back">È un piacere rivederti</string>
<string name="txt_mm_dd">MM/AA</string>
<string name="txt_cvc">CVC</string>
<string name="txt_enable">Abilita</string>
<string name="txt_renew_year2">Annui)</string>
<string name="txt_save_power_tip">Finché il tuo tracker rileva che il tuo amico è sano e salvo in una zona WiFi, manterrà il monitoraggio in tempo REALE, la luce e il suono spenti per prolungare la durata della batteria.</string>
<string name="txt_invite_new">Invitare</string>
<string name="txt_delete_pet_data1">Questo eliminerà tutti</string>
<string name="txt_delete_pet_data2">dati in modo permanente dal tuo account.</string>
<string name="txt_bluetooth_enabled">Bluetooth</string>
<string name="txt_search_device">Ricerca…</string>
<string name="txt_7days_avg">Media 7 giorni</string>
<string name="txt_weak_gps_signal">Segnale GPS debole</string>
<string name="map_current_no_signal">Nessun segnale di rete</string>
<string name="txt_resting_time_uppercase">TEMPO DI RIPOSO</string>
<string name="txt_km_h">km/h</string>
<string name="txt_mph">mph</string>
<string name="txt_family_invitation_dec1">Un Suo/a amico/a</string>
<string name="txt_family_invitation_dec2">invita a diventare</string>
<string name="txt_family_invitation_dec3">famiglia.</string>
<string name="txt_auto_renew1">Rinnovo automatico</string>
<string name="txt_renewal_month1">Rinnovo:</string>
<string name="txt_show_crash">Il programma ha un\'eccezione e sta per uscire</string>
<string name="txt_powered_off">Spento.</string>
<string name="txt_load_more_pull_text">Tira per caricarne altri</string>
<string name="txt_load_more_release_text">Rilascia per caricarne di più.</string>
<string name="txt_total">Totale</string>
<string name="txt_show_all_pet">Visualizza tutto</string>
<string name="txt_use_valid_phone">Immetti un numero di telefono valido</string>
<string name="txt_account">Account</string>
<string name="txt_3_months_includes">1. Protezione flessibile a breve termine\n\n2. Garanzia di rimborso di 30 giorni</string>
<string name="txt_1_year_includes">1. Assistenza clienti dedicata\n\n2. Copertura annuale di protezione\n\n3. Garanzia di rimborso di 30 giorni</string>
<string name="txt_2_years_includes">1. Sostituzione gratuita del dispositivo inclusa (1x)\n\n2. Protezione migliorata\n\n3. Protezione per animali domestici senza problemi\n\n4. Garanzia di rimborso di 30 giorni</string>
<string name="system_txt_copyright">Copyright © %d ABBIDOT Tutti i diritti riservati</string>
<string name="tracker_number">Inseguitori %d</string>
<string name="pet_number">%d Animali domestici</string>
<string name="pet_manage_height">%d in</string>
<string name="txt_permissions_fail_tips">Impossibile ottenere l\'autorizzazione</string>
<string name="no_pet">ANIMALI NON AMMESSI</string>
<string name="no_bind_pet">Si prega di legare prima un animale domestico</string>
<string name="txt_battery_unit">%d%%</string>
<string name="txt_pet_birthdayDate">%dY %dMon</string>
<string name="selector_folder_video_easy_photos">Tutti i video</string>
<string name="selector_action_done_easy_photos">Completo(%1$d/%2$d)</string>
<string name="selector_reach_max_hint_easy_photos">Supporta fino a %d foto o video</string>
<string name="selector_reach_max_image_hint_easy_photos">Supporta fino a foto %d</string>
<string name="selector_reach_max_video_hint_easy_photos">Supporta fino a video %d</string>
<string name="selector_image_size_error_easy_photos">La larghezza della foto deve essere maggiore di %1$d e l\'altezza deve essere maggiore di %1$d</string>
<string name="permissions_again_easy_photos">Consenti le autorizzazioni pertinenti</string>
<string name="permissions_die_easy_photos">Consenti le autorizzazioni pertinenti</string>
<string name="preview_current_number_easy_photos">%1$d/%2$d</string>
<string name="txt_today_date">Oggi\t%s</string>
<string name="video_selection_easy_photos">视频模式选择。</string>
<string name="txt_dollar">$\t%.2f</string>
<string name="txt_goal_percent">%s%%</string>
<string name="txt_reset_password_tips">Inserisci l\'indirizzo e-mail registrato nel tuo profilo.\nInvieremo un codice di 4 cifre alla tua e-mail.</string>
<string name="txt_money_unit">$%s</string>
<string name="txt_per_month_money">$%s/mese</string>
<string name="txt_per_year_money">$%s/anno</string>
<string name="txt_delete_pet_data">Ciò eliminerà tutti i dati %s in modo permanente dal tuo account.</string>
<string name="txt_renew_year">(Rinnova a $%s all\'anno)</string>
<string name="txt_activity_success">Attivazione\nCompletata</string>
<string name="txt_start_min_live">Avvio di %s-min Live</string>
<string name="txt_code_valid_min">Codice valido per %ss</string>
<string name="txt_family_invitation_dec">Il tuo amico %s ti invita a diventare la famiglia %s.</string>
<string name="txt_renewal_year">Rinnovo: $%s/anno su %s</string>
<string name="txt_renewal_month">Rinnovo: $%s/mese su %s</string>
<string name="txt_annual_care">Protezione annuale delle cure</string>
<string name="txt_auto_subscription_year">(Rinnovare a $ %sall\'anno in seguito)</string>
<string name="txt_auto_subscription_month">(Rinnova a $%s al mese successivo)</string>
<string name="txt_fail">Non superato</string>
<string name="txt_edit_pay_method">Modifica Metodo di Pagamento</string>
<string name="txt_please_enter_pws">Inserisci la password.</string>
<string name="txt_location_tip">L\'APP ABBIDOT raccoglie i dati sulla posizione, è possibile calcolare il percorso e la distanza tra la posizione corrente e il dispositivo.</string>
<string name="txt_auto_subscription_day">(Rinnova a $%s al giorno successivo)</string>
<string name="txt_auto_subscription_days">(Rinnovare a $%s/%s giorni successivi)</string>
<string name="txt_auto_subscription_years">(Rinnovare a $%s/%s anni successivi)</string>
<string name="txt_auto_subscription_months">(Rinnovare a $%s/%s mesi successivi)</string>
<string name="txt_renewal_years">Rinnovo: $%s/%s anni su %s</string>
<string name="txt_renewal_months">Rinnovo: $%s/%s mesi su %s</string>
<string name="txt_login_info_invalid">Sessione scaduta. Accedi di nuovo</string>
</resources>

View File

@@ -941,4 +941,5 @@
<string name="txt_terms_html">terms_zh.html</string> <string name="txt_terms_html">terms_zh.html</string>
<string name="txt_privacy_html">privacy_zh.html</string> <string name="txt_privacy_html">privacy_zh.html</string>
<string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_zh.html</string> <string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_zh.html</string>
<string name="txt_login_info_invalid">登录信息失效,请重新登录</string>
</resources> </resources>

View File

@@ -992,4 +992,5 @@
<string name="txt_terms_html">terms_en.html</string> <string name="txt_terms_html">terms_en.html</string>
<string name="txt_privacy_html">privacy_en.html</string> <string name="txt_privacy_html">privacy_en.html</string>
<string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_en.html</string> <string name="txt_subscription_terms_conditions_html">subscription_terms_conditions_en.html</string>
<string name="txt_login_info_invalid">Login session expired. Please log in again</string>
</resources> </resources>

View File

@@ -94,7 +94,7 @@ class AppUtils {
* 是否是国内 * 是否是国内
*/ */
fun isChina(type: String = SWITCH_PAGE_TYPE): Boolean { fun isChina(type: String = SWITCH_PAGE_TYPE): Boolean {
return false return true
if (isDebug()) { if (isDebug()) {
if (type == SWITCH_MAP_TYPE && MMKVUtil.getBoolean(MMKVKey.OnlyGoogleMap, false)) { if (type == SWITCH_MAP_TYPE && MMKVUtil.getBoolean(MMKVKey.OnlyGoogleMap, false)) {
//只启用谷歌地图 //只启用谷歌地图