diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt index feca80e..ce79117 100644 --- a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/baidumap/NavigationBaiduMapFragment.kt @@ -64,7 +64,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() { //宠物经纬度 val convertLonLat = getBaiduMapLatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude,true) - mPetLatLng = convertLonLat + setPetLatLng(convertLonLat) //画围栏 mFencesMapViewModel.setFencesData( @@ -84,7 +84,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() { val locationLatLng = LatLng(location!!.latitude, location.longitude) val points = mutableListOf() points.add(locationLatLng) - points.add(mPetLatLng!!) + points.add(getPetLatLng()!!) addNavigationLine(points) } @@ -92,7 +92,7 @@ class NavigationBaiduMapFragment: BaseBaiduMapFragment() { * 画导航直线 */ private fun addNavigationLine(points: MutableList) { - if (points.size < 1) return + if (points.isEmpty()) return mRoutePlanningViewModel.getBaiduMapRoutePlan(mMapNavigationActivity, points[0], points[1]) //设置折线的属性 diff --git a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt index 97858b4..f1b9ab4 100644 --- a/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/deprecated/ui/fragment/map/googlemap/NavigationGoogleMapFragment.kt @@ -59,7 +59,7 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() { //计算2点的距离 val distance = com.abbidot.tracker.util.Util.measureLatLonDistance(mMyLocation!!.latitude, - mMyLocation!!.longitude, mPetLatLng!!.latitude, mPetLatLng!!.longitude) + mMyLocation!!.longitude, getPetLatLng()!!.latitude, getPetLatLng()!!.longitude) //计算步行需要多久 假设步行速度为1.3m/s 只计算大概数据 val time = distance / 1.3 @@ -127,14 +127,14 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() { setGoogleMapZoom(12.5f) mMapNavigationActivity.apply { - mPetLatLng = LatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude) + setPetLatLng(LatLng(mMapDeviceBean!!.latitude, mMapDeviceBean!!.longitude)) //画围栏 mFencesMapViewModel.setFencesData( mContext, mMapDeviceBean!!.fences, this@NavigationGoogleMapFragment) - refreshPetCurrentLocation(mPetLatLng!!, isAnimMoveCamera = false, + refreshPetCurrentLocation(getPetLatLng()!!, isAnimMoveCamera = false, headBgResId = R.drawable.pic_map_location) } @@ -142,6 +142,6 @@ class NavigationGoogleMapFragment: BaseGoogleMapFragment() { override fun locationSuccess(location: Location?) { mMyLocation = location - addNavigationLine(LatLng(location!!.latitude, location.longitude), mPetLatLng!!) + addNavigationLine(LatLng(location!!.latitude, location.longitude), getPetLatLng()!!) } } \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/service/BaiduLocationService.kt b/app/src/main/java/com/abbidot/tracker/service/BaiduLocationService.kt index 4f4101a..994e2d5 100644 --- a/app/src/main/java/com/abbidot/tracker/service/BaiduLocationService.kt +++ b/app/src/main/java/com/abbidot/tracker/service/BaiduLocationService.kt @@ -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 mLocationClient = LocationClient(applicationContext).apply { locOption = LocationClientOption().apply { @@ -67,6 +67,15 @@ class BaiduLocationService : Service() { } } + /** + * 重新设置定位时间间隔,单位秒,直播场景下建议设置为10秒以上 + */ + fun setScanSpan(locationPeriod: Int) { + mLocationClient?.apply { + locOption.scanSpan = locationPeriod * 1000 + } + } + fun stopLocation() { mLocationClient?.apply { stop() diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt index d72b82f..8798b8f 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/HomeV2Activity.kt @@ -167,6 +167,10 @@ class HomeV2Activity : BaseActivity(ActivityHomeV2Binding mViewBinding.homeV2ViewPager2.setCurrentItem(2, false) setLineShow(2) + //判断是否登录失效 + if (loginInfoInvalid()) + return + //出现闪退,5秒退出APP val isCrash = MMKVUtil.getBoolean(MMKVKey.isCrash, false) if (isCrash) { @@ -222,8 +226,26 @@ class HomeV2Activity : BaseActivity(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() { super.onResume() + if (loginInfoInvalid()) + return if (isCountdownAutoConnBle && mCountdownType == ConstantInt.Type1) { LogUtil.e("onResume,自动连接设备20秒计时开始") mCountDownTimerViewModel.startCountDown(20) diff --git a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt index fbc2f00..ce7ab01 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/activity/map/LiveActivityV3.kt @@ -47,6 +47,7 @@ import com.abbidot.tracker.dialog.CommonDialog1 import com.abbidot.tracker.dialog.SelectMapTypeDialog import com.abbidot.tracker.ui.DebugActivity 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.ViewUtil import com.abbidot.tracker.util.bluetooth.SRBleCmdUtil @@ -171,6 +172,7 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding Utils.DATE_FORMAT_PATTERN_EN12, isLiveJump ) { mapLoadOk() } + if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(10) ViewUtil.instance.setMapSwitchLocationButtonImage( ivMapLiveV2RefreshBtn, mShowCenterLocation ) @@ -920,6 +922,9 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding // mViewBinding.tvLiveV2Distance.text = String.format( // getString(R.string.txt_ft_unit), Utils.formatDecimal(userAndPetDistance) // ) + if (isShowDashed) { + mHomeMapCommon.addUserAndPetLine() + } } } } @@ -1342,8 +1347,8 @@ class LiveActivityV3 : BaseActivity(ActivityLiveV3Binding } override fun onDestroy() { + if (AppUtils.isChina()) BaiduLocationManager.setScanSpan(30) super.onDestroy() mViewBinding.lavLiveV2StateAnim.cancelAnimation() -// stopLive() } } \ No newline at end of file diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt index ded877c..06e619f 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/BaseBaiduMapFragment.kt @@ -56,6 +56,7 @@ import com.baidu.mapapi.model.LatLng import com.baidu.mapapi.model.LatLngBounds import com.baidu.mapapi.utils.DistanceUtil import kotlinx.coroutines.launch +import java.util.concurrent.locks.ReentrantReadWriteLock import kotlin.math.abs @@ -94,7 +95,10 @@ abstract class BaseBaiduMapFragment : var mUserLatLng: LatLng? = null //宠物位置经纬度 - var mPetLatLng: LatLng? = null + private var mPetLatLng: LatLng? = null + + //可重入的读写锁 + private val mReadWriteLock = ReentrantReadWriteLock() override fun onCreateView( 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() + } + } + /** * 卫星标准地图模式切换 */ @@ -215,7 +239,7 @@ abstract class BaseBaiduMapFragment : .build() setMyLocationData(locData) val bdLocation = BDLocation() - bdLocation.latitude =it.latitude + bdLocation.latitude = it.latitude bdLocation.longitude = it.longitude locationSuccess(bdLocation) } @@ -249,7 +273,7 @@ abstract class BaseBaiduMapFragment : */ fun switchShowLocation(@ConstantInt type: Int) { val latLng = if (type == ConstantInt.PetLocationType) { - mPetLatLng + getPetLatLng() } else mUserLatLng latLng?.apply { @@ -277,7 +301,8 @@ abstract class BaseBaiduMapFragment : getMarkerBitmapDescriptor(mContext!!, mPetHeadUrl, mPetType, headBgResId) mMarker?.remove() val latLng = getBaiduMapLatLng(lat, lon, needConvertGCJ02) - mPetLatLng = latLng + setPetLatLng(latLng) + LogUtil.e("setPetHeadMarker,mPetLatLng = $mPetLatLng") //构建MarkerOption,用于在地图上添加Marker val option = MarkerOptions().position(latLng).animateType(MarkerOptions.MarkerAnimateType.grow) diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt index 4889fb1..32246b6 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/baidumap/HomeMapBaiduMapFragment.kt @@ -259,7 +259,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { fun getUserAndPetDistance(): Double { var distance = 0.0 mUserLatLng?.apply { - mPetLatLng?.let { + getPetLatLng()?.let { distance = Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) } @@ -277,7 +277,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { } fun setMarkerInfoViewOffset() { - mPetLatLng?.apply { + getPetLatLng()?.apply { mMapDeviceBean?.let { setMapDeviceBatteryOffset( mDeviceBatteryLayout, this, it @@ -297,9 +297,10 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon) mUserLatLng = getBaiduMapLatLng(userGpsLat, userGpsLon) mUserLatLng?.let { u -> - mPetLatLng?.let { p -> + getPetLatLng()?.let { p -> + LogUtil.e("addUserAndPetLine,getPetLatLng() = $p") mUserAndPetLine?.remove() - val latLngList: MutableList = mutableListOf() + val latLngList = mutableListOf() latLngList.add(p) latLngList.add(u) getPolylineOptions(1.5f, R.color.blue_color9).let { @@ -321,7 +322,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { * 初始化并添加水波纹圆 */ private fun addRippleCircle() { - mPetLatLng?.apply { + getPetLatLng()?.apply { mBaiduMap?.let { mRippleCircle?.remove() val sColor = ContextCompat.getColor(mContext!!, mRippleCircleColor) @@ -341,7 +342,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { private fun setRippleCircleAnim() { if (null == mValueAnimator) { mValueAnimator = ViewUtil.instance.setValueAnimator( - 0.0, 100.0, 2000, LinearInterpolator() + 0.0, 100.0, 1500, LinearInterpolator() ) { mRippleCirclePercent = it.animatedValue as Float / 100.0 addRippleCircle() @@ -360,7 +361,7 @@ class HomeMapBaiduMapFragment : BaseBaiduMapFragment() { * 开始水波纹动画 */ fun startRippleCircleAnim() { - mPetLatLng?.apply { + getPetLatLng()?.apply { //一像素对应几米 val pxDis = 2.0.pow(17.0 - getBaiduMapZoom()) mRippleCircleRadius = (pxDis * 150).toInt() diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt index b566bee..8283977 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/BaseGoogleMapFragment.kt @@ -58,6 +58,7 @@ import com.google.android.gms.maps.model.PolylineOptions import com.google.android.gms.maps.model.RoundCap import com.qmuiteam.qmui.util.QMUIDisplayHelper import kotlinx.coroutines.launch +import java.util.concurrent.locks.ReentrantReadWriteLock /** @@ -107,10 +108,10 @@ abstract class BaseGoogleMapFragment : var mUserLatLng: LatLng? = null //宠物位置经纬度 - var mPetLatLng: LatLng? = null + private var mPetLatLng: LatLng? = null - //第一次执行定位回调,方便只刷新用户位置 - private var isLocationSuccessCallback = true + //可重入的读写锁 + private val mReadWriteLock = ReentrantReadWriteLock() override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? @@ -176,6 +177,26 @@ abstract class BaseGoogleMapFragment : 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) { LogUtil.e("谷歌地图加载好了") mGoogleMap = googleMap @@ -364,20 +385,20 @@ abstract class BaseGoogleMapFragment : fun switchShowLocation(@ConstantInt type: Int) { when (type) { ConstantInt.PetLocationType -> { - mPetLatLng?.let { + getPetLatLng()?.let { mGoogleMapZoom = 17f refreshPetCurrentLocation(it, true) } } ConstantInt.UserLocationType -> { - if (null == mPetLatLng) { + if (null == getPetLatLng()) { mUserLatLng?.apply { moveCameraLocation(this) } } else { mUserLatLng?.apply { - setLatLngZoom(mContext!!, 250, mPetLatLng!!, this) + setLatLngZoom(mContext!!, 250, getPetLatLng()!!, this) cameraUpdateMove() } } @@ -388,7 +409,7 @@ abstract class BaseGoogleMapFragment : } // ConstantInt.DefaultType -> { -// mPetLatLng?.let { +// getPetLatLng()?.let { // mGoogleMapZoom = 17f // refreshPetCurrentLocation(it, true) // } @@ -498,7 +519,8 @@ abstract class BaseGoogleMapFragment : fun setPetCurrentLocation(petHeadUrl: String, lat: Double, lon: Double, petType: Int) { lifecycleScope.launch(lifecycleScope.coroutineContext) { setPetHeadIconUrl(petHeadUrl, petType) - mPetLatLng = LatLng(lat, lon).apply { + LatLng(lat, lon).apply { + setPetLatLng(this) setPetHeadMarker(this) } } @@ -515,7 +537,7 @@ abstract class BaseGoogleMapFragment : isAnimMoveCamera: Boolean = false, headBgResId: Int = R.drawable.pic_map_gps_avatar ) { - mPetLatLng = latLng + setPetLatLng(latLng) if (null != mGoogleMap) { diff --git a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt index a5ac202..96326f3 100644 --- a/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt +++ b/app/src/main/java/com/abbidot/tracker/ui/fragment/map/googlemap/HomeMapGoogleMapFragmentV3.kt @@ -205,7 +205,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { } fun setMarkerInfoViewOffset() { - mPetLatLng?.apply { + getPetLatLng()?.apply { mMapDeviceBean?.let { setMapDeviceBatteryOffset( mDeviceBatteryLayout, LatLng(latitude, longitude), it @@ -220,7 +220,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { fun getUserAndPetDistance(): Double { var distance = 0.0 mUserLatLng?.apply { - mPetLatLng?.let { + getPetLatLng()?.let { distance = Util.measureLatLonDistance(latitude, longitude, it.latitude, it.longitude) } @@ -237,7 +237,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { val userGpsLon = MMKVUtil.getDouble(MMKVKey.UserGpsLon) mUserLatLng = LatLng(userGpsLat, userGpsLon) mUserLatLng?.let { u -> - mPetLatLng?.let { p -> + getPetLatLng()?.let { p -> mUserAndPetLine?.remove() getPolylineOptions(1.5f, R.color.blue_color9).let { it.add(toGCJ02LatLon(p)) @@ -258,7 +258,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { * 初始化并添加水波纹圆 */ private fun addRippleCircle() { - mPetLatLng?.apply { + getPetLatLng()?.apply { mGoogleMap?.let { if (null == mRippleCircle) { mRippleCircle = it.addCircle( @@ -285,7 +285,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { ) { mRippleCirclePercent = it.animatedValue as Float / 100.0 mRippleCircle?.apply { - mPetLatLng?.let { petLatLng -> + getPetLatLng()?.let { petLatLng -> center = toGCJ02LatLon(petLatLng) radius = mRippleCircleRadius * mRippleCirclePercent } @@ -343,7 +343,7 @@ class HomeMapGoogleMapFragmentV3 : BaseGoogleMapFragment() { * 开始水波纹动画 */ fun startRippleCircleAnim() { - mPetLatLng?.apply { + getPetLatLng()?.apply { //一像素对应几米 val pxDis = 2.0.pow(15.5 - getGoogleMapZoom()) mRippleCircleRadius = (pxDis * 150).toInt() diff --git a/app/src/main/java/com/abbidot/tracker/util/BaiduLocationManager.kt b/app/src/main/java/com/abbidot/tracker/util/BaiduLocationManager.kt index c04b140..f368aee 100644 --- a/app/src/main/java/com/abbidot/tracker/util/BaiduLocationManager.kt +++ b/app/src/main/java/com/abbidot/tracker/util/BaiduLocationManager.kt @@ -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) } + /** + * 重新设置定位时间间隔,单位秒,直播场景下建议设置为10秒以上 + */ + fun setScanSpan(locationPeriod: Int) { + locationService?.setScanSpan(locationPeriod) + } + // 停止定位 fun stopLocation() { locationService?.stopLocation() diff --git a/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt b/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt index 2aede7f..9150b9f 100644 --- a/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt +++ b/app/src/main/java/com/abbidot/tracker/wxapi/WXEntryActivity.kt @@ -1,7 +1,5 @@ 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.tracker.vm.cn.LoginCNViewModel import com.hjq.toast.Toaster @@ -24,7 +22,7 @@ class WXEntryActivity : WXBaseActivity() { override fun initData() { mLoginCNViewModel.mWXLoginResultLiveData.observe(this) { LogUtil.e("mWXLoginResultLiveData:$it") - XEventBus.post(EventName.WXLoginResult, it) +// XEventBus.post(EventName.WXLoginResult, it) finish() } } @@ -37,8 +35,8 @@ class WXEntryActivity : WXBaseActivity() { BaseResp.ErrCode.ERR_OK -> { result = "登录成功" val code = r.code - XEventBus.post(EventName.PostValue, code) - LogUtil.e("${result}TAG_WECHAT_CODE", code) + LogUtil.e("${result}TAG_WECHAT_CODE:${r.openId}") +// XEventBus.post(EventName.PostValue, code) mLoginCNViewModel.wxLogin(code) } diff --git a/app/src/main/res/values-de/strings.xml b/app/src/main/res/values-de/strings.xml index 2e31e5e..f1285c9 100644 --- a/app/src/main/res/values-de/strings.xml +++ b/app/src/main/res/values-de/strings.xml @@ -42,7 +42,7 @@ Lösen Sie die Verbindung Ihres Trackers nur von Ihrem Konto, wenn Sie ihn zurückgeben oder weitergeben. Bringen Sie das Smartphone in die Nähe des Trackers %s. Aktualisiert: %s - In der Nähe + Bei %s /Tag Standort wird ermittelt… Ist vor %s eingeschlafen @@ -897,4 +897,5 @@ terms_de.html privacy_de.html subscription_terms_conditions_de.html + Sitzung abgelaufen. Bitte erneut anmelden \ No newline at end of file diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 8d82197..545085c 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -42,7 +42,7 @@ Ne dissociez votre traceur de votre compte que si vous le retournez ou le donnez. Approchez le téléphone du traceur %s. Mis à jour : %s - À proximité de %s + Près de %s /jour Localisation… S’est endormi il y a %s @@ -898,4 +898,5 @@ terms_fr.html privacy_fr.html subscription_terms_conditions_fr.html + Session expirée. Veuillez vous reconnecter \ No newline at end of file diff --git a/app/src/main/res/values-it/strings.xml b/app/src/main/res/values-it/strings.xml new file mode 100644 index 0000000..6f2ebc4 --- /dev/null +++ b/app/src/main/res/values-it/strings.xml @@ -0,0 +1,891 @@ + + + La mia piccola + Misura dal pavimento fino al punto più a \nlto delle scapole del tuo pet + Batteria: %s%% + %s Anni + %d lb + Versione%s + Termini e condizioni + Accetta l\'Informativa sulla privacy e i Termini. + Il tracker è abbinato a %s + Obiettivo dell\’attività + Ora di fine + Personalizza la routine quotidiana del tuo animale domestico per divertirti con \nimpegno mattutino e serale focalizzato, considerando \nleloro esigenze, specie e razza. + +\tInvita + Il tuo familiare o amico condiviso può tracciare la posizione e la data del tuo \npet senza la possibilità di modificarli. + Inserisci il codice a 4 cifre inviato a %s. + Tempo rimanente:\t + Registrandoti, accetti i Termini e condizioni e l\'Informativa sulla privacy di Nation Remit. + Confermare che l\'ID di 6 caratteri corrisponda a quello \non sul retro del tracker. + Individua l\'ID di 6 caratteri sul retro del \ntracker. + L\'ID del tracker è errato, verifica \ne riprova + Parato con \nsuccesso + (Rinnovare a + Questa è la casa del tuo animale domestico? + + Annulla assegnazione %s + •\tNecessarioper una sincronizzazione accurata delle attività. + •\tMostra la tua posizione sulla mappa\n•\ tRichiesta di sincronizzazione dei dati di attività\n•\ tMigliora la precisione del tracker + •\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. + Registrazione \nconsuccesso! + Batteria inferiore a %s%% + Seleziona \'Animale domestico\' > \'Tracker\'. Fai clic su \'Aggiornamento GPS\' Seleziona3/5/10/15 minuti. + (Intervalli di rete più brevi scaricano più velocemente la batteria del Tracker. Per impostazione predefinita, la rete si riconnette ogni 15 minuti.) + 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. + Rinnovo: + Invierà il codice di verifica a %s. + Passa a Prime per sbloccare \nFunzionalità esclusive! + Rilevata nuova versione firmware: %s + "%s" ti invita a effettuare il check-in su "%s" + Il tuo abbonamento è scaduto, \ntipreghiamo di ricaricarlo + Set recinzioni %s + %s è nelle vicinanze + Scollega il tuo Tracker dal tuo account solo se lo restituisci o lo dai via. + Avvicinare il telefono al tracker %s. + Aggiornato: %s + Vicino a %s + /giorno + + Localizzazione&#8230; + Si è addormentato %s fa + Sposta %s per svegliarti + (%s fa) + La configurazione iniziale può richiedere %s minuti + 1. Muoviti all\'aperto con il dispositivo\n2. Attendere la connessione GPS LTE &amp;\n3. Blu lampeggiante = LTE &amp; GPS attivo + 1. Muoviti all\'aperto con il dispositivo\n2. Attendere la connessione GPS LTE &amp;\n3. Verde lampeggiante = LTE &amp; GPS attivo + %s min + %s Min + Sì + Il numero della carta esiste già. Sovrascriverlo? + Il Wi-Fi garantisce che il tuo tracker rimanga connesso quando i segnali LTE sono deboli. + Rinnovo: $%s/%s giorno su %s + /giorno x%s + %s Anno Cura + Non hai ancora un account? + Inizia + Torna al login + Nome e cognome + Avanti + Invia di nuovo + Proseguire con l\'accettazione. + Invia + Mappa + Profilo + Impostazioni + Notifica + Account + Informazioni + Cancella la cache + Commenti + Tipo di domanda (obbligatorio) + Informazioni sull\'app + Informazioni su Tracker + Altro + Inserisci il tuo problema o suggerimento + Lasciaci la tua email in modo che possiamo aiutarti più velocemente + Carica immagine + Nome + Compleanno + E-mail + Peso + Altezza + Come misurare l\'altezza + Salva + Tag + Attiva + No, grazie + Strumento di monitoraggio delle squadre + LED Light + Nuovo Assistente animali + Sblocca + Non sicuro + Orto + Acqua + È un piacere rivederti + E-mail + Password + Hai dimenticato la password? + Nessun rimborso dopo 30 giorni + Arredamento per il + Parco + Giocare + 1 sostituzione/anno, qualsiasi motivo + Salvato. Attivo quando è online. + Il periodo di rimborso è scaduto + Politica di rimborso + Rimborso automatico (entro 48 ore) + 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 + 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 + Finestra di rimborso standard (30 giorni) + Gli abbonamenti più vecchi di 30 giorni non sono rimborsabili. + + Network + GPS + Bluetooth connesso + Bluetooth non connesso + Disattivato + Attivato + Invitare + Invio riuscito + Aggiornamenti GPS + Nome + Forma + Attiva recinzione + Termina + Accolta. + Modalità respirazione + LAMPEGGIATORE + Maschio + Femmina + Modificare + Stop Live + Annulla + Tempo attivazione + Calorie + Imposta obiettivo + Modifica + Attuale + min + miglio + kcal + Si prega di compilare completamente + Successful + Caricamento completato + Salvato con successo + Accesso riuscito + Modificati correttamente + Suggerimenti + Aggiungi recinzioni + Nessun dato + Sei sicuro di voler eliminare il rigo? + Oggi + min + giorni + Stop Live Tracking? + Elimina + Annulla + Lun + Sì + Notifiche + Richiesta non riuscita, riprova. + Tutti gli annunci + Consenti le autorizzazioni pertinenti + Modificare + Rinnovo automatico + Ricarica + Totale Generale + Riprovare + Indietro + Sei sicuro di voler uscire? + Confermi la cancellazione della cache dell\'app? + Modalità chiara + Caricamento in corso... + Annullare l\'abbonamento automatico? Confermare? + L\'abbonamento automatico è conveniente in quanto non ci sono problemi di scadenza + Numero carta + MM/AA + CVV + Pagamento pagoPA effettuato con successo + Pagamento non riuscito, riprova. + Connessione al Bluetooth + La cancellazione del tuo account cancellerà definitivamente tutti i dati. Sei sicuro? + Incorrect username or password + Errore del codice di verifica + Verification code expired + User does not exist + User already exists + Reset password + Privacy Policy + Website + Turn on phone Bluetooth please + You cannot share with yourself + Online + Offline + Firmware Version + Upgrade + Device does not exist + Disconnected + Already latest version + Activity + Route + Pet + More + KM + Sleep + Live + Tracker + Badges + View all + Manage + Time + WiFi Zone + Connected + Weak signal + Bluetooth + Light + Check the track and points + Read All + Subscription + Help + How It Works + + Units Setting + Sign Out + Calories Avg. + Time Avg. + Total Data + hrs + Last 7 days + Last 30 days + Ok + January + February + March + April + May + June + July + August + September + October + November + December + As sound speeds up, the distance is closer. + Stop Radar + Edit WiFi Zone + WiFi Name: + Safe Zone + + Add new + No-go Zone + No zone added, yet + Add Safe Zone + Edit Safe Zone + Fence Name + Zone Name + Add No-go Zone + Edit No-go Zone + Data Board + hr + Set Daily Goal + Awesome! Ready to begin! + km + Daily Avg. activity time + Avg. Calories + Daily Avg Resting time + Profilo + lb + in + Type + Sex + Dog + Cat + Other + kg + cm + Members + Active + Pending + Choose avatar + Unlock New Milestones! + Congratulations! + Share + Log in + Inizia + Create account + Minimum 6 characters + Country + Email Address + Continue + OTP verification + sec + Resend Code + Create new password + Reset Now + Confirm Password + Password reset successful! + Standard + Satellite + Display Fences + Select + Always By Your Side! + Powered by + View Less + See All + Adventure + New Tracker + Add new tracker + Charge and Power On + Step 1 : + Charge the tracker, 3 white lights flash, then red stays on. + Unplug cable; slow green blinking indicates device is on. + Step 2 : + Searching for Tracker + Bring the phone close to the tracker. + Pair with Tracker + ID number + No + Input ID for Pairing + Add Tracker + Choose Your Plan + Benefits + Monthly Subscription + /month + /year + Best Value + Confirm Your Plan + Device Number + Terms and Conditions + Summary + Tax + Payment Method + My Card + No Payment Method + + Add New Card + Primary + Make Payment + We will redirect to paypal + Add Payment Method + Save New Card + Payment was Successful + Accepted Payment Cards + Set as primary Card + Name On Card + Permissions + Skip + + + Grant permissions for better experience. + Tracker ID + Plan: + Renews On: + Adding where they live can improve battery and provide extra safety + Establish WiFi Zone + Permanent residence saves power, enhances positioning. + Permanent Residence + Choose Wi-Fi network + Later + Notifications Setting + Enter or leave Safe Zone/No-go Zone + Tracker Status + Subscription/Battery Warnings/Power Off + Active/sleep reminder/goal achievement + About WiFi Zone + 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. + Office + Save Power + With Bluetooth range? Pinpoint a nearby tracker using Radar. Live will also become available, but using it will end power saving. + Tracking your pet + WiFi Zone Settings + Please enter your feedback + Enter Your Email Address + Choose File + Power Off + What is your pet type? + What is your pet name? + Current LED + Left the safe zone + In the WiFi Zone + In the no-go zone + Strong signal + WiFi Zone + Deactivate + Please use a valid email address. + Please enter a full name. + Please use a valid password. + Please select a region. + To ABBIDOT + Entered passwords differ! + No Member, yet + Invite Members + Home + Live Duration + About Live Duration + 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. + Live Tracking will stop at the end of the set duration, but you can stop it before to save battery. + Keep it short + GPS Location + Receive Notifications + Turn ON + Device not activated. Subscribe to activate. + Keep tracker on and nearby to scan. + Outside + Inside + You have created too many fences + LIVE has ended. LIVE time can set through Live Duration. + Tracker power off + Starting Live… + Connecting to network + GPS positioning + Starting + -min Live + Timeout, please try again + Close + About Live + Live Tracking will stop in one hour, but you can stop it before to save battery. + Resting + Resting time + No signal + WiFi + Select measurement unit + Metric(cm, kg) + Imperial(in, lb) + m + ft + Fences Alerts + My Pet Fence + Your feedback helps us get better. + Type Message + Please continue to verify your email + Code valid for + Create password + Change Email successful! + Change Email + Enter new email + Keep the app running in the background to receive tracker status notifications. + Reminder + Yesterday + Power On/Off + Charge and unplug to turn on \nFlashing green light = on + 1. Choose a subscription \n2. Tap to activate the tracker \n3. Enable GPS and cellular tracking + Active Tracker + (The GPS and cellular network conditions can vary depending on the environment. Before placing it on your pet, check various locations around you to evaluate the GPS and network status.) + Check Tracker Status + 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. + 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. + When your tracker is outside the WiFi Zone, it activates GPS and connects to the network every 3/5/10/15 minutes. + Tracker Battery Life + Choose location and adjust radius or shapeSave fence to activate it + Alerts when pet enters or leaves the zone + Create a Pet Fence + Tracker in Sleeping Mode + (Super Low power usage) + Tracker in WiFi Zone + Tracker outside WiFi Zone + (Low power usage) + (Standard power usage) + (The highest power usage) + Choose the right GPS update interval + Tracker in Live Mode + Fresh Paws + Day 1 Devotee + Newbie Navigator + Furry Friend + Pawtential Pal + Month Mate + Tailwag Explorer + Pawsome Partner + 1 Year Hugger + Purrfect Partner + 2 Year Companion + Faithful Friend + 3 Year Harmony + Furr-timer Friend + Welcome to the community! Start your journey with your first badge. + You\’ve just started! Your dedication on the first day is noted. + Log in for a day to earn this badge! + You\’re finding your way around. Keep exploring to reach new milestones! + Continue exploring for three days to achieve this milestone! + A week in, and you\’re already becoming a part of our furry family! + Stay active for a week to earn the Furry Friend badge! + You\’re showing great potential! Keep up the good work. + Keep engaging for fifteen days to unlock this badge! + One month in and you\’re a valued member of our community! + Be a part of our community for a month to achieve this badge! + Three months of exploration and adventure—well done! + Explore with us for three months to earn the Tailwag Explorer badge! + Six months of fantastic partnership. Thanks for sticking with us! + Stick around for six months to earn the Pawsome Partner badge! + A whole year of dedication! Here\’s to many more! + Continue with us for a year to achieve this milestone! + Eighteen months and still going strong. You\’re truly purrfect! + Stay engaged for eighteen months to earn the Purrfect Partner badge! + Two years with us—your loyalty is greatly appreciated! + Complete two years with us to receive the 2 Year Companion badge! + Thirty months of faithful companionship. You\’re a treasured friend! + Remain a faithful friend for thirty months to earn this badge! + Three years together in perfect harmony. Thank you for being with us! + Three years of harmony with us will earn you this badge! + Five years of wonderful friendship. Your commitment is truly inspiring! + Five years of commitment will unlock the Furr-timer Friend badge! + How to get? + Family Invitation + Active Time: + Expires On: + Expired on: + YEARS + MONTHS + DAYS + Subscription Order + Order ID: + Enter your reason for the refund + Request a refund + Refund + Waiting + Refunding + Refunded + /year on + /month on + Annual Care + Annual Care: + LED Light Settings + 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. + Bluetooth Setup + 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. + Sorry, duplicate WiFi not allowed + Network Setup + Set accurate weight to improve calorie accuracy. + Enable Auto-Renew + About Weight + Order + Set Premium + Basic + Premium + Rejected + Expired + Upgrade Your Plan + Residual Value + Track and train pets to prevent loss or danger. + Advanced Setting + Delete Account + Change Name + Your Email Address: + Change Now + Upgrade Now + Activity Time + Not Set + Done + Weather to save? + Connect + Skip password + Connecting + Incorrect password, please try again. + Your view access has ended. + 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. + About Tracking Duration + Will be Deleted + LED Light Setting + Reserve + Subscription Plan + Connecting Tracker + Annual Care included, non-adjustable + Delete successfully + Sure to delete this card? + Account exists. Log in now? + Selected date is out of range + Shake to turn on \nFlashing green light confirms on + GPS and cellular signals may vary by location. \nTest in different locations before use. + Tracker is on charging + Subscribed + Baidu Maps + Send + To turn on, connect the power cable. After first-time startup, shake to turn on. + As low as + Payment Manager + Basic Plan + Premium Plan + Activate Subscription + Charging + Total Time + Live works on cellular only + Unbind Device + Edit Profile + No internet connection + System Error: Please try again later. + Missing Parameters. + Tracker Busy. Please wait and retry. + Tracker Offline. Unable to proceed. + Live stream in progress. Settings unavailable. + Operation failed. Please try again. + Tone + Locate works on cellular only + Pet is close, try Radar + Fully charged + Timeline + Keep phone close to device + Auto-Renew: Cancel + Display Dashed Line + First use + Daily use + Sleep Mode + 1. 15 minutes no movement → sleep mode. \n2. Auto wake on movement. \n3. Battery updates every 24 hours. + WiFi Zone(Home) + 1. Connect to home WiFi. \n2. GPS off → save battery. \n3. Update every ~60 minutes. + 1. Select 3–15 min. \n2. Short interval = higher battery use. \n3. Default: 5 min. + Set Fence type + Safe Zone or No-go Zone + Set boundary + Enable alerts in Account > Settings > Notifications + Edit or delete fence in Manage + Initializing Device + Add Wi-Fi zone to prolong care time + Add + Already at minimum size + Login with + My Card + Edit Payment Method + Your phone number has already been bound + Go to + Pet > Tracker + Pet > Tracker > GPS Update + Pet > My Pet Fence > Manage > + Add New + Check: + · Network\n· WiFi Zone\n· GPS + · Bluetooth\n· Battery\n· LED + Privacy Policy + Expires On + Google Map + Upgrade successful + Upgrade failed + Please enter email address. + Enter Tracker ID + No signal. Check if pet indoors. + Recommenced + Expiry Time: + terms_it.html + privacy_it.html + subscription_terms_conditions_it.html + + Non hai ricevuto l\’e-mail? + %d anno + %d/100 ottenuti + Ultima volta: %s + Mostra percorso e punto + Sei sicuro di voler condividere i dati dell\'animale con \' %s \'? + Seleziona 2 \~ 9 foto + Rinnova a %.2f all\'anno successivamente, annulla in qualsiasi momento + $%doff già + Il piano di abbonamento è attivo fino a %s + Il rinnovo automatico è disattivato e il piano di abbonamento non sarà disponibile dopo %s + Salva e conferma + $%s/mese + Hai configurato correttamente il tuo animale domestico e hai \neparato il badge di sicurezza! + Dispositivo già associato, verifica \ne riprova + %s piedi + %s mph + Sei sicuro di voler eliminare la famiglia %s? + 4. Attiva le notifiche: vai su &#39;Account&#39; &gt; &#39;Impostazioni&#39;. Fai clic su &#39;Notifiche&#39; e attiva + /mese x%s + /%s anno + A partire da %s + 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. + Telefono + Accedi con WeChat + Accedi con codice di verifica + Accedi con Apple + Accedi con l\'account + Imposta nuova password + Codice di verifica inviato + Accedi con la password + Salve! + Imposta password di accesso + Ottieni + Abbiamo inviato il link di verifica al tuo indirizzo e-mail. + Codice di verifica + Leggi e accetta l\' + e + Termini di utilizzo + Vincolo + Completato + Dati + I miei Ordini + Centro assistenza + Commenti + Impostazione + Lingua + Esci + Per favore, seleziona un tipo di domanda + Genere. + Località + Telefono + Razza + Attiva il dispositivo per continuare. + Attiva + Tracker + Strumento di monitoraggio delle squadre + Autorizzato + Recinto + Impostazione + Giorni + Luce LED + Recinto + Famiglia + Aggiungere famiglia + 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. + Indietro + Spegni + Badge attività + Seleziona mappa + Mappa Gaode + L\'APP non è installata, scarica e installa prima l\'app + Aggiunto con successo + Eliminato correttamente + Sei sicuro di voler scollegare il dispositivo? + Scollegamento riuscito + Rilegatura riuscita + miglio + kcal + Il tuo dispositivo è scaduto, rinnovalo + Caricamento mappa in corso... + Ciao, frammento vuoto + Foto e Video + Seleziona + Anteprima + È possibile selezionare un solo tipo di file + Impossibile avviare la telecamera + Immagine errata + Formato dell\'immagine non supportato. + Cancella + Nessuna foto corrispondente + Nessun video corrispondente + Originale + Termina + Annulla + Modello + Testo + Data + Doppio click per modificare + Personalizza + <g id="1">Selezione foto:</g> + GIF + Aggiungi Nuova Carta + Pagamento + Piano di abbonamento: + Aggiornamento firmware + Invio riuscito + Completato con successo + Login fallito, riprovare + Nome titolare carta + Titolare della carta + DATA DI SCADENZA + Data di scadenza non valida + Formato della carta di credito non valido + Sei sicuro di voler spegnere il dispositivo? + Coltura + Premere di nuovo per uscire dall\'app + Registrazione non riuscita + Formato e-mail errato + Scollega dispositivo + Connessione riuscita + Collegamento non riuscito + Inserisci il tuo numero di telefono + Abbidot + Reimposta password + Annullare il pagamento + L\'utente corrente ha già associato questo dispositivo + Nome + Cognome + Informazioni legali + Ho letto ed approvo la Privacy Policy + Rifiuto + Scarica l\’indirizzo + Attendi... + Descrizione versione + Nome del Firmware + File del firmware + Scarica il firmware + Entrare in modalità DFU + Cerca dispositivi... + A connettere dispositivi + Ricollega l\'apparecchiatura + Periferica disconnessa + potenziamento + Preparazione per l\'aggiornamento + Dispositivo collegato con successo + Batteria + Gen + feb + mar + apr + Maggio + Giù + Lug + ago + Set + Ott + nov + Dic + minimo + Distanza totale attività + È un piacere rivederti + MM/AA + CVC + Abilita + Annui) + 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. + Invitare + Questo eliminerà tutti + dati in modo permanente dal tuo account. + Bluetooth + Ricerca… + Media 7 giorni + Segnale GPS debole + Nessun segnale di rete + TEMPO DI RIPOSO + km/h + mph + Un Suo/a amico/a + invita a diventare + famiglia. + Rinnovo automatico + Rinnovo: + Il programma ha un\'eccezione e sta per uscire + Spento. + Tira per caricarne altri + Rilascia per caricarne di più. + Totale + Visualizza tutto + Immetti un numero di telefono valido + Account + 1. Protezione flessibile a breve termine\n\n2. Garanzia di rimborso di 30 giorni + 1. Assistenza clienti dedicata\n\n2. Copertura annuale di protezione\n\n3. Garanzia di rimborso di 30 giorni + 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 + Copyright © %d ABBIDOT Tutti i diritti riservati + Inseguitori %d + %d Animali domestici + %d in + Impossibile ottenere l\'autorizzazione + ANIMALI NON AMMESSI + Si prega di legare prima un animale domestico + %d%% + %dY %dMon + Tutti i video + Completo(%1$d/%2$d) + Supporta fino a %d foto o video + Supporta fino a foto %d + Supporta fino a video %d + La larghezza della foto deve essere maggiore di %1$d e l\'altezza deve essere maggiore di %1$d + Consenti le autorizzazioni pertinenti + Consenti le autorizzazioni pertinenti + %1$d/%2$d + Oggi\t%s + 视频模式选择。 + $\t%.2f + %s%% + Inserisci l\'indirizzo e-mail registrato nel tuo profilo.\nInvieremo un codice di 4 cifre alla tua e-mail. + $%s + $%s/mese + $%s/anno + Ciò eliminerà tutti i dati %s in modo permanente dal tuo account. + (Rinnova a $%s all\'anno) + Attivazione\nCompletata + Avvio di %s-min Live + Codice valido per %ss + Il tuo amico %s ti invita a diventare la famiglia %s. + Rinnovo: $%s/anno su %s + Rinnovo: $%s/mese su %s + Protezione annuale delle cure + (Rinnovare a $ %sall\'anno in seguito) + (Rinnova a $%s al mese successivo) + Non superato + Modifica Metodo di Pagamento + Inserisci la password. + L\'APP ABBIDOT raccoglie i dati sulla posizione, è possibile calcolare il percorso e la distanza tra la posizione corrente e il dispositivo. + (Rinnova a $%s al giorno successivo) + (Rinnovare a $%s/%s giorni successivi) + (Rinnovare a $%s/%s anni successivi) + (Rinnovare a $%s/%s mesi successivi) + Rinnovo: $%s/%s anni su %s + Rinnovo: $%s/%s mesi su %s + Sessione scaduta. Accedi di nuovo + \ No newline at end of file diff --git a/app/src/main/res/values-zh-rCN/strings.xml b/app/src/main/res/values-zh-rCN/strings.xml index 78104e2..650f058 100644 --- a/app/src/main/res/values-zh-rCN/strings.xml +++ b/app/src/main/res/values-zh-rCN/strings.xml @@ -941,4 +941,5 @@ terms_zh.html privacy_zh.html subscription_terms_conditions_zh.html + 登录信息失效,请重新登录 \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 76505fa..004b82e 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -992,4 +992,5 @@ terms_en.html privacy_en.html subscription_terms_conditions_en.html + Login session expired. Please log in again \ No newline at end of file diff --git a/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt b/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt index 4ce5581..d79017b 100644 --- a/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt +++ b/baselibrary/src/main/java/com/abbidot/baselibrary/util/AppUtils.kt @@ -94,7 +94,7 @@ class AppUtils { * 是否是国内 */ fun isChina(type: String = SWITCH_PAGE_TYPE): Boolean { - return false + return true if (isDebug()) { if (type == SWITCH_MAP_TYPE && MMKVUtil.getBoolean(MMKVKey.OnlyGoogleMap, false)) { //只启用谷歌地图