Commit 415b15ef authored by wanglei's avatar wanglei

[迭代]广告和多语言字符串

parent 8714dc91
...@@ -176,19 +176,26 @@ dependencies { ...@@ -176,19 +176,26 @@ dependencies {
//广告 //广告
//admob渠道 //admob渠道
implementation(libs.vungle) // implementation(libs.vungle)
implementation(libs.facebook) // implementation(libs.facebook)
implementation(libs.mintegral) // implementation(libs.mintegral)
implementation(libs.pangle) // implementation(libs.pangle)
//applovin sdk // //applovin sdk
implementation(libs.applovin) // implementation(libs.applovin)
//applovin渠道 // //applovin渠道
implementation(libs.applovin.google) // implementation(libs.applovin.google)
implementation(libs.applovin.admob) // implementation(libs.applovin.admob)
implementation(libs.applovin.facebook) //meta // implementation(libs.applovin.facebook) //meta
implementation(libs.applovin.mintegral)//mintegral // implementation(libs.applovin.mintegral)//mintegral
implementation(libs.applovin.pangle) //pangle // implementation(libs.applovin.pangle) //pangle
implementation(libs.applovin.vungle) //vungle // implementation(libs.applovin.vungle) //vungle
implementation("com.google.android.gms:play-services-ads:23.5.0")
implementation("com.google.ads.mediation:applovin:13.0.1.0")
implementation("com.google.ads.mediation:facebook:6.18.0.0")
implementation("com.google.ads.mediation:mintegral:16.8.61.0")
implementation("com.google.ads.mediation:pangle:6.3.0.4.0")
implementation("com.google.ads.mediation:vungle:7.4.2.0")
val work_version = "2.8.1" val work_version = "2.8.1"
implementation("androidx.work:work-runtime-ktx:$work_version") implementation("androidx.work:work-runtime-ktx:$work_version")
......
...@@ -195,7 +195,7 @@ class MyApplication : Application() { ...@@ -195,7 +195,7 @@ class MyApplication : Application() {
private var lastTimePause = 0L private var lastTimePause = 0L
private var lastTimeResume = 0L private var lastTimeResume = 0L
private fun isHotLaunch(): Boolean { private fun isHotLaunch(): Boolean {
if ((lastTimeResume - lastTimePause) > 5000) { if ((lastTimeResume - lastTimePause) > 3500) {
return true return true
} }
return false return false
......
...@@ -4,7 +4,6 @@ package com.simplecleaner.app.bean.config ...@@ -4,7 +4,6 @@ package com.simplecleaner.app.bean.config
class AdConfigBean( class AdConfigBean(
var isAdShow: Boolean = true,//广告开关 var isAdShow: Boolean = true,//广告开关
var adSwitch: Boolean = true,//true 走admob,false走max
var taichiAdValue: Int = 1,//价值上报阀值 var taichiAdValue: Int = 1,//价值上报阀值
var adRatio: Int = 100,//价值上报随机控制 var adRatio: Int = 100,//价值上报随机控制
...@@ -12,6 +11,7 @@ class AdConfigBean( ...@@ -12,6 +11,7 @@ class AdConfigBean(
var numRequestLimit: Int = -1,//请求次数限制 var numRequestLimit: Int = -1,//请求次数限制
var numClickLimit: Int = -1,//点击次数限制 var numClickLimit: Int = -1,//点击次数限制
var timeInterval: Int = 10,//广告间隔秒 var timeInterval: Int = 10,//广告间隔秒
var timeIntervalOpen: Int = 0,//开屏广告间隔
var openAdLoading: Int = 15,//开屏广告拉取时间 var openAdLoading: Int = 15,//开屏广告拉取时间
var numNativeDisplayLimit: Int = -1,//原生展示次数限制 var numNativeDisplayLimit: Int = -1,//原生展示次数限制
......
...@@ -3,6 +3,9 @@ package com.simplecleaner.app.business.ads ...@@ -3,6 +3,9 @@ package com.simplecleaner.app.business.ads
import com.simplecleaner.app.MyApplication import com.simplecleaner.app.MyApplication
import com.simplecleaner.app.business.helper.EventUtils import com.simplecleaner.app.business.helper.EventUtils
import com.simplecleaner.app.utils.LogEx import com.simplecleaner.app.utils.LogEx
import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob
import org.json.JSONObject import org.json.JSONObject
import java.util.UUID import java.util.UUID
...@@ -25,7 +28,7 @@ abstract class AdEvent { ...@@ -25,7 +28,7 @@ abstract class AdEvent {
var from: String = "" var from: String = ""
var reqId = UUID.randomUUID().toString() var reqId = UUID.randomUUID().toString()
var isUnLimit: Boolean = false var isUnLimit: Boolean = false
val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
fun adPrepareShow() { fun adPrepareShow() {
val obj1 = JSONObject() val obj1 = JSONObject()
...@@ -49,8 +52,8 @@ abstract class AdEvent { ...@@ -49,8 +52,8 @@ abstract class AdEvent {
fun adShowError(reason: Any) { fun adShowError(reason: Any) {
val obj = JSONObject() val obj = JSONObject()
obj.put("ad_unit", adUnit) obj.put("ad_unit", adUnit)
obj.put("req_id", reqId)
obj.put("from", from) obj.put("from", from)
obj.put("req_id", reqId)
obj.put("reason", reason.toString()) obj.put("reason", reason.toString())
EventUtils.event("ad_show_error", ext = obj) EventUtils.event("ad_show_error", ext = obj)
LogEx.logDebug(TAG, "ad_show_error_$adUnit $obj") LogEx.logDebug(TAG, "ad_show_error_$adUnit $obj")
...@@ -59,11 +62,10 @@ abstract class AdEvent { ...@@ -59,11 +62,10 @@ abstract class AdEvent {
fun adLimited(value: String) { fun adLimited(value: String) {
val obj = JSONObject() val obj = JSONObject()
obj.put("ad_unit", adUnit) obj.put("ad_unit", adUnit)
obj.put("req_id", reqId)
obj.put("from", from) obj.put("from", from)
obj.put("req_id", reqId)
EventUtils.event("ad_limit", value, obj) EventUtils.event("ad_limit", value, obj)
LogEx.logDebug(TAG, "ad_limit_$adUnit $obj") LogEx.logDebug(TAG, "ad_limit_$adUnit $obj")
} }
} }
\ No newline at end of file
package com.simplecleaner.app.business.ads package com.simplecleaner.app.business.ads
import android.app.Dialog import android.app.Dialog
import com.simplecleaner.app.business.ads.LimitUtils.openInterLastShowTime import com.simplecleaner.app.business.ads.LimitUtils.interLastShowTime
import com.simplecleaner.app.business.ads.LimitUtils.openLastShowTime
class AdState<T>() { class AdState<T>() {
var adDialog: Dialog? = null var adDialog: Dialog? = null
...@@ -24,41 +26,41 @@ class AdState<T>() { ...@@ -24,41 +26,41 @@ class AdState<T>() {
*/ */
var loadingAd: Boolean = false var loadingAd: Boolean = false
/**
* 用于保存引用现有页面,在此页面显示广告(因为要等待广告加载完毕)
*/
// var activityRef: WeakReference<Activity>? = null
/** /**
* 上一次的缓存成功时间 * 上一次的缓存成功时间
*/ */
var lastLoadTime: Long = 0 var lastLoadTime: Long = 0
/**
* 上次展示时间
*/
// var lastShowTime: Long = 0
/** /**
* 广告已经展示 * 广告已经展示
*/ */
fun onAdDisplayed() { fun onAdDisplayed(adsType: AdsType) {
currentAd = null currentAd = null
currentAdEvent = null currentAdEvent = null
// activityRef = null
adDialog?.dismiss() adDialog?.dismiss()
adDialog = null adDialog = null
openInterLastShowTime = System.currentTimeMillis() if (adsType == AdsType.OPEN) {
openLastShowTime = System.currentTimeMillis()
}
if (adsType == AdsType.INSERT) {
interLastShowTime = System.currentTimeMillis()
}
} }
fun onAdHidden() { fun onAdHidden(adsType: AdsType) {
//重置下上次展示的时间,避免看广告的时间算入间隔 //重置下上次展示的时间,避免看广告的时间算入间隔
openInterLastShowTime = System.currentTimeMillis() if (adsType == AdsType.OPEN) {
openLastShowTime = System.currentTimeMillis()
}
if (adsType == AdsType.INSERT) {
interLastShowTime = System.currentTimeMillis()
}
} }
...@@ -68,17 +70,16 @@ class AdState<T>() { ...@@ -68,17 +70,16 @@ class AdState<T>() {
currentAd = null currentAd = null
currentAdEvent = null currentAdEvent = null
// activityRef = null
} }
fun onAdLoaded(ad: T?, adEvent: AdEvent?) { fun loadStart(adEvent: AdEvent) {
//这里可能提前设置,所有可以不设置,max回调的类型可能不同 loadingAd = true
if (ad != null) {
currentAd = ad
}
if (adEvent != null) {
currentAdEvent = adEvent currentAdEvent = adEvent
} }
fun onAdLoaded(ad: T?) {
currentAd = ad
loadingAd = false loadingAd = false
lastLoadTime = System.currentTimeMillis() lastLoadTime = System.currentTimeMillis()
} }
...@@ -90,7 +91,7 @@ class AdState<T>() { ...@@ -90,7 +91,7 @@ class AdState<T>() {
} }
fun adAvailable() = fun needLoad() = currentAd == null || ((System.currentTimeMillis() - lastLoadTime) / 1000 / 60).toInt() > 30
currentAd != null || ((System.currentTimeMillis() - lastLoadTime) / 1000 / 60).toInt() < 30
} }
...@@ -5,11 +5,6 @@ import android.content.Context ...@@ -5,11 +5,6 @@ import android.content.Context
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.annotation.LayoutRes import androidx.annotation.LayoutRes
import com.applovin.sdk.AppLovinMediationProvider
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkInitializationConfiguration
import com.simplecleaner.app.BuildConfig
import com.simplecleaner.app.GlobalConfig
import com.simplecleaner.app.bean.config.AdConfigBean.Companion.adsConfigBean import com.simplecleaner.app.bean.config.AdConfigBean.Companion.adsConfigBean
import com.simplecleaner.app.bean.config.ConfigBean.Companion.configBean import com.simplecleaner.app.bean.config.ConfigBean.Companion.configBean
import com.simplecleaner.app.business.ads.admob.AdBannerMgr import com.simplecleaner.app.business.ads.admob.AdBannerMgr
...@@ -17,19 +12,9 @@ import com.simplecleaner.app.business.ads.admob.AdInterMgr ...@@ -17,19 +12,9 @@ import com.simplecleaner.app.business.ads.admob.AdInterMgr
import com.simplecleaner.app.business.ads.admob.AdNativeMgr import com.simplecleaner.app.business.ads.admob.AdNativeMgr
import com.simplecleaner.app.business.ads.admob.AdOpenMgr import com.simplecleaner.app.business.ads.admob.AdOpenMgr
import com.simplecleaner.app.business.ads.admob.AdmobEvent import com.simplecleaner.app.business.ads.admob.AdmobEvent
import com.simplecleaner.app.business.ads.applovin.AdMaxEvent
import com.simplecleaner.app.business.ads.applovin.MaxInsertMgr
import com.simplecleaner.app.business.ads.applovin.MaxNativeMgr
import com.simplecleaner.app.business.ads.applovin.MaxOpenMgr
import com.simplecleaner.app.business.helper.EventUtils import com.simplecleaner.app.business.helper.EventUtils
import com.simplecleaner.app.utils.AppPreferences
import com.simplecleaner.app.utils.LogEx
import com.simplecleaner.app.utils.ToastUtils.toast
import com.google.android.gms.ads.MobileAds import com.google.android.gms.ads.MobileAds
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.google.android.gms.ads.initialization.AdapterStatus import com.google.android.gms.ads.initialization.AdapterStatus
import java.util.Collections
import java.util.concurrent.Executors
/** /**
* 广告管理类 * 广告管理类
...@@ -49,27 +34,12 @@ object AdsMgr { ...@@ -49,27 +34,12 @@ object AdsMgr {
AdBannerMgr() AdBannerMgr()
} }
private val maxOpenMgr by lazy {
MaxOpenMgr()
}
private val maxInsertMgr by lazy {
MaxInsertMgr()
}
private val maxNativeMgr by lazy {
MaxNativeMgr()
}
/** /**
* 是否初始化 * 是否初始化
*/ */
var isAdmobInit = false var isAdmobInit = false
private set private set
/**
* 是否初始化
*/
var isMaxInit = false
private set
var isAdUtEvent = false var isAdUtEvent = false
...@@ -86,14 +56,7 @@ object AdsMgr { ...@@ -86,14 +56,7 @@ object AdsMgr {
* @param context 这里最好是appContext,因为是耗时操作,等它初始化完毕马上加载开屏和插屏广告 * @param context 这里最好是appContext,因为是耗时操作,等它初始化完毕马上加载开屏和插屏广告
*/ */
fun init(context: Context) { fun init(context: Context) {
if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", value = "isInBlackList=${configBean.isInBlackList}")
return
}
initAdmob(context) initAdmob(context)
initMax(context)
} }
private fun initAdmob(context: Context) { private fun initAdmob(context: Context) {
...@@ -106,7 +69,7 @@ object AdsMgr { ...@@ -106,7 +69,7 @@ object AdsMgr {
EventUtils.event("AdmobInit", "AdmobInit=$isAdmobInit") EventUtils.event("AdmobInit", "AdmobInit=$isAdmobInit")
// context.toast("admob init") // context.toast("admob init")
if (adsConfigBean.adSwitch) { if (true) {
admobInitCallBack?.invoke() admobInitCallBack?.invoke()
admobInitCallBack = null admobInitCallBack = null
adNativeMgr.loadAd(context, AdmobEvent("nativeAd", context::class.java.simpleName)) adNativeMgr.loadAd(context, AdmobEvent("nativeAd", context::class.java.simpleName))
...@@ -114,44 +77,9 @@ object AdsMgr { ...@@ -114,44 +77,9 @@ object AdsMgr {
adInterMgr.loadAd(context, AdmobEvent("interAd", context::class.java.simpleName)) adInterMgr.loadAd(context, AdmobEvent("interAd", context::class.java.simpleName))
} }
} }
}
private fun initMax(context: Context) = kotlin.runCatching {
if (isMaxInit) return@runCatching
val executor = Executors.newSingleThreadExecutor()
executor.execute {
val currentGaid = AdvertisingIdClient.getAdvertisingIdInfo(context).id
AppPreferences.getInstance().getString("gid", currentGaid)
val build = AppLovinSdkInitializationConfiguration
.builder(GlobalConfig.KEY_MAX, context)
build.mediationProvider = AppLovinMediationProvider.MAX
if (BuildConfig.DEBUG) {
build.testDeviceAdvertisingIds = Collections.singletonList(currentGaid)
}
val initConfig = build.build()
runCatching {
AppLovinSdk.getInstance(context).initialize(initConfig) {
isMaxInit = true
// maxOpenMgr.loadAd(context)
if (!adsConfigBean.adSwitch) {
maxInsertMgr.loadAd(context, AdMaxEvent("interAd", context::class.java.simpleName))
context.toast("max init")
maxInitCallBack?.invoke()
maxInitCallBack = null
}
}
}
}
} }
var admobInitCallBack: (() -> Unit)? = null var admobInitCallBack: (() -> Unit)? = null
var maxInitCallBack: (() -> Unit)? = null
/** /**
...@@ -172,14 +100,9 @@ object AdsMgr { ...@@ -172,14 +100,9 @@ object AdsMgr {
return return
} }
if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", "isInBlackList=${configBean.isInBlackList}")
showCallBack?.failed()
return
}
val from = activity::class.java.simpleName val from = activity::class.java.simpleName
if (adsConfigBean.adSwitch) { if (true) {
val admobEvent = AdmobEvent("openAd", from).apply { this.isUnLimit = isUnLimit } val admobEvent = AdmobEvent("openAd", from).apply { this.isUnLimit = isUnLimit }
if (isAdmobInit) { if (isAdmobInit) {
adOpenMgr.show(activity, admobEvent, showCallBack) adOpenMgr.show(activity, admobEvent, showCallBack)
...@@ -189,13 +112,6 @@ object AdsMgr { ...@@ -189,13 +112,6 @@ object AdsMgr {
adOpenMgr.show(activity, admobEvent, showCallBack) adOpenMgr.show(activity, admobEvent, showCallBack)
} }
} else { } else {
if (isMaxInit) {
maxOpenMgr.show(activity, isUnLimit, AdMaxEvent("openAd", from), showCallBack)
} else {
maxInitCallBack = {
maxOpenMgr.show(activity, isUnLimit, AdMaxEvent("openAd", from), showCallBack)
}
}
} }
} }
...@@ -218,18 +134,10 @@ object AdsMgr { ...@@ -218,18 +134,10 @@ object AdsMgr {
showCallBack?.failed() showCallBack?.failed()
return return
} }
if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", configBean.isInBlackList.toString())
showCallBack?.failed()
return
}
LogEx.logDebug("showAd", "adSwitch=${adsConfigBean.adSwitch}")
val from = activity::class.java.simpleName val from = activity::class.java.simpleName
if (adsConfigBean.adSwitch) { if (true) {
adInterMgr.show(activity, AdmobEvent("interAd", from).apply { this.isUnLimit = isUnLimit }, showCallBack) adInterMgr.show(activity, AdmobEvent("interAd", from).apply { this.isUnLimit = isUnLimit }, showCallBack)
} else { } else {
maxInsertMgr.show(activity, isUnLimit, AdMaxEvent("interAd", from), showCallBack)
} }
} }
...@@ -237,29 +145,24 @@ object AdsMgr { ...@@ -237,29 +145,24 @@ object AdsMgr {
* 展示原生广告 * 展示原生广告
* *
* @param nativeView 需要展示广告的布局容器 * @param nativeView 需要展示广告的布局容器
* @param layout 原生广告布局 ,这里传入的layout要和com.example.mydemo.strategy.ads.admob.NativeView里的id一致 * @param layout 原生广告布局
*/ */
fun showNative( fun showNative(
nativeView: NativeParentView, nativeView: NativeParentView,
@LayoutRes layout: Int, @LayoutRes layout: Int,
nativeCallBack: ((Any?) -> Unit)? = null nativeCallBack: ((Any?) -> Unit)? = null
) { ) {
if (!adsConfigBean.isAdShow) { if (!adsConfigBean.isAdShow || !LimitUtils.isShowNative(AdsType.NATIVE, null)) {
nativeView.visibility = View.GONE nativeView.visibility = View.GONE
nativeCallBack?.invoke(null) nativeCallBack?.invoke(null)
return return
} }
nativeView.visibility = View.VISIBLE nativeView.visibility = View.VISIBLE
if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", configBean.isInBlackList.toString())
return
}
val showNative = { val showNative = {
if (adsConfigBean.adSwitch) { if (true) {
adNativeMgr.show(AdmobEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack) adNativeMgr.show(AdmobEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack)
} else { } else {
maxNativeMgr.show(AdMaxEvent("nativeAd", "nativeAd"), nativeView, layout, nativeCallBack)
} }
} }
...@@ -282,12 +185,10 @@ object AdsMgr { ...@@ -282,12 +185,10 @@ object AdsMgr {
return return
} }
parent.visibility = View.VISIBLE parent.visibility = View.VISIBLE
if (configBean.isInBlackList) {
EventUtils.event("isInBlackList", configBean.isInBlackList.toString()) if (true) {
return
}
if (adsConfigBean.adSwitch) {
adBannerMgr.show(parent, collapsible, adClose) adBannerMgr.show(parent, collapsible, adClose)
} }
} }
} }
package com.simplecleaner.app.business.ads package com.simplecleaner.app.business.ads
import android.util.Log
import com.simplecleaner.app.BuildConfig import com.simplecleaner.app.BuildConfig
import com.simplecleaner.app.bean.config.AdConfigBean import com.simplecleaner.app.bean.config.AdConfigBean
import com.simplecleaner.app.utils.AppPreferences import com.simplecleaner.app.utils.AppPreferences
import com.simplecleaner.app.utils.KotlinExt.toFormatTime4 import com.simplecleaner.app.utils.KotlinExt.toFormatTime4
import com.simplecleaner.app.utils.LogEx
/** /**
...@@ -95,16 +97,15 @@ object LimitUtils { ...@@ -95,16 +97,15 @@ object LimitUtils {
AppPreferences.getInstance().put(NUM_REQUEST, 0) AppPreferences.getInstance().put(NUM_REQUEST, 0)
AppPreferences.getInstance().put(NUM_CLICK, 0) AppPreferences.getInstance().put(NUM_CLICK, 0)
} }
val flag1 = isDisplayLimited if (isDisplayLimited) {
if (flag1) {
val value = "current${getAdEventMsg(adsType)} " + val value = "current${getAdEventMsg(adsType)} " +
"show=${AppPreferences.getInstance().getInt(NUM_DISPLAY, 0)} " + "show=${AppPreferences.getInstance().getInt(NUM_DISPLAY, 0)} " +
"${getAdEventMsg(adsType).lowercase()}_" + "max_show=${AdConfigBean.adsConfigBean.numDisplayLimit}" "${getAdEventMsg(adsType).lowercase()}_" + "max_show=${AdConfigBean.adsConfigBean.numDisplayLimit}"
adEvent?.adLimited(value) adEvent?.adLimited(value)
} }
val flag2 = isClickLimited if (isClickLimited) {
if (flag2) {
val value = val value =
"current${getAdEventMsg(adsType)}Click=${AppPreferences.getInstance().getInt(NUM_CLICK, 0)} " "current${getAdEventMsg(adsType)}Click=${AppPreferences.getInstance().getInt(NUM_CLICK, 0)} "
"${getAdEventMsg(adsType).lowercase()}_max_click=${AdConfigBean.adsConfigBean.numClickLimit}" "${getAdEventMsg(adsType).lowercase()}_max_click=${AdConfigBean.adsConfigBean.numClickLimit}"
...@@ -112,15 +113,14 @@ object LimitUtils { ...@@ -112,15 +113,14 @@ object LimitUtils {
adEvent?.adLimited(value) adEvent?.adLimited(value)
} }
val flag3 = isRequestLimited if (isRequestLimited) {
if (flag3) {
val value = "current${getAdEventMsg(adsType)}Request=${AppPreferences.getInstance().getInt(NUM_REQUEST, 0)} " + val value = "current${getAdEventMsg(adsType)}Request=${AppPreferences.getInstance().getInt(NUM_REQUEST, 0)} " +
"${getAdEventMsg(adsType).lowercase()}_max_request=${AdConfigBean.adsConfigBean.numRequestLimit}" "${getAdEventMsg(adsType).lowercase()}_max_request=${AdConfigBean.adsConfigBean.numRequestLimit}"
adEvent?.adLimited(value) adEvent?.adLimited(value)
} }
return !(flag1 || flag2 || flag3) return !(isDisplayLimited || isClickLimited || isRequestLimited)
} }
private fun addNum(key: String) { private fun addNum(key: String) {
...@@ -151,27 +151,59 @@ object LimitUtils { ...@@ -151,27 +151,59 @@ object LimitUtils {
addNum(NUM_NATIVE_DISPLAY) addNum(NUM_NATIVE_DISPLAY)
} }
/**
* 开屏限制
*/
fun isIntervalOpenLimit(adEvent: AdEvent): Boolean {
val passTime = ((System.currentTimeMillis() - openLastShowTime) / 1000).toInt()
val interval = AdConfigBean.adsConfigBean.timeIntervalOpen
val flag = passTime < interval
Log.e(adEvent.TAG, "open isIntervalOpenLimit=$flag passTime=$passTime interval=$interval")
if (flag) {
adEvent.adShowError("ad in timeInterval")
}
return flag
}
/** /**
* 开屏和插页广告的显示间隔限制 * 插屏限制
*/ */
fun isIntervalLimited(adEvent: AdEvent?): Boolean { fun isIntervalInterLimit(adEvent: AdEvent): Boolean {
val flag = ((System.currentTimeMillis() - openInterLastShowTime) / 1000).toInt() < (AdConfigBean.adsConfigBean.timeInterval) val passTime = ((System.currentTimeMillis() - interLastShowTime) / 1000).toInt()
val interval = AdConfigBean.adsConfigBean.timeInterval
val flag = passTime < interval
Log.e(
adEvent.TAG,
"inter isIntervalInterLimit=$flag interLastShowTime=$interLastShowTime passTime=$passTime interval=$interval"
)
if (flag) { if (flag) {
adEvent?.adLimited("ad in timeInterval") adEvent.adShowError("ad in timeInterval")
} }
return flag return flag
} }
//开屏和插页上一次展示时间共用,避免开屏插页连弹 //开屏上次展示时间
var openInterLastShowTime = 0L var openLastShowTime = 0L
get() {
return AppPreferences.getInstance().getLong("openLastShowTime", field)
}
set(value) {
field = value
AppPreferences.getInstance().put("openLastShowTime", value, true)
}
//插屏上次展示时间
var interLastShowTime = 0L
get() { get() {
return AppPreferences.getInstance().getLong("openInterLastShowTime", field) return AppPreferences.getInstance().getLong("interLastShowTime", field)
} }
set(value) { set(value) {
field = value field = value
AppPreferences.getInstance().put("openInterLastShowTime", value, true) AppPreferences.getInstance().put("interLastShowTime", value, true)
} }
/** /**
* 原生广告是否到达限制 * 原生广告是否到达限制
*/ */
...@@ -190,12 +222,19 @@ object LimitUtils { ...@@ -190,12 +222,19 @@ object LimitUtils {
AppPreferences.getInstance().put(NUM_NATIVE_DISPLAY, 0) AppPreferences.getInstance().put(NUM_NATIVE_DISPLAY, 0)
} }
val flag = isNativeLimited val flag = isNativeLimited
val todayNumber = AppPreferences.getInstance().getInt(NUM_NATIVE_DISPLAY, 0)
val max = AdConfigBean.adsConfigBean.numNativeDisplayLimit
LogEx.logDebug(adEvent?.TAG ?: "", "native todayNumber=$todayNumber max=$max ")
if (flag) { if (flag) {
val value = "current${getAdEventMsg(adsType)} " + val value = "current${getAdEventMsg(adsType)} " +
"show=${AppPreferences.getInstance().getInt(NUM_NATIVE_DISPLAY, 0)} " + "show=${todayNumber} " +
"${getAdEventMsg(adsType).lowercase()}_" + "max_show=${AdConfigBean.adsConfigBean.numNativeDisplayLimit}" "${getAdEventMsg(adsType).lowercase()}_" + "max_show=${max}"
adEvent?.adLimited(value) adEvent?.adLimited(value)
} }
return !flag return !flag
} }
} }
...@@ -13,6 +13,7 @@ import com.google.android.gms.ads.AdRequest ...@@ -13,6 +13,7 @@ import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.AdSize import com.google.android.gms.ads.AdSize
import com.google.android.gms.ads.AdView import com.google.android.gms.ads.AdView
import com.google.android.gms.ads.LoadAdError import com.google.android.gms.ads.LoadAdError
import com.simplecleaner.app.business.ads.admob.AdmobEvent.AdmobOnPaidEventListener
import java.util.UUID import java.util.UUID
/** /**
...@@ -25,7 +26,7 @@ class AdBannerMgr { ...@@ -25,7 +26,7 @@ class AdBannerMgr {
fun show(parent: ViewGroup, collapsible: Boolean, adClose: (() -> Unit)? = null) { fun show(parent: ViewGroup, collapsible: Boolean, adClose: (() -> Unit)? = null) {
if (!AdConfigBean.adsConfigBean.adSwitch) { if (!AdConfigBean.adsConfigBean.isAdShow) {
return return
} }
val admobEvent = AdmobEvent("banner", "banner") val admobEvent = AdmobEvent("banner", "banner")
......
...@@ -19,6 +19,7 @@ import com.google.android.gms.ads.FullScreenContentCallback ...@@ -19,6 +19,7 @@ import com.google.android.gms.ads.FullScreenContentCallback
import com.google.android.gms.ads.LoadAdError import com.google.android.gms.ads.LoadAdError
import com.google.android.gms.ads.interstitial.InterstitialAd import com.google.android.gms.ads.interstitial.InterstitialAd
import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
import com.simplecleaner.app.business.ads.admob.AdmobEvent.AdmobOnPaidEventListener
/** /**
...@@ -26,12 +27,12 @@ import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback ...@@ -26,12 +27,12 @@ import com.google.android.gms.ads.interstitial.InterstitialAdLoadCallback
*/ */
class AdInterMgr { class AdInterMgr {
private val TAG = "AdInterMgr"
private var adState = AdState<InterstitialAd>() private var adState = AdState<InterstitialAd>()
private var showCallBack: AdsShowCallBack? = null private var showCallBack: AdsShowCallBack? = null
//正在加载回调 //正在加载回调
private var loadingCallBack: (() -> Unit)? = null private var loadingCallBack: ((flag: Boolean) -> Unit)? = null
fun show( fun show(
activity: Activity, activity: Activity,
...@@ -43,24 +44,22 @@ class AdInterMgr { ...@@ -43,24 +44,22 @@ class AdInterMgr {
return return
} }
val nowAdEvent = adEvent
//currentAdEvent!=null 表示有缓存广告,关联reqId //currentAdEvent!=null 表示有缓存广告,关联reqId
adState.currentAdEvent?.let { nowAdEvent.reqId = it.reqId } adState.currentAdEvent?.let { adEvent.reqId = it.reqId }
if (!nowAdEvent.isUnLimit) { if (!adEvent.isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.INSERT, nowAdEvent)) { if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) {
showCallBack?.failed(2) showCallBack?.failed(2)
return return
} }
if (LimitUtils.isIntervalLimited(nowAdEvent)) { if (LimitUtils.isIntervalInterLimit(adEvent)) {
showCallBack?.failed(3) showCallBack?.failed(3)
return return
} }
} }
val needLoad = !adState.adAvailable() val needLoad = adState.needLoad()
// adState.activityRef = WeakReference(activity)
this.showCallBack = showCallBack this.showCallBack = showCallBack
if (adState.adDialog == null) { if (adState.adDialog == null) {
...@@ -69,24 +68,29 @@ class AdInterMgr { ...@@ -69,24 +68,29 @@ class AdInterMgr {
adState.adDialog?.dismiss() adState.adDialog?.dismiss()
} }
nowAdEvent.adPrepareShow() adEvent.adPrepareShow()
LogEx.logDebug(adEvent.TAG, "needLoad=$needLoad") LogEx.logDebug(adEvent.TAG, "needLoad=$needLoad")
if (needLoad) { if (needLoad) {
if (!adState.loadingAd) { if (!adState.loadingAd) {
LogEx.logDebug(adEvent.TAG, "inter adState !loadingAd") LogEx.logDebug(adEvent.TAG, "inter adState !loadingAd")
loadAd(activity, nowAdEvent) { loadAd(activity, adEvent) {
showReadyAd(activity, nowAdEvent) if (it) {
showReadyAd(activity, adEvent)
} else {
showCallBack?.adFailed()
}
} }
} else { } else {
LogEx.logDebug(adEvent.TAG, "inter adState is loadingAd") LogEx.logDebug(adEvent.TAG, "inter adState is loadingAd")
loadingCallBack = { loadingCallBack = {
showReadyAd(activity, nowAdEvent) showReadyAd(activity, adEvent)
} }
} }
} else { } else {
LogEx.logDebug(adEvent.TAG, "inter ad ready") LogEx.logDebug(adEvent.TAG, "inter ad ready")
showReadyAd(activity, nowAdEvent) showReadyAd(activity, adEvent)
} }
} }
...@@ -94,13 +98,12 @@ class AdInterMgr { ...@@ -94,13 +98,12 @@ class AdInterMgr {
private fun showReadyAd(ac: Activity, adEvent: AdEvent) { private fun showReadyAd(ac: Activity, adEvent: AdEvent) {
// val ac = adState.activityRef?.get()
val admobEvent = (adEvent as AdmobEvent) val admobEvent = (adEvent as AdmobEvent)
val tag = adEvent.TAG val tag = adEvent.TAG
LogEx.logDebug(tag, "showReadyAd ac=$ac currentAd=${adState.currentAd}") LogEx.logDebug(tag, "inter showReadyAd ac=${ac.javaClass.simpleName} currentAd=${adState.currentAd}")
if (ac.isFinishing || ac.isDestroyed || adState.currentAd == null) { if (ac.isFinishing || ac.isDestroyed || adState.currentAd == null) {
LogEx.logDebug(tag, "showReadyAd ac=null isFinishing isDestroyed") LogEx.logDebug(tag, "inter showReadyAd ac=null isFinishing isDestroyed")
showCallBack?.failed() showCallBack?.failed()
adState.onAdDisplayFailed() adState.onAdDisplayFailed()
return return
...@@ -112,12 +115,12 @@ class AdInterMgr { ...@@ -112,12 +115,12 @@ class AdInterMgr {
override fun onAdShowedFullScreenContent() { override fun onAdShowedFullScreenContent() {
super.onAdShowedFullScreenContent() super.onAdShowedFullScreenContent()
admobEvent.showAd(responseInfo, ac) adState.onAdDisplayed(AdsType.INSERT)
adState.onAdDisplayed()
showCallBack?.show() showCallBack?.show()
LimitUtils.addDisplayNum() LimitUtils.addDisplayNum()
admobEvent.showAd(responseInfo, ac)
} }
override fun onAdFailedToShowFullScreenContent(adError: AdError) { override fun onAdFailedToShowFullScreenContent(adError: AdError) {
...@@ -133,10 +136,11 @@ class AdInterMgr { ...@@ -133,10 +136,11 @@ class AdInterMgr {
override fun onAdDismissedFullScreenContent() { override fun onAdDismissedFullScreenContent() {
super.onAdDismissedFullScreenContent() super.onAdDismissedFullScreenContent()
adState.onAdHidden() adState.onAdHidden(AdsType.INSERT)
showCallBack?.close() showCallBack?.close()
showCallBack = null showCallBack = null
loadAd(MyApplication.appContext, AdmobEvent("interAd", "preload")) loadAd(MyApplication.appContext, AdmobEvent("interAd", "preload"))
} }
...@@ -147,7 +151,6 @@ class AdInterMgr { ...@@ -147,7 +151,6 @@ class AdInterMgr {
LimitUtils.addClickNum() LimitUtils.addClickNum()
} }
} }
// val activity = adState.activityRef?.get()
if (AdConfigBean.adsConfigBean.showCountdown) { if (AdConfigBean.adsConfigBean.showCountdown) {
createUICountdownTimer(adState.adDialog) { createUICountdownTimer(adState.adDialog) {
show(ac) show(ac)
...@@ -158,10 +161,11 @@ class AdInterMgr { ...@@ -158,10 +161,11 @@ class AdInterMgr {
} }
} }
fun loadAd( fun loadAd(
context: Context, context: Context,
adEvent: AdEvent, adEvent: AdEvent,
loadCallBack: (() -> Unit)? = null loadCallBack: ((flag: Boolean) -> Unit)? = null
) { ) {
if (!adEvent.isUnLimit) { if (!adEvent.isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) { if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) {
...@@ -173,14 +177,12 @@ class AdInterMgr { ...@@ -173,14 +177,12 @@ class AdInterMgr {
} }
//避免无效预加载 //避免无效预加载
if (adState.loadingAd && loadCallBack == null && loadingCallBack == null) { if (adState.loadingAd) {
//容错机制
adState.loadingAd = false
return return
} }
adState.loadingAd = true
adEvent.adPulStart() adEvent.adPulStart()
adState.loadStart(adEvent)
InterstitialAd.load( InterstitialAd.load(
context, GlobalConfig.ID_ADMOB_INTER, AdRequest.Builder().build(), context, GlobalConfig.ID_ADMOB_INTER, AdRequest.Builder().build(),
...@@ -188,10 +190,10 @@ class AdInterMgr { ...@@ -188,10 +190,10 @@ class AdInterMgr {
override fun onAdLoaded(ad: InterstitialAd) { override fun onAdLoaded(ad: InterstitialAd) {
val event = (adEvent as AdmobEvent) val event = (adEvent as AdmobEvent)
ad.onPaidEventListener = AdmobOnPaidEventListener(ad, adEvent.scope) ad.onPaidEventListener = AdmobOnPaidEventListener(ad, adEvent.scope)
adState.onAdLoaded(ad, adEvent) adState.onAdLoaded(ad)
loadCallBack?.invoke() loadCallBack?.invoke(true)
loadingCallBack?.invoke() loadingCallBack?.invoke(true)
loadingCallBack = null loadingCallBack = null
LimitUtils.addRequestNum() LimitUtils.addRequestNum()
...@@ -200,11 +202,14 @@ class AdInterMgr { ...@@ -200,11 +202,14 @@ class AdInterMgr {
override fun onAdFailedToLoad(loadAdError: LoadAdError) { override fun onAdFailedToLoad(loadAdError: LoadAdError) {
adState.onAdLoadFailed() adState.onAdLoadFailed()
if (loadCallBack != null) { if (loadCallBack != null) {
adState.onAdDisplayFailed() adState.onAdDisplayFailed()
} }
showCallBack?.adFailed() loadCallBack?.invoke(false)
showCallBack = null loadingCallBack?.invoke(false)
loadingCallBack = null
(adEvent as AdmobEvent).pullAd(loadAdError.responseInfo, loadAdError) (adEvent as AdmobEvent).pullAd(loadAdError.responseInfo, loadAdError)
} }
......
...@@ -13,6 +13,7 @@ import com.google.android.gms.ads.AdRequest ...@@ -13,6 +13,7 @@ import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.LoadAdError import com.google.android.gms.ads.LoadAdError
import com.google.android.gms.ads.nativead.NativeAd import com.google.android.gms.ads.nativead.NativeAd
import com.google.android.gms.ads.nativead.NativeAdOptions import com.google.android.gms.ads.nativead.NativeAdOptions
import com.simplecleaner.app.business.ads.admob.AdmobEvent.AdmobOnPaidEventListener
import java.util.concurrent.ConcurrentLinkedDeque import java.util.concurrent.ConcurrentLinkedDeque
/** /**
...@@ -91,8 +92,6 @@ class AdNativeMgr { ...@@ -91,8 +92,6 @@ class AdNativeMgr {
nativeCallBack: ((Any?) -> Unit)? = null nativeCallBack: ((Any?) -> Unit)? = null
) { ) {
admobEvent.adPrepareShow()
if (!LimitUtils.isAdShow(AdsType.NATIVE, admobEvent)) { if (!LimitUtils.isAdShow(AdsType.NATIVE, admobEvent)) {
Log.e(TAG, "!isAdShow") Log.e(TAG, "!isAdShow")
cacheItems.clear() cacheItems.clear()
...@@ -102,6 +101,8 @@ class AdNativeMgr { ...@@ -102,6 +101,8 @@ class AdNativeMgr {
return return
} }
admobEvent.adPrepareShow()
Log.e(TAG, "adNative can show") Log.e(TAG, "adNative can show")
if (!adAvailable()) { if (!adAvailable()) {
...@@ -139,4 +140,5 @@ class AdNativeMgr { ...@@ -139,4 +140,5 @@ class AdNativeMgr {
private fun adAvailable(): Boolean { private fun adAvailable(): Boolean {
return (lastTime == 0L) || ((System.currentTimeMillis() - lastTime) / 1000 / 60).toInt() < 30 return (lastTime == 0L) || ((System.currentTimeMillis() - lastTime) / 1000 / 60).toInt() < 30
} }
} }
...@@ -15,6 +15,7 @@ import com.google.android.gms.ads.AdRequest ...@@ -15,6 +15,7 @@ import com.google.android.gms.ads.AdRequest
import com.google.android.gms.ads.FullScreenContentCallback import com.google.android.gms.ads.FullScreenContentCallback
import com.google.android.gms.ads.LoadAdError import com.google.android.gms.ads.LoadAdError
import com.google.android.gms.ads.appopen.AppOpenAd import com.google.android.gms.ads.appopen.AppOpenAd
import com.simplecleaner.app.business.ads.admob.AdmobEvent.AdmobOnPaidEventListener
/** /**
...@@ -22,12 +23,11 @@ import com.google.android.gms.ads.appopen.AppOpenAd ...@@ -22,12 +23,11 @@ import com.google.android.gms.ads.appopen.AppOpenAd
*/ */
class AdOpenMgr { class AdOpenMgr {
private val TAG = "AdOpenMgr"
private val adState = AdState<AppOpenAd>() private val adState = AdState<AppOpenAd>()
private var showCallBack: AdsShowCallBack? = null private var showCallBack: AdsShowCallBack? = null
//正在加载回调 //正在加载回调
private var loadingCallBack: (() -> Unit)? = null private var loadingCallBack: ((flag: Boolean) -> Unit)? = null
fun show( fun show(
activity: Activity, activity: Activity,
...@@ -38,65 +38,70 @@ class AdOpenMgr { ...@@ -38,65 +38,70 @@ class AdOpenMgr {
return return
} }
val nowAdEvent = adEvent adState.currentAdEvent?.let { adEvent.reqId = it.reqId }
adState.currentAdEvent?.let { nowAdEvent.reqId = it.reqId }
if (!nowAdEvent.isUnLimit) { if (!adEvent.isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.OPEN, nowAdEvent)) { if (!LimitUtils.isAdShow(AdsType.OPEN, adEvent)) {
showCallBack?.failed() showCallBack?.failed()
return return
} }
if (LimitUtils.isIntervalLimited(nowAdEvent)) { if (LimitUtils.isIntervalOpenLimit(adEvent)) {
showCallBack?.failed() showCallBack?.failed()
return return
} }
} }
val needLoad = !adState.adAvailable() val needLoad = adState.needLoad()
this.showCallBack = showCallBack this.showCallBack = showCallBack
nowAdEvent.adPrepareShow() adEvent.adPrepareShow()
if (needLoad) { if (needLoad) {
if (!adState.loadingAd) { if (!adState.loadingAd) {
LogEx.logDebug(adEvent.TAG, "open adState !loadingAd") LogEx.logDebug(adEvent.TAG, "open adState !loadingAd")
loadAd(activity, adEvent) { loadAd(activity, adEvent) {
showReadyAd(activity) if (it) {
showReadyAd(activity, adEvent)
} else {
showCallBack?.adFailed()
}
} }
} else { } else {
LogEx.logDebug(adEvent.TAG, "open adState is loadingAd") LogEx.logDebug(adEvent.TAG, "open adState is loadingAd")
loadingCallBack = { loadingCallBack = {
showReadyAd(activity) if (it) {
showReadyAd(activity, adEvent)
} else {
showCallBack?.adFailed()
}
} }
} }
} else { } else {
LogEx.logDebug(adEvent.TAG, "open ad ready") LogEx.logDebug(adEvent.TAG, "open ad ready")
showReadyAd(activity) showReadyAd(activity, adEvent)
} }
} }
private fun showReadyAd(ac: Activity) { private fun showReadyAd(ac: Activity, adEvent: AdEvent) {
val admobEvent = (adEvent as AdmobEvent)
// val ac = adState.activityRef?.get()
if (ac.isFinishing || ac.isDestroyed || adState.currentAd == null) { if (ac.isFinishing || ac.isDestroyed || adState.currentAd == null) {
LogEx.logDebug(TAG, "showReadyAd ac=null isFinishing isDestroyed") LogEx.logDebug(adEvent.TAG, "open showReadyAd ac=null isFinishing isDestroyed")
return return
} }
adState.currentAd?.run { adState.currentAd?.run {
val adEvent = adState.currentAdEvent as AdmobEvent?
fullScreenContentCallback = object : FullScreenContentCallback() { fullScreenContentCallback = object : FullScreenContentCallback() {
override fun onAdShowedFullScreenContent() { override fun onAdShowedFullScreenContent() {
adState.onAdDisplayed(AdsType.OPEN)
adEvent?.showAd(this@run.responseInfo, ac)
showCallBack?.show() showCallBack?.show()
adState.onAdDisplayed()
//计数 //计数
LimitUtils.addDisplayNum() LimitUtils.addDisplayNum()
admobEvent.showAd(this@run.responseInfo, ac)
} }
override fun onAdFailedToShowFullScreenContent(adError: AdError) { override fun onAdFailedToShowFullScreenContent(adError: AdError) {
...@@ -106,25 +111,24 @@ class AdOpenMgr { ...@@ -106,25 +111,24 @@ class AdOpenMgr {
showCallBack = null showCallBack = null
adState.onAdDisplayFailed() adState.onAdDisplayFailed()
adEvent?.adShowError(adError) admobEvent.adShowError(adError)
} }
override fun onAdDismissedFullScreenContent() { override fun onAdDismissedFullScreenContent() {
super.onAdDismissedFullScreenContent() super.onAdDismissedFullScreenContent()
adState.onAdHidden(AdsType.OPEN)
showCallBack?.close() showCallBack?.close()
showCallBack = null showCallBack = null
adState.onAdHidden()
//预加载,“Timeout for show call succeed.”预加载的广告大概率, //预加载,“Timeout for show call succeed.”预加载的广告大概率,
loadAd(MyApplication.appContext, AdmobEvent("openAd", "preload")) loadAd(MyApplication.appContext, AdmobEvent("openAd", "preload"))
} }
override fun onAdClicked() { override fun onAdClicked() {
adEvent?.clickAd(this@run.responseInfo) admobEvent.clickAd(this@run.responseInfo)
//计数 //计数
LimitUtils.addClickNum() LimitUtils.addClickNum()
} }
...@@ -136,7 +140,7 @@ class AdOpenMgr { ...@@ -136,7 +140,7 @@ class AdOpenMgr {
fun loadAd( fun loadAd(
context: Context, context: Context,
adEvent: AdEvent, adEvent: AdEvent,
loadCallBack: (() -> Unit)? = null loadCallBack: ((flag: Boolean) -> Unit)? = null
) { ) {
if (!adEvent.isUnLimit) { if (!adEvent.isUnLimit) {
...@@ -149,14 +153,12 @@ class AdOpenMgr { ...@@ -149,14 +153,12 @@ class AdOpenMgr {
} }
//避免无效预加载 //避免无效预加载
if (adState.loadingAd && loadCallBack == null && loadingCallBack == null) { if (adState.loadingAd) {
//容错机制
adState.loadingAd = false
return return
} }
adState.loadingAd = true
adEvent.adPulStart() adEvent.adPulStart()
adState.loadStart(adEvent)
AppOpenAd.load( AppOpenAd.load(
context, context,
...@@ -164,21 +166,27 @@ class AdOpenMgr { ...@@ -164,21 +166,27 @@ class AdOpenMgr {
AdRequest.Builder().build(), AdRequest.Builder().build(),
object : AppOpenAd.AppOpenAdLoadCallback() { object : AppOpenAd.AppOpenAdLoadCallback() {
override fun onAdLoaded(appOpenAd: AppOpenAd) { override fun onAdLoaded(appOpenAd: AppOpenAd) {
adState.onAdLoaded(appOpenAd, adEvent) LogEx.logDebug(adEvent.TAG, "open onAdLoaded loadAd")
appOpenAd.onPaidEventListener = AdmobOnPaidEventListener(appOpenAd, adEvent.scope)
adState.onAdLoaded(appOpenAd)
loadCallBack?.invoke() loadCallBack?.invoke(true)
loadingCallBack?.invoke() loadingCallBack?.invoke(true)
loadingCallBack = null loadingCallBack = null
(adEvent as AdmobEvent).pullAd(appOpenAd.responseInfo)
appOpenAd.onPaidEventListener = AdmobOnPaidEventListener(appOpenAd, adEvent.scope)
LimitUtils.addRequestNum() LimitUtils.addRequestNum()
(adEvent as AdmobEvent).pullAd(appOpenAd.responseInfo)
} }
override fun onAdFailedToLoad(loadAdError: LoadAdError) { override fun onAdFailedToLoad(loadAdError: LoadAdError) {
showCallBack?.adFailed() LogEx.logDebug(adEvent.TAG, "open onAdFailedToLoad loadAd")
showCallBack = null
adState.onAdLoadFailed() adState.onAdLoadFailed()
loadCallBack?.invoke(false)
loadingCallBack?.invoke(false)
loadingCallBack = null
(adEvent as AdmobEvent).pullAd(loadAdError.responseInfo, loadAdError) (adEvent as AdmobEvent).pullAd(loadAdError.responseInfo, loadAdError)
} }
} }
......
...@@ -28,7 +28,6 @@ import com.google.firebase.ktx.Firebase ...@@ -28,7 +28,6 @@ import com.google.firebase.ktx.Firebase
import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.CoroutineScope
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.SupervisorJob import kotlinx.coroutines.SupervisorJob
import kotlinx.coroutines.launch
import org.json.JSONObject import org.json.JSONObject
import java.math.BigDecimal import java.math.BigDecimal
import java.util.Currency import java.util.Currency
...@@ -38,17 +37,16 @@ class AdmobEvent : AdEvent { ...@@ -38,17 +37,16 @@ class AdmobEvent : AdEvent {
override val TAG: String = "AdmobEvent" override val TAG: String = "AdmobEvent"
val scope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
constructor(adUnit: String, from: String) : super() { constructor(adUnit: String, from: String) : super() {
this.adUnit = adUnit this.adUnit = adUnit
this.from = from this.from = from
} }
fun pullAd( fun pullAd(
responseInfo: ResponseInfo?, responseInfo: ResponseInfo?,
error: LoadAdError? = null, error: LoadAdError? = null,
) = scope.launch { ) {
var key = "ad_pull" var key = "ad_pull"
val obj = JSONObject() val obj = JSONObject()
obj.put("ad_unit", adUnit) obj.put("ad_unit", adUnit)
...@@ -77,16 +75,18 @@ class AdmobEvent : AdEvent { ...@@ -77,16 +75,18 @@ class AdmobEvent : AdEvent {
key = "ad_pull_error" key = "ad_pull_error"
} }
EventUtils.event(key, ext = obj) EventUtils.event(key, ext = obj)
LogEx.logDebug(TAG, "$key obj=$obj") LogEx.logDebug(TAG, "${key}_$adUnit obj=$obj")
} }
fun clickAd(responseInfo: ResponseInfo?) = scope.launch {
fun clickAd(responseInfo: ResponseInfo?) {
val response = responseInfo?.adapterResponses?.getOrNull(0) val response = responseInfo?.adapterResponses?.getOrNull(0)
val obj = JSONObject() val obj = JSONObject()
obj.put("ad_unit", adUnit)
obj.put("from", from)
obj.put("req_id", reqId) obj.put("req_id", reqId)
obj.put("source", response?.adSourceName) obj.put("source", response?.adSourceName)
obj.put("ad_unit", adUnit)
val credentials = mapOf( val credentials = mapOf(
"placementid" to response?.credentials?.get("placementid"), "placementid" to response?.credentials?.get("placementid"),
...@@ -95,7 +95,6 @@ class AdmobEvent : AdEvent { ...@@ -95,7 +95,6 @@ class AdmobEvent : AdEvent {
) )
obj.put("credentials", credentials.toString()) obj.put("credentials", credentials.toString())
obj.put("session_id", responseInfo?.responseId) obj.put("session_id", responseInfo?.responseId)
obj.put("from", from)
obj.put("networkname", responseInfo?.mediationAdapterClassName) obj.put("networkname", responseInfo?.mediationAdapterClassName)
if (adUnit != "nativeAd") { if (adUnit != "nativeAd") {
EventUtils.event("ad_click", ext = obj) EventUtils.event("ad_click", ext = obj)
...@@ -104,13 +103,12 @@ class AdmobEvent : AdEvent { ...@@ -104,13 +103,12 @@ class AdmobEvent : AdEvent {
} }
} }
fun showAd(responseInfo: ResponseInfo?, activity: Activity? = null) = scope.launch { fun showAd(responseInfo: ResponseInfo?, activity: Activity? = null) {
val response = responseInfo?.adapterResponses?.getOrNull(0) val response = responseInfo?.adapterResponses?.getOrNull(0)
val obj = JSONObject() val obj = JSONObject()
obj.put("ad_unit", adUnit)
obj.put("from", activity?.javaClass?.simpleName)
obj.put("req_id", reqId) obj.put("req_id", reqId)
obj.put("source", response?.adSourceName) obj.put("source", response?.adSourceName)
obj.put("ad_unit", adUnit)
obj.put("networkname", responseInfo?.mediationAdapterClassName) obj.put("networkname", responseInfo?.mediationAdapterClassName)
val credentials = mapOf( val credentials = mapOf(
"placementid" to response?.credentials?.get("placementid"), "placementid" to response?.credentials?.get("placementid"),
...@@ -119,6 +117,7 @@ class AdmobEvent : AdEvent { ...@@ -119,6 +117,7 @@ class AdmobEvent : AdEvent {
) )
obj.put("credentials", credentials.toString()) obj.put("credentials", credentials.toString())
obj.put("session_id", responseInfo?.responseId) obj.put("session_id", responseInfo?.responseId)
obj.put("from", activity?.javaClass?.simpleName)
if (adUnit != "nativeAd") { if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj) EventUtils.event("ad_show", ext = obj)
} else { } else {
...@@ -127,7 +126,7 @@ class AdmobEvent : AdEvent { ...@@ -127,7 +126,7 @@ class AdmobEvent : AdEvent {
LogEx.logDebug(TAG, "ad_show $obj") LogEx.logDebug(TAG, "ad_show $obj")
} }
fun adShowError(adError: AdError) = scope.launch { fun adShowError(adError: AdError) {
val obj = JSONObject() val obj = JSONObject()
obj.put("req_id", reqId) obj.put("req_id", reqId)
obj.put("reason", adError.message) obj.put("reason", adError.message)
...@@ -137,13 +136,12 @@ class AdmobEvent : AdEvent { ...@@ -137,13 +136,12 @@ class AdmobEvent : AdEvent {
EventUtils.event("ad_show_error", ext = obj) EventUtils.event("ad_show_error", ext = obj)
LogEx.logDebug(TAG, "ad_show_error $obj") LogEx.logDebug(TAG, "ad_show_error $obj")
} }
}
class AdmobOnPaidEventListener( class AdmobOnPaidEventListener(
private val ad: Any, private val ad: Any,
private val coroutineScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO) private val coroutineScope: CoroutineScope = CoroutineScope(SupervisorJob() + Dispatchers.IO)
) : OnPaidEventListener { ) : OnPaidEventListener {
override fun onPaidEvent(adValue: AdValue) { override fun onPaidEvent(adValue: AdValue) {
onPaidEvent2(ad, adValue) onPaidEvent2(ad, adValue)
...@@ -377,4 +375,6 @@ class AdmobOnPaidEventListener( ...@@ -377,4 +375,6 @@ class AdmobOnPaidEventListener(
EventUtils.event(key, ext = obj) EventUtils.event(key, ext = obj)
} }
}
} }
package com.simplecleaner.app.business.ads.applovin //package com.simplecleaner.app.business.ads.applovin
//
import android.os.Bundle //import android.os.Bundle
import com.applovin.mediation.MaxAd //import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdRevenueListener //import com.applovin.mediation.MaxAdRevenueListener
import com.applovin.mediation.MaxError //import com.applovin.mediation.MaxError
import com.applovin.sdk.AppLovinSdk //import com.applovin.sdk.AppLovinSdk
import com.simplecleaner.app.MyApplication //import com.simplecleaner.app.MyApplication
import com.simplecleaner.app.business.ads.AdEvent //import com.simplecleaner.app.business.ads.AdEvent
import com.simplecleaner.app.business.ads.taichiPref //import com.simplecleaner.app.business.ads.taichiPref
import com.simplecleaner.app.business.ads.taichiSharedPreferencesEditor //import com.simplecleaner.app.business.ads.taichiSharedPreferencesEditor
import com.simplecleaner.app.business.helper.EventUtils //import com.simplecleaner.app.business.helper.EventUtils
import com.simplecleaner.app.utils.LogEx.logDebug //import com.simplecleaner.app.utils.LogEx.logDebug
import com.facebook.appevents.AppEventsConstants //import com.facebook.appevents.AppEventsConstants
import com.facebook.appevents.AppEventsLogger //import com.facebook.appevents.AppEventsLogger
import com.google.firebase.analytics.FirebaseAnalytics //import com.google.firebase.analytics.FirebaseAnalytics
import org.json.JSONObject //import org.json.JSONObject
//
//
class AdMaxEvent : AdEvent { //class AdMaxEvent : AdEvent {
//
override val TAG: String = "AdMaxEvent" // override val TAG: String = "AdMaxEvent"
//
constructor(adUnit: String, from: String) : super() { // constructor(adUnit: String, from: String) : super() {
this.adUnit = adUnit // this.adUnit = adUnit
this.from = from // this.from = from
} // }
//
fun pullAd( // fun pullAd(
ad: MaxAd?, // ad: MaxAd?,
error: MaxError? = null // error: MaxError? = null
) { // ) {
val obj = JSONObject() // val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId) // obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit) // obj.put("ad_unit", adUnit)
obj.put( // obj.put(
"creativeId", // "creativeId",
ad?.creativeId // ad?.creativeId
) // )
obj.put("req_id", reqId) // obj.put("req_id", reqId)
obj.put("from", from) // obj.put("from", from)
obj.put("status", if (ad == null) "0" else "1") // obj.put("status", if (ad == null) "0" else "1")
obj.put("networkname", ad?.networkName) // obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement) // obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement) // obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis) // obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue) // obj.put("valueMicros", ad?.revenue)
if (error == null) { // if (error == null) {
obj.put("status", "1") // obj.put("status", "1")
} else { // } else {
obj.put("errMsg", error) // obj.put("errMsg", error)
obj.put("status", "2") // obj.put("status", "2")
} // }
EventUtils.event("ad_pull", ext = obj) // EventUtils.event("ad_pull", ext = obj)
logDebug(TAG, "ad_pull $obj") // logDebug(TAG, "ad_pull $obj")
} // }
//
fun clickAd(ad: MaxAd?) { // fun clickAd(ad: MaxAd?) {
//
val obj = JSONObject() // val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId) // obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit) // obj.put("ad_unit", adUnit)
obj.put( // obj.put(
"creativeId", // "creativeId",
ad?.creativeId // ad?.creativeId
) // )
obj.put("networkname", ad?.networkName) // obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement) // obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement) // obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis) // obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue) // obj.put("valueMicros", ad?.revenue)
if (!adUnit.equals("nativeAd")) { // if (!adUnit.equals("nativeAd")) {
EventUtils.event("ad_click", ext = obj) // EventUtils.event("ad_click", ext = obj)
} else { // } else {
EventUtils.event("ad_click", ext = obj) // EventUtils.event("ad_click", ext = obj)
} // }
//
} // }
//
fun showAd(ad: MaxAd?, activity: String?) { // fun showAd(ad: MaxAd?, activity: String?) {
val obj = JSONObject() // val obj = JSONObject()
obj.put("UnitId", ad?.adUnitId) // obj.put("UnitId", ad?.adUnitId)
obj.put("ad_unit", adUnit) // obj.put("ad_unit", adUnit)
obj.put( // obj.put(
"creativeId", // "creativeId",
ad?.creativeId // ad?.creativeId
) // )
obj.put("networkname", ad?.networkName) // obj.put("networkname", ad?.networkName)
obj.put("placement", ad?.placement) // obj.put("placement", ad?.placement)
obj.put("networkplacement", ad?.networkPlacement) // obj.put("networkplacement", ad?.networkPlacement)
obj.put("latency", ad?.requestLatencyMillis) // obj.put("latency", ad?.requestLatencyMillis)
obj.put("valueMicros", ad?.revenue) // obj.put("valueMicros", ad?.revenue)
obj.put("from", activity) // obj.put("from", activity)
obj.put("mediation", "applovin") // obj.put("mediation", "applovin")
if (adUnit != "nativeAd") { // if (adUnit != "nativeAd") {
EventUtils.event("ad_show", ext = obj) // EventUtils.event("ad_show", ext = obj)
} else { // } else {
EventUtils.event("ad_show", ext = obj) // EventUtils.event("ad_show", ext = obj)
} // }
//
} // }
//
//
class EventOnPaidEventListener : MaxAdRevenueListener { // class EventOnPaidEventListener : MaxAdRevenueListener {
override fun onAdRevenuePaid(ad: MaxAd) { // override fun onAdRevenuePaid(ad: MaxAd) {
val params = Bundle() // val params = Bundle()
val currentImpressionRevenue: Double = ad.revenue // In USD // val currentImpressionRevenue: Double = ad.revenue // In USD
val mFirebaseAnalytics = FirebaseAnalytics.getInstance(MyApplication.appContext) // val mFirebaseAnalytics = FirebaseAnalytics.getInstance(MyApplication.appContext)
params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin") // params.putString(FirebaseAnalytics.Param.AD_PLATFORM, "appLovin")
params.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.networkName) // params.putString(FirebaseAnalytics.Param.AD_SOURCE, ad.networkName)
params.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.format.getDisplayName()) // params.putString(FirebaseAnalytics.Param.AD_FORMAT, ad.format.getDisplayName())
params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, ad.adUnitId) // params.putString(FirebaseAnalytics.Param.AD_UNIT_NAME, ad.adUnitId)
params.putDouble(FirebaseAnalytics.Param.VALUE, currentImpressionRevenue) // params.putDouble(FirebaseAnalytics.Param.VALUE, currentImpressionRevenue)
params.putString(FirebaseAnalytics.Param.CURRENCY, "USD") // params.putString(FirebaseAnalytics.Param.CURRENCY, "USD")
mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params) // mFirebaseAnalytics.logEvent(FirebaseAnalytics.Event.AD_IMPRESSION, params)
mFirebaseAnalytics.logEvent("Ad_Impression_Revenue", params) // mFirebaseAnalytics.logEvent("Ad_Impression_Revenue", params)
val previousTaichiTroasCache = taichiPref.getFloat("TaichiTroasCache", 0f) // val previousTaichiTroasCache = taichiPref.getFloat("TaichiTroasCache", 0f)
val currentTaichiTroasCache = previousTaichiTroasCache + currentImpressionRevenue // val currentTaichiTroasCache = previousTaichiTroasCache + currentImpressionRevenue
if (currentTaichiTroasCache >= 0.01) { // if (currentTaichiTroasCache >= 0.01) {
val roasbundle = Bundle() // val roasbundle = Bundle()
roasbundle.putDouble(FirebaseAnalytics.Param.VALUE, currentTaichiTroasCache) // roasbundle.putDouble(FirebaseAnalytics.Param.VALUE, currentTaichiTroasCache)
roasbundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD")///(Required)tROAS事件必须 // roasbundle.putString(FirebaseAnalytics.Param.CURRENCY, "USD")///(Required)tROAS事件必须
mFirebaseAnalytics.logEvent("Total_Ads_Revenue_001", roasbundle) // 给Taichi用 // mFirebaseAnalytics.logEvent("Total_Ads_Revenue_001", roasbundle) // 给Taichi用
taichiSharedPreferencesEditor.putFloat("TaichiTroasCache", 0f)//重新清零,开始计算 // taichiSharedPreferencesEditor.putFloat("TaichiTroasCache", 0f)//重新清零,开始计算
//
val logger = AppEventsLogger.newLogger(MyApplication.appContext) // val logger = AppEventsLogger.newLogger(MyApplication.appContext)
val parameters = Bundle() // val parameters = Bundle()
parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD") // parameters.putString(AppEventsConstants.EVENT_PARAM_CURRENCY, "USD")
logger.logEvent("ad_value", currentTaichiTroasCache, parameters) // logger.logEvent("ad_value", currentTaichiTroasCache, parameters)
} else { // } else {
taichiSharedPreferencesEditor.putFloat( // taichiSharedPreferencesEditor.putFloat(
"TaichiTroasCache", // "TaichiTroasCache",
currentTaichiTroasCache.toFloat() // currentTaichiTroasCache.toFloat()
) // )
taichiSharedPreferencesEditor.commit() // taichiSharedPreferencesEditor.commit()
} // }
val obj = JSONObject() // val obj = JSONObject()
val revenue = ad.revenue // val revenue = ad.revenue
val countryCode = // val countryCode =
AppLovinSdk.getInstance(MyApplication.appContext).configuration.countryCode // AppLovinSdk.getInstance(MyApplication.appContext).configuration.countryCode
val networkName = ad.networkName // val networkName = ad.networkName
val adUnitId = ad.adUnitId // val adUnitId = ad.adUnitId
val adFormat = ad.format // val adFormat = ad.format
val placement = ad.placement // val placement = ad.placement
val networkPlacement = ad.networkPlacement // val networkPlacement = ad.networkPlacement
obj.put("valueMicros", revenue) // obj.put("valueMicros", revenue)
obj.put("currencyCode", countryCode) // obj.put("currencyCode", countryCode)
obj.put("adUnitId", adUnitId) // obj.put("adUnitId", adUnitId)
obj.put("networkName", networkName) // obj.put("networkName", networkName)
obj.put("adFormat", adFormat) // obj.put("adFormat", adFormat)
obj.put("placement", placement) // obj.put("placement", placement)
obj.put("networkPlacement", networkPlacement) // obj.put("networkPlacement", networkPlacement)
EventUtils.event("ad_price", ext = obj) // EventUtils.event("ad_price", ext = obj)
} // }
} // }
//
} //}
\ No newline at end of file \ No newline at end of file
package com.simplecleaner.app.business.ads.applovin //package com.simplecleaner.app.business.ads.applovin
//
import android.app.Activity //import android.app.Activity
import android.content.Context //import android.content.Context
import com.applovin.mediation.MaxAd //import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener //import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError //import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd //import com.applovin.mediation.ads.MaxInterstitialAd
import com.simplecleaner.app.GlobalConfig //import com.simplecleaner.app.GlobalConfig
import com.simplecleaner.app.business.ads.AdCountDownDialog.showAdCountDownDialog //import com.simplecleaner.app.business.ads.AdCountDownDialog.showAdCountDownDialog
import com.simplecleaner.app.business.ads.AdEvent //import com.simplecleaner.app.business.ads.AdEvent
import com.simplecleaner.app.business.ads.AdState //import com.simplecleaner.app.business.ads.AdState
import com.simplecleaner.app.business.ads.AdsShowCallBack //import com.simplecleaner.app.business.ads.AdsShowCallBack
import com.simplecleaner.app.business.ads.AdsType //import com.simplecleaner.app.business.ads.AdsType
import com.simplecleaner.app.business.ads.LimitUtils //import com.simplecleaner.app.business.ads.LimitUtils
//
/** ///**
*插屏广告加载显示管理类 // *插屏广告加载显示管理类
*/ // */
class MaxInsertMgr { //class MaxInsertMgr {
//
private var adState = AdState<MaxInterstitialAd>() // private var adState = AdState<MaxInterstitialAd>()
private var showCallBack: AdsShowCallBack? = null // private var showCallBack: AdsShowCallBack? = null
//
fun show( // fun show(
activity: Activity, // activity: Activity,
isUnLimit: Boolean, // isUnLimit: Boolean,
adEvent: AdEvent, // adEvent: AdEvent,
showCallBack: AdsShowCallBack? // showCallBack: AdsShowCallBack?
) { // ) {
//
if (activity.isFinishing || activity.isDestroyed) { // if (activity.isFinishing || activity.isDestroyed) {
return // return
} // }
//
//
if (!adState.loadingAd) { // if (!adState.loadingAd) {
if (!isUnLimit) { // if (!isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) { // if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) {
showCallBack?.failed(3) // showCallBack?.failed(3)
return // return
} // }
if (LimitUtils.isIntervalLimited(adEvent)) { // if (LimitUtils.isIntervalLimited(adEvent)) {
showCallBack?.failed(4) // showCallBack?.failed(4)
return // return
} // }
} // }
//
if (!adAvailable() || adState.currentAd == null) { // if (!adAvailable() || adState.currentAd == null) {
loadAd(activity, adEvent) // loadAd(activity, adEvent)
return // return
} // }
//
if (showCallBack != null) { // if (showCallBack != null) {
this.showCallBack = showCallBack // this.showCallBack = showCallBack
if (adState.adDialog == null) { // if (adState.adDialog == null) {
adState.adDialog = activity.showAdCountDownDialog() // adState.adDialog = activity.showAdCountDownDialog()
} // }
adEvent.adPrepareShow() // adEvent.adPrepareShow()
} // }
//
//
if (adState.currentAd?.isReady == false) { // if (adState.currentAd?.isReady == false) {
loadAd(activity, adEvent) // loadAd(activity, adEvent)
return // return
} // }
showReadyAd(adEvent) // showReadyAd(adEvent)
} // }
//
} // }
//
//
private fun showReadyAd(adEvent: AdEvent) { // private fun showReadyAd(adEvent: AdEvent) {
adState.currentAd?.run { // adState.currentAd?.run {
setListener(object : MaxAdListener { // setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) = Unit // override fun onAdLoaded(p0: MaxAd) = Unit
override fun onAdLoadFailed(p0: String, p1: MaxError) = Unit // override fun onAdLoadFailed(p0: String, p1: MaxError) = Unit
//
override fun onAdDisplayed(ad: MaxAd) { // override fun onAdDisplayed(ad: MaxAd) {
//
adState.onAdDisplayed() // adState.onAdDisplayed()
showCallBack?.show() // showCallBack?.show()
//
(adEvent as AdMaxEvent).showAd(ad, activity::class.simpleName) // (adEvent as AdMaxEvent).showAd(ad, activity::class.simpleName)
//计数 // //计数
LimitUtils.addDisplayNum() // LimitUtils.addDisplayNum()
} // }
//
override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) { // override fun onAdDisplayFailed(ad: MaxAd, error: MaxError) {
adState.onAdDisplayFailed() // adState.onAdDisplayFailed()
showCallBack?.adFailed() // showCallBack?.adFailed()
showCallBack = null // showCallBack = null
//
(adEvent as AdMaxEvent).adShowError(error) // (adEvent as AdMaxEvent).adShowError(error)
} // }
//
override fun onAdHidden(p0: MaxAd) { // override fun onAdHidden(p0: MaxAd) {
//
adState.onAdHidden() // adState.onAdHidden()
showCallBack?.close() // showCallBack?.close()
//
loadAd(activity.applicationContext, AdMaxEvent("interAd", "preload")) // loadAd(activity.applicationContext, AdMaxEvent("interAd", "preload"))
} // }
//
override fun onAdClicked(ad: MaxAd) { // override fun onAdClicked(ad: MaxAd) {
(adEvent as AdMaxEvent).clickAd(ad) // (adEvent as AdMaxEvent).clickAd(ad)
//计数 // //计数
LimitUtils.addClickNum() // LimitUtils.addClickNum()
} // }
//
//
}) // })
setRevenueListener(AdMaxEvent.EventOnPaidEventListener()) // setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
//
showAd(activity) // showAd(activity)
} // }
} // }
//
//
fun loadAd( // fun loadAd(
context: Context, // context: Context,
adEvent: AdEvent, // adEvent: AdEvent,
loadCallback: (() -> Unit)? = null // loadCallback: (() -> Unit)? = null
) { // ) {
if (!adEvent.isUnLimit) { // if (!adEvent.isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) { // if (!LimitUtils.isAdShow(AdsType.INSERT, adEvent)) {
this.showCallBack?.close(4) // this.showCallBack?.close(4)
this.showCallBack = null // this.showCallBack = null
return // return
} // }
} // }
//
if (!adState.loadingAd) { // if (!adState.loadingAd) {
adState.loadingAd = true // adState.loadingAd = true
//
adEvent.adPulStart() // adEvent.adPulStart()
//
adState.currentAd = MaxInterstitialAd(GlobalConfig.ID_MAX_INTER, context) // adState.currentAd = MaxInterstitialAd(GlobalConfig.ID_MAX_INTER, context)
adState.currentAd?.setListener(object : MaxAdListener { // adState.currentAd?.setListener(object : MaxAdListener {
//
override fun onAdDisplayed(p0: MaxAd) = Unit // override fun onAdDisplayed(p0: MaxAd) = Unit
override fun onAdHidden(p0: MaxAd) = Unit // override fun onAdHidden(p0: MaxAd) = Unit
override fun onAdClicked(p0: MaxAd) = Unit // override fun onAdClicked(p0: MaxAd) = Unit
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) = Unit // override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) = Unit
//
override fun onAdLoaded(ad: MaxAd) { // override fun onAdLoaded(ad: MaxAd) {
adState.onAdLoaded(null, adEvent) // adState.onAdLoaded(null, adEvent)
loadCallback?.invoke() // loadCallback?.invoke()
//
(adEvent as AdMaxEvent).pullAd(ad) // (adEvent as AdMaxEvent).pullAd(ad)
LimitUtils.addRequestNum() // LimitUtils.addRequestNum()
} // }
//
override fun onAdLoadFailed(ad: String, error: MaxError) { // override fun onAdLoadFailed(ad: String, error: MaxError) {
adState.onAdLoadFailed() // adState.onAdLoadFailed()
//
(adEvent as AdMaxEvent).pullAd(null, error) // (adEvent as AdMaxEvent).pullAd(null, error)
//
showCallBack?.adFailed(5) // showCallBack?.adFailed(5)
showCallBack = null // showCallBack = null
} // }
//
}) // })
adState.currentAd?.loadAd() // adState.currentAd?.loadAd()
} // }
} // }
//
//
private fun adAvailable() = ((System.currentTimeMillis() - adState.lastLoadTime) / 1000 / 60).toInt() < 30 // private fun adAvailable() = ((System.currentTimeMillis() - adState.lastLoadTime) / 1000 / 60).toInt() < 30
} //}
\ No newline at end of file \ No newline at end of file
package com.simplecleaner.app.business.ads.applovin //package com.simplecleaner.app.business.ads.applovin
//
import androidx.annotation.LayoutRes //import androidx.annotation.LayoutRes
import com.applovin.mediation.MaxAd //import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxError //import com.applovin.mediation.MaxError
import com.applovin.mediation.nativeAds.MaxNativeAdListener //import com.applovin.mediation.nativeAds.MaxNativeAdListener
import com.applovin.mediation.nativeAds.MaxNativeAdLoader //import com.applovin.mediation.nativeAds.MaxNativeAdLoader
import com.applovin.mediation.nativeAds.MaxNativeAdView //import com.applovin.mediation.nativeAds.MaxNativeAdView
import com.simplecleaner.app.GlobalConfig //import com.simplecleaner.app.GlobalConfig
import com.simplecleaner.app.business.ads.AdsType //import com.simplecleaner.app.business.ads.AdsType
import com.simplecleaner.app.business.ads.LimitUtils //import com.simplecleaner.app.business.ads.LimitUtils
import com.simplecleaner.app.business.ads.NativeParentView //import com.simplecleaner.app.business.ads.NativeParentView
import com.simplecleaner.app.business.helper.EventUtils //import com.simplecleaner.app.business.helper.EventUtils
import org.json.JSONObject //import org.json.JSONObject
import java.util.UUID //import java.util.UUID
//
/** ///**
*原生广告加载显示管理类 // *原生广告加载显示管理类
*/ // */
class MaxNativeMgr { //class MaxNativeMgr {
//
/** // /**
* 上一次的缓存成功时间 // * 上一次的缓存成功时间
*/ // */
protected var lastTime: Long = 0 // protected var lastTime: Long = 0
//
/** // /**
* 原生广告 // * 原生广告
*/ // */
private var currentAd: MaxAd? = null // private var currentAd: MaxAd? = null
private var currentLoader: MaxNativeAdLoader? = null // private var currentLoader: MaxNativeAdLoader? = null
//
//
private fun loadAd( // private fun loadAd(
adMaxEvent: AdMaxEvent, // adMaxEvent: AdMaxEvent,
parent: NativeParentView, // parent: NativeParentView,
@LayoutRes layout: Int // @LayoutRes layout: Int
) { // ) {
//
if (!LimitUtils.isAdShow(AdsType.NATIVE, adMaxEvent)) return // if (!LimitUtils.isAdShow(AdsType.NATIVE, adMaxEvent)) return
//
val reqId = UUID.randomUUID().toString() // val reqId = UUID.randomUUID().toString()
val obj = JSONObject() // val obj = JSONObject()
obj.put("req_id", reqId) // obj.put("req_id", reqId)
obj.put("ad_type", "nativeAd") // obj.put("ad_type", "nativeAd")
//
val nativeAdLoader = MaxNativeAdLoader(GlobalConfig.ID_MAX_NATIVE, parent.context) // val nativeAdLoader = MaxNativeAdLoader(GlobalConfig.ID_MAX_NATIVE, parent.context)
//
nativeAdLoader.setNativeAdListener(object : MaxNativeAdListener() { // nativeAdLoader.setNativeAdListener(object : MaxNativeAdListener() {
//
override fun onNativeAdLoaded(nativeAdView: MaxNativeAdView?, ad: MaxAd) { // override fun onNativeAdLoaded(nativeAdView: MaxNativeAdView?, ad: MaxAd) {
currentLoader = nativeAdLoader // currentLoader = nativeAdLoader
currentAd = ad // currentAd = ad
lastTime = System.currentTimeMillis() // lastTime = System.currentTimeMillis()
adMaxEvent.pullAd(ad) // adMaxEvent.pullAd(ad)
nativeAdLoader.setRevenueListener(AdMaxEvent.EventOnPaidEventListener()) // nativeAdLoader.setRevenueListener(AdMaxEvent.EventOnPaidEventListener())
show(adMaxEvent, parent, layout) // show(adMaxEvent, parent, layout)
} // }
//
override fun onNativeAdLoadFailed(adUnitId: String, error: MaxError) { // override fun onNativeAdLoadFailed(adUnitId: String, error: MaxError) {
adMaxEvent.pullAd(null, error) // adMaxEvent.pullAd(null, error)
} // }
//
override fun onNativeAdClicked(ad: MaxAd) { // override fun onNativeAdClicked(ad: MaxAd) {
//
} // }
//
}) // })
nativeAdLoader.loadAd() // nativeAdLoader.loadAd()
} // }
//
fun show( // fun show(
adMaxEvent: AdMaxEvent, // adMaxEvent: AdMaxEvent,
parent: NativeParentView, // parent: NativeParentView,
@LayoutRes layout: Int, // @LayoutRes layout: Int,
nativeCallBack: ((Any?) -> Unit)? = null // nativeCallBack: ((Any?) -> Unit)? = null
) { // ) {
if (!LimitUtils.isAdShow(AdsType.NATIVE, adMaxEvent)) { // if (!LimitUtils.isAdShow(AdsType.NATIVE, adMaxEvent)) {
currentLoader = null // currentLoader = null
currentAd = null // currentAd = null
return // return
} // }
val nativeAd = currentAd // val nativeAd = currentAd
val nativeLoader = currentLoader // val nativeLoader = currentLoader
if ((nativeAd == null || nativeLoader == null).also { // if ((nativeAd == null || nativeLoader == null).also {
if (it) { // if (it) {
val obj2 = JSONObject() // val obj2 = JSONObject()
obj2.put("reason", "no_ad") // obj2.put("reason", "no_ad")
obj2.put("ad_unit", "nativeAd") // obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_show_error", ext = obj2) // EventUtils.event("ad_show_error", ext = obj2)
} // }
} || (!adAvailable()).also { // } || (!adAvailable()).also {
if (it) { // if (it) {
val obj2 = JSONObject() // val obj2 = JSONObject()
obj2.put("ad_unit", "nativeAd") // obj2.put("ad_unit", "nativeAd")
EventUtils.event("ad_expire", ext = obj2) // EventUtils.event("ad_expire", ext = obj2)
} // }
}) { // }) {
//缓存过期了就清空 // //缓存过期了就清空
currentLoader = null // currentLoader = null
currentAd = null // currentAd = null
loadAd(AdMaxEvent("nativeAd", "preload"), parent, layout) // loadAd(AdMaxEvent("nativeAd", "preload"), parent, layout)
return // return
} // }
val obj = JSONObject() // val obj = JSONObject()
obj.put("ad_unit", "nativeAd") // obj.put("ad_unit", "nativeAd")
EventUtils.event("ad_prepare_show", ext = obj) // EventUtils.event("ad_prepare_show", ext = obj)
parent.setNativeAd(nativeLoader!!, nativeAd!!, layout) // parent.setNativeAd(nativeLoader!!, nativeAd!!, layout)
nativeCallBack?.invoke(nativeAd) // nativeCallBack?.invoke(nativeAd)
} // }
//
private fun adAvailable(): Boolean { // private fun adAvailable(): Boolean {
return ((System.currentTimeMillis() - lastTime) / 1000 / 60).toInt() < 30 // return ((System.currentTimeMillis() - lastTime) / 1000 / 60).toInt() < 30
} // }
} //}
\ No newline at end of file \ No newline at end of file
package com.simplecleaner.app.business.ads.applovin //package com.simplecleaner.app.business.ads.applovin
//
import android.app.Activity //import android.app.Activity
import android.content.Context //import android.content.Context
import com.applovin.mediation.MaxAd //import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener //import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError //import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxAppOpenAd //import com.applovin.mediation.ads.MaxAppOpenAd
import com.simplecleaner.app.GlobalConfig //import com.simplecleaner.app.GlobalConfig
import com.simplecleaner.app.business.ads.AdEvent //import com.simplecleaner.app.business.ads.AdEvent
import com.simplecleaner.app.business.ads.AdState //import com.simplecleaner.app.business.ads.AdState
import com.simplecleaner.app.business.ads.AdsShowCallBack //import com.simplecleaner.app.business.ads.AdsShowCallBack
import com.simplecleaner.app.business.ads.AdsType //import com.simplecleaner.app.business.ads.AdsType
import com.simplecleaner.app.business.ads.LimitUtils //import com.simplecleaner.app.business.ads.LimitUtils
//
/** ///**
* 开屏广告加载显示管理类 // * 开屏广告加载显示管理类
*/ // */
class MaxOpenMgr { //class MaxOpenMgr {
//
private val adState = AdState<MaxAppOpenAd>() // private val adState = AdState<MaxAppOpenAd>()
private var showCallBack: AdsShowCallBack? = null // private var showCallBack: AdsShowCallBack? = null
//
fun show(activity: Activity, isUnLimit: Boolean, adEvent: AdEvent, showCallBack: AdsShowCallBack?) { // fun show(activity: Activity, isUnLimit: Boolean, adEvent: AdEvent, showCallBack: AdsShowCallBack?) {
if (activity.isFinishing || activity.isDestroyed) { // if (activity.isFinishing || activity.isDestroyed) {
return // return
} // }
//
if (showCallBack != null) { // if (showCallBack != null) {
this.showCallBack = showCallBack // this.showCallBack = showCallBack
adEvent.adPrepareShow() // adEvent.adPrepareShow()
} // }
//
if (!adState.loadingAd) { // if (!adState.loadingAd) {
//
if (!isUnLimit) { // if (!isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.OPEN, adEvent)) { // if (!LimitUtils.isAdShow(AdsType.OPEN, adEvent)) {
showCallBack?.failed() // showCallBack?.failed()
return // return
} // }
if (LimitUtils.isIntervalLimited(adEvent)) { // if (LimitUtils.isIntervalLimited(adEvent)) {
showCallBack?.failed() // showCallBack?.failed()
return // return
} // }
} // }
//
if (!adAvailable() || adState.currentAd == null) { // if (!adAvailable() || adState.currentAd == null) {
loadAd(activity, isUnLimit, adEvent) // loadAd(activity, isUnLimit, adEvent)
return // return
} // }
//
if (adState.currentAd?.isReady != true) { // if (adState.currentAd?.isReady != true) {
loadAd(activity, isUnLimit, adEvent) // loadAd(activity, isUnLimit, adEvent)
return // return
} // }
showReadyAd(activity, adEvent) // showReadyAd(activity, adEvent)
} // }
//
//
} // }
//
//
private fun showReadyAd(activity: Activity, adEvent: AdEvent) { // private fun showReadyAd(activity: Activity, adEvent: AdEvent) {
adState.currentAd?.run { // adState.currentAd?.run {
setListener(object : MaxAdListener { // setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) { // override fun onAdLoaded(p0: MaxAd) {
//
} // }
//
override fun onAdDisplayed(ad: MaxAd) { // override fun onAdDisplayed(ad: MaxAd) {
adState.onAdDisplayed() // adState.onAdDisplayed()
showCallBack?.show() // showCallBack?.show()
//
LimitUtils.addDisplayNum() // LimitUtils.addDisplayNum()
(adEvent as AdMaxEvent).showAd(ad, activity::class.simpleName) // (adEvent as AdMaxEvent).showAd(ad, activity::class.simpleName)
} // }
//
override fun onAdHidden(p0: MaxAd) { // override fun onAdHidden(p0: MaxAd) {
adState.onAdHidden() // adState.onAdHidden()
showCallBack?.close() // showCallBack?.close()
showCallBack = null // showCallBack = null
//
loadAd(activity.applicationContext, false, AdMaxEvent("openAd", "preload")) // loadAd(activity.applicationContext, false, AdMaxEvent("openAd", "preload"))
} // }
//
override fun onAdClicked(ad: MaxAd) { // override fun onAdClicked(ad: MaxAd) {
(adEvent as AdMaxEvent).clickAd(ad) // (adEvent as AdMaxEvent).clickAd(ad)
//计数 // //计数
LimitUtils.addClickNum() // LimitUtils.addClickNum()
} // }
//
override fun onAdLoadFailed(p0: String, p1: MaxError) { // override fun onAdLoadFailed(p0: String, p1: MaxError) {
//
} // }
//
override fun onAdDisplayFailed(p0: MaxAd, error: MaxError) { // override fun onAdDisplayFailed(p0: MaxAd, error: MaxError) {
adState.onAdDisplayFailed() // adState.onAdDisplayFailed()
showCallBack?.adFailed() // showCallBack?.adFailed()
showCallBack = null // showCallBack = null
adEvent.adShowError(error) // adEvent.adShowError(error)
} // }
//
}) // })
//
showAd() // showAd()
} // }
} // }
//
fun loadAd(context: Context, isUnLimit: Boolean, adEvent: AdEvent) { // fun loadAd(context: Context, isUnLimit: Boolean, adEvent: AdEvent) {
//
if (!isUnLimit) { // if (!isUnLimit) {
if (!LimitUtils.isAdShow(AdsType.OPEN, adEvent)) { // if (!LimitUtils.isAdShow(AdsType.OPEN, adEvent)) {
this.showCallBack?.close() // this.showCallBack?.close()
this.showCallBack = null // this.showCallBack = null
return // return
} // }
} // }
//
if (!adState.loadingAd) { // if (!adState.loadingAd) {
adState.loadingAd = true // adState.loadingAd = true
//
adEvent.adPulStart() // adEvent.adPulStart()
//
adState.currentAd = MaxAppOpenAd(GlobalConfig.ID_MAX_OPEN, context) // adState.currentAd = MaxAppOpenAd(GlobalConfig.ID_MAX_OPEN, context)
adState.currentAd?.setListener(object : MaxAdListener { // adState.currentAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(ad: MaxAd) { // override fun onAdLoaded(ad: MaxAd) {
adState.onAdLoaded(null, adEvent) // adState.onAdLoaded(null, adEvent)
(adEvent as AdMaxEvent).pullAd(ad) // (adEvent as AdMaxEvent).pullAd(ad)
LimitUtils.addRequestNum() // LimitUtils.addRequestNum()
} // }
//
override fun onAdDisplayed(p0: MaxAd) { // override fun onAdDisplayed(p0: MaxAd) {
//
} // }
//
override fun onAdHidden(p0: MaxAd) { // override fun onAdHidden(p0: MaxAd) {
//
} // }
//
override fun onAdClicked(p0: MaxAd) { // override fun onAdClicked(p0: MaxAd) {
} // }
//
override fun onAdLoadFailed(p0: String, error: MaxError) { // override fun onAdLoadFailed(p0: String, error: MaxError) {
adState.onAdLoadFailed() // adState.onAdLoadFailed()
showCallBack?.adFailed() // showCallBack?.adFailed()
showCallBack = null // showCallBack = null
(adEvent as AdMaxEvent).pullAd(null, error) // (adEvent as AdMaxEvent).pullAd(null, error)
} // }
//
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) { // override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
//
} // }
//
}) // })
adState.currentAd?.loadAd() // adState.currentAd?.loadAd()
} // }
} // }
//
//
fun adAvailable() = ((System.currentTimeMillis() - adState.lastLoadTime) / 1000 / 60).toInt() < 30 // fun adAvailable() = ((System.currentTimeMillis() - adState.lastLoadTime) / 1000 / 60).toInt() < 30
} //}
\ No newline at end of file \ No newline at end of file
...@@ -12,8 +12,10 @@ import com.simplecleaner.app.bean.FeatureBean.Companion.SCREENSHOT_CLEAN ...@@ -12,8 +12,10 @@ import com.simplecleaner.app.bean.FeatureBean.Companion.SCREENSHOT_CLEAN
import com.simplecleaner.app.bean.FeatureBean.Companion.SIMILAR_PHOTOS import com.simplecleaner.app.bean.FeatureBean.Companion.SIMILAR_PHOTOS
import com.simplecleaner.app.bean.FeatureBean.Companion.UNINSTALL_APP import com.simplecleaner.app.bean.FeatureBean.Companion.UNINSTALL_APP
import com.simplecleaner.app.business.ads.AdsMgr import com.simplecleaner.app.business.ads.AdsMgr
import com.simplecleaner.app.business.ads.AdsShowCallBack
import com.simplecleaner.app.databinding.ActivityGuideExperienceBinding import com.simplecleaner.app.databinding.ActivityGuideExperienceBinding
import com.simplecleaner.app.ui.dialog.StoragePermissionDialog import com.simplecleaner.app.ui.dialog.StoragePermissionDialog
import com.simplecleaner.app.ui.main.MainActivity
import com.simplecleaner.app.utils.PermissionUtils.requestStoragePermission import com.simplecleaner.app.utils.PermissionUtils.requestStoragePermission
class GuideExperienceActivity : BaseActivity<ActivityGuideExperienceBinding>( class GuideExperienceActivity : BaseActivity<ActivityGuideExperienceBinding>(
...@@ -29,7 +31,11 @@ class GuideExperienceActivity : BaseActivity<ActivityGuideExperienceBinding>( ...@@ -29,7 +31,11 @@ class GuideExperienceActivity : BaseActivity<ActivityGuideExperienceBinding>(
} }
override fun handleBackCallBack() { override fun handleBackCallBack() {
AdsMgr.showInsert(this, false, object : AdsShowCallBack() {
override fun next() {
goToAc(MainActivity::class.java)
}
})
} }
override fun initListener() { override fun initListener() {
......
//package com.base.appzxhy.ui.malware
//
//import com.base.appzxhy.MyApplication
//import com.trustlook.sdk.cloudscan.CloudScanClient
//import com.trustlook.sdk.data.Region
//
///**
// *Create by SleepDog on 2025-01-24
// */
//object CloudScan {
// val scanClient by lazy(LazyThreadSafetyMode.NONE) {
// CloudScanClient.Builder(MyApplication.appContext)
// // 设置服务地区,
//// 海外地区设置:Region.INTL,百度用户设置:Region.BAIDU
// .setRegion(Region.INTL)
// // 设置连接超时时长,单位为毫秒
// .setConnectionTimeout(30000)
// //设置传输超时时长,单位为毫秒
// .setSocketTimeout(30000)
// .build()
// }
//}
\ No newline at end of file
//package com.base.appzxhy.ui.malware
//
//import android.app.Activity
//import android.view.LayoutInflater
//import androidx.appcompat.app.AlertDialog
//import androidx.constraintlayout.widget.ConstraintLayout
//import com.base.appzxhy.R
//import com.base.appzxhy.business.ads.AdsMgr
//import com.base.appzxhy.databinding.DialogErrBinding
//
//class ErrorScanDialog(
// val activity: Activity
//) {
// val dialog = AlertDialog.Builder(activity).create()
// val binding = DialogErrBinding.inflate(LayoutInflater.from(activity))
//
// var action: (() -> Unit)? = null
//
// fun showDialog() {
// dialog.setView(binding.root)
// dialog.setCanceledOnTouchOutside(false)
// dialog.show()
//
// val params = dialog.window?.attributes
//// params?.width = ConstraintLayout.LayoutParams.MATCH_PARENT
// params?.width = activity.resources.getDimensionPixelSize(R.dimen.dp_295)
// params?.height = ConstraintLayout.LayoutParams.WRAP_CONTENT
//// params?.gravity = Gravity.BOTTOM
// dialog.window?.attributes = params
// dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
//
// AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom)
// binding.tvSure.setOnClickListener {
// dialog.dismiss()
// action?.invoke()
// }
// }
//}
\ No newline at end of file
//package com.base.appzxhy.ui.malware
//
//import android.annotation.SuppressLint
//import android.content.Intent
//import android.content.pm.PackageManager
//import android.view.LayoutInflater
//import android.view.View
//import android.view.ViewGroup
//import androidx.appcompat.content.res.AppCompatResources
//import androidx.core.content.ContextCompat
//import androidx.lifecycle.lifecycleScope
//import androidx.recyclerview.widget.LinearLayoutManager
//import androidx.recyclerview.widget.RecyclerView
//import com.base.appzxhy.R
//import com.base.appzxhy.base.BaseActivity
//import com.base.appzxhy.bean.AppInfoBean
//import com.base.appzxhy.business.ads.AdsMgr
//import com.base.appzxhy.business.ads.AdsShowCallBack
//import com.base.appzxhy.databinding.ActivityMalwareCleanBinding
//import com.base.appzxhy.databinding.ItemMalwareCleanBinding
//import com.base.appzxhy.utils.FileUtils
//import com.trustlook.sdk.cloudscan.CloudScanListener
//import com.trustlook.sdk.data.AppInfo
//import kotlinx.coroutines.Dispatchers
//import kotlinx.coroutines.delay
//import kotlinx.coroutines.launch
//import kotlinx.coroutines.withContext
//import kotlin.random.Random
//import androidx.core.net.toUri
//import androidx.core.view.ViewCompat
//import androidx.core.view.WindowInsetsCompat
//import com.base.appzxhy.BuildConfig
//import com.base.appzxhy.base.LottieEnum
//import com.base.appzxhy.bean.FeatureBean.Companion.ANTIVIRUS
//import com.base.appzxhy.bean.FeatureBean.Companion.JUNK_CLEAN
//import com.base.appzxhy.bean.FeatureBean.Companion.setFunctionTodayUsed
//import com.base.appzxhy.ui.cleanresult.CleanResultActivity
//import com.base.appzxhy.utils.LogEx
//
//
//class MalwareCleanActivity : BaseActivity<ActivityMalwareCleanBinding>(ActivityMalwareCleanBinding::inflate) {
//
// private var appList = mutableListOf<AppInfoBean>()
// private val adapter by lazy(LazyThreadSafetyMode.NONE) {
// class ViewHolder(val binding: ItemMalwareCleanBinding) :
// RecyclerView.ViewHolder(binding.root)
//
// object : RecyclerView.Adapter<ViewHolder>() {
// override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
// val binding = ItemMalwareCleanBinding.inflate(
// LayoutInflater.from(parent.context),
// parent,
// false
// )
// return ViewHolder(binding)
// }
//
// override fun getItemCount(): Int = appList.size
//
// override fun onBindViewHolder(holder: ViewHolder, position: Int) {
// val item = appList[position]
// holder.binding.ivIcon.setImageDrawable(item.icon)
// holder.binding.tvName.text = item.appName
// holder.binding.tvLevel.text = getLevel(item.score ?: 0)
// holder.binding.viewLine.visibility =
// if (position == itemCount - 1) View.GONE else View.VISIBLE
// holder.itemView.setOnClickListener {
// item.isSelected = !item.isSelected
// AdsMgr.showInsert(this@MalwareCleanActivity, showCallBack = object : AdsShowCallBack() {
// override fun next() {
// uninstall(0, listOf(item))
// }
// })
// }
// }
// }
//
// }
//
// private fun getLevel(score: Int): String {
// return if (score <= 5) {
// "safe"
// } else if (score in 6..7) {
// "Risk"
// } else {
// "malware"
// }
// }
//
// @SuppressLint("NotifyDataSetChanged")
// private fun uninstall(position: Int, list: List<AppInfoBean>) {
// val packageName = list[position].packageName
// val intent = Intent(Intent.ACTION_DELETE, "package:$packageName".toUri())
// launcher.launch(intent) {
// if (isUninstall(packageName)) {
// appList.removeIf {
// it.packageName == packageName
// }
// runOnUiThread {
// adapter.notifyDataSetChanged()
// updateUninstall()
// }
// }
// if (position < list.size - 1) uninstall(position + 1, list)
// else {
// updateView(false)
// }
// }
// }
//
// private fun isUninstall(packageName: String): Boolean {
// val intent = packageManager.getLaunchIntentForPackage(packageName)
// return intent == null
// }
//
// @SuppressLint("SetTextI18n")
// private fun updateUninstall() {
// val list = appList.filter { it.isSelected }
// val size = if (list.isEmpty()) "" else " ${list.size} ${getString(R.string.apps)}"
// }
//
// @SuppressLint("NotifyDataSetChanged")
// private fun malwareClean(list: List<AppInfoBean>) {
// lifecycleScope.launch(Dispatchers.Default) {
// val installApps = mutableListOf<AppInfoBean>()
// list.forEach {
// if (it.isInstall == true) installApps.add(it)
// else {
// it.apkPath?.also {
// launch(Dispatchers.IO) {
// FileUtils.deleteFile(it)
// }
// }
// appList.remove(it)
// }
// }
//
// if (installApps.isNotEmpty()) {
// uninstall(0, installApps)
// } else {
// withContext(Dispatchers.Main) {
// adapter.notifyDataSetChanged()
// updateUninstall()
// }
// }
// }
// }
//
// private var isScanning = false
// private fun initData(isScan: Boolean = isScanning) {
// if (isScan) return
// isScanning = true
// CloudScan.scanClient.startQuickScan(object : CloudScanListener() {
// override fun onScanStarted() {
// LogEx.logDebug(TAG, "onScanStarted")
// }
//
// override fun onScanCanceled() {
// LogEx.logDebug(TAG, "onScanCanceled")
// scanFinish()
// }
//
// override fun onScanProgress(p0: Int, p1: Int, p2: AppInfo?) {
// LogEx.logDebug(TAG, "onScanProgress")
// }
//
// @SuppressLint("NotifyDataSetChanged")
// override fun onScanFinished(dataList: MutableList<AppInfo>?) {
//
// //Log.e("CloudScan", "onScanFinished")
// scanFinishData(dataList)
// }
//
// override fun onScanError(p0: Int, p1: String?) {
// LogEx.logDebug(TAG, "onScanError")
// isScanning = false
// scanError()
// }
//
// override fun onScanInterrupt() {
// isScanning = false
// scanError()
// }
// })
// }
//
// fun scanError() {
// if (BuildConfig.DEBUG) return
// val dialog = ErrorScanDialog(this@MalwareCleanActivity)
// dialog.action = {
// finish()
// }
// dialog.showDialog()
// }
//
// @SuppressLint("NotifyDataSetChanged")
// fun scanFinishData(dataList: MutableList<AppInfo>?) {
//
//
// lifecycleScope.launch(Dispatchers.Default) {
// val realList = mutableListOf<AppInfoBean>()
// dataList?.forEach {
// if (!it.isSystemApp && (it.score > 5 || BuildConfig.DEBUG)) {
// var isInstall: Boolean
// // Log.e("CloudScan", "${it.source} ${it.apkPath} ${it.toJSON(this@MalwareCleanActivity)}")
// val icon = try {
// val res = packageManager.getApplicationIcon(it.packageName)
// isInstall = true
// res
// } catch (e: PackageManager.NameNotFoundException) {
// isInstall = false
// val info = packageManager.getPackageArchiveInfo(
// it.apkPath,
// PackageManager.GET_ACTIVITIES
// )
// if (info != null) {
// info.applicationInfo?.let { packageManager.getApplicationIcon(it) }
// } else {
// AppCompatResources.getDrawable(this@MalwareCleanActivity, R.drawable.icon_apk)
// }
// }
// realList.add(
// AppInfoBean(
// it.appName,
// icon!!,
// it.packageName,
// false,
// isInstall,
// it.score,
// it.apkPath
// )
// )
//// withContext(Dispatchers.Main) {
//// adapter.notifyItemInserted(appList.size)
//// }
// }
// }
//
// if (BuildConfig.DEBUG) {
// realList.add(
// AppInfoBean(
// "AntiVirus Phone Manager",
// AppCompatResources.getDrawable(this@MalwareCleanActivity, R.drawable.icon_apk)!!,
// "com.tool.fast.phone",
// false,
// true,
// 5,
// "apkPath/apkPath/apkPath"
// )
// )
// }
//
// withContext(Dispatchers.Main) {
// val durationTime = Random.nextLong(3000, 3500)
// delay(durationTime)
// appList.clear()
// appList.addAll(realList)
// scanFinish()
// adapter.notifyDataSetChanged()
// updateView(true)
//
// }
// }
// }
//
// private fun scanFinish() {
// isScanning = false
// stopAnimation()
// }
//
// fun stopAnimation() {
// binding.layoutAnimation.lottieAnimation.clearAnimation()
// binding.layoutAnimation.root.visibility = View.GONE
// isBackDisable = false
// }
//
// @SuppressLint("SetTextI18n")
// private fun updateView(jump: Boolean) {
// binding.ivLogo.visibility = if (appList.isEmpty()) View.GONE else View.VISIBLE
// binding.tvCount.visibility = if (appList.isEmpty()) View.GONE else {
// binding.tvCount.text = getString(R.string.issue, appList.size.toString())
// View.VISIBLE
// }
// binding.tvUnit.visibility = if (appList.isEmpty()) View.GONE else View.VISIBLE
// binding.rvMalware.visibility = if (appList.isEmpty()) View.GONE else View.VISIBLE
// binding.ivEmpty.visibility = if (appList.isEmpty()) View.VISIBLE else View.GONE
//
// if (appList.isEmpty()) {
// if (jump) {
// CleanResultActivity.functionKey = ANTIVIRUS
// CleanResultActivity.titleName = getString(R.string.malware_scan)
// goToAc(CleanResultActivity::class.java)
// }
// } else {
// AdsMgr.showNative(binding.flAd, R.layout.layout_admob_native_custom)
// }
// }
//
// override fun useDefaultImmersive() {
// ViewCompat.setOnApplyWindowInsetsListener(binding.root) { v, insets ->
// val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars())
// v.setPadding(systemBars.left, 0, systemBars.right, systemBars.bottom)
// binding.clTop.setPadding(0, systemBars.top, 0, 0)
// insets
// }
// }
//
// override fun initView() {
// super.initView()
// showAdAnimation(LottieEnum.MALWARE_SCAN)
// binding.rvMalware.adapter = adapter
// binding.rvMalware.layoutManager = LinearLayoutManager(this)
//
// initData()
//
// if (BuildConfig.DEBUG) {
// scanFinishData(null)
// }
//
// setFunctionTodayUsed(ANTIVIRUS)
//
// }
//
// override fun initListener() {
// super.initListener()
// binding.flBack.setOnClickListener { onBackPressedDispatcher.onBackPressed() }
// }
//
// override fun handleBackCallBack() {
// super.handleBackCallBack()
// }
//}
\ No newline at end of file
//package com.base.appzxhy.ui.malware
//
//import android.app.Activity
//import android.view.LayoutInflater
//import androidx.appcompat.app.AlertDialog
//import com.base.appzxhy.databinding.DialogMalwareTipBinding
//import com.base.appzxhy.utils.AppPreferences
//
////是否已经同意
//var malwareTipAgree = false
// get() {
// return AppPreferences.getInstance().getBoolean("malwareTipAgree", field)
// }
// set(value) {
// field = value
// AppPreferences.getInstance().put("malwareTipAgree", value, true)
// }
//
//class MalwareDialog(
// val activity: Activity
//) {
//
// val dialog = AlertDialog.Builder(activity).create()
// val binding = DialogMalwareTipBinding.inflate(LayoutInflater.from(activity))
//
// var action: ((flag: Boolean) -> Unit)? = null
//
// fun showDialog() {
//
// if (malwareTipAgree) {
// action?.invoke(true)
// return
// }
//
// dialog.setView(binding.root)
// dialog.setCanceledOnTouchOutside(false)
// dialog.show()
//
// val params = dialog.window?.attributes
//// params?.width = ConstraintLayout.LayoutParams.MATCH_PARENT
//// params?.width = activity.resources.getDimensionPixelSize(R.dimen.dp_295)
//// params?.height = ConstraintLayout.LayoutParams.WRAP_CONTENT
//// params?.gravity = Gravity.BOTTOM
// dialog.window?.attributes = params
// dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)
//
// var flag = false
//
// binding.tvCancel.setOnClickListener {
// dialog.dismiss()
// }
// binding.tvSure.setOnClickListener {
// dialog.dismiss()
// flag = true
// malwareTipAgree = true
// action?.invoke(true)
// }
//
// dialog.setOnDismissListener {
// action?.invoke(flag)
// }
// }
//}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="which_type_do_you_want_to_clean">Welchen Typ möchten Sie bereinigen?</string> <string name="which_type_do_you_want_to_clean">Welchen Typ möchten Sie bereinigen?</string>
<string name="consent"> <string name="consent">Während der Nutzung dieser App benötigen wir folgende Informationen: Handymodell, Hersteller, Android-Version, App-Versionsnummer, App-Versionsname, Paketname, Google-Werbe-ID, Zeitzone, Handy-Fotoalbum, leere Ordner, APK-Dateien, temporäre Dateien, Protokolldateien, Akkustand, Standby-Zeit, Akkutemperatur, Akkuspannung, Akkutechnologie, Akkukapazität, Akkustrom, durchschnittlicher Akkustrom. Wir behandeln Ihre Daten streng nach geltenden Gesetzen. Alle gesammelten Daten werden zweckgebunden verwendet, um App-Funktionen zu gewährleisten und Services zu verbessern. Wir ergreifen alle notwendigen Maßnahmen zum Schutz Ihrer Daten. Ihr Datenschutz hat für uns höchste Priorität.</string>
Während der Nutzung dieser App benötigen wir folgende Informationen: Handymodell, Hersteller, Android-Version, App-Versionsnummer, App-Versionsname, Paketname, Google-Werbe-ID, Zeitzone, Handy-Fotoalbum, leere Ordner, APK-Dateien, temporäre Dateien, Protokolldateien, Akkustand, Standby-Zeit, Akkutemperatur, Akkuspannung, Akkutechnologie, Akkukapazität, Akkustrom, durchschnittlicher Akkustrom.
Wir behandeln Ihre Daten streng nach geltenden Gesetzen. Alle gesammelten Daten werden zweckgebunden verwendet, um App-Funktionen zu gewährleisten und Services zu verbessern. Wir ergreifen alle notwendigen Maßnahmen zum Schutz Ihrer Daten. Ihr Datenschutz hat für uns höchste Priorität.
</string>
<string name="junk_clean">Junk-Bereinigung</string> <string name="junk_clean">Junk-Bereinigung</string>
<string name="battery_info">Akkustatus</string> <string name="battery_info">Akkustatus</string>
<string name="screenshot_clean">Screenshot-Bereinigung</string> <string name="screenshot_clean">Screenshot-Bereinigung</string>
...@@ -15,7 +10,6 @@ ...@@ -15,7 +10,6 @@
<string name="similar_photos">Doppelte Fotos</string> <string name="similar_photos">Doppelte Fotos</string>
<string name="home">Start</string> <string name="home">Start</string>
<string name="settings">Einstellungen</string> <string name="settings">Einstellungen</string>
<string name="battery_status">Akkustatus</string> <string name="battery_status">Akkustatus</string>
<string name="temperature">Temperatur</string> <string name="temperature">Temperatur</string>
<string name="voltage">Spannung</string> <string name="voltage">Spannung</string>
...@@ -24,11 +18,9 @@ ...@@ -24,11 +18,9 @@
<string name="normal">Normal</string> <string name="normal">Normal</string>
<string name="battery_type">Akkutyp</string> <string name="battery_type">Akkutyp</string>
<string name="battery_capacity">Akkukapazität</string> <string name="battery_capacity">Akkukapazität</string>
<string name="please_wait">Bitte warten</string> <string name="please_wait">Bitte warten</string>
<string name="power">Ladestand</string> <string name="power">Ladestand</string>
<string name="charging">Wird geladen</string> <string name="charging">Wird geladen</string>
<string name="found">Gefunden</string>
<string name="clean_tips">Bereinigung löscht keine persönlichen Daten</string> <string name="clean_tips">Bereinigung löscht keine persönlichen Daten</string>
<string name="clean">Bereinigen</string> <string name="clean">Bereinigen</string>
<string name="go_it">Verstanden</string> <string name="go_it">Verstanden</string>
...@@ -46,7 +38,6 @@ ...@@ -46,7 +38,6 @@
<string name="image">Bild</string> <string name="image">Bild</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">Andere Typen</string> <string name="other_types">Andere Typen</string>
<string name="all_time">Gesamter Zeitraum</string> <string name="all_time">Gesamter Zeitraum</string>
<string name="week_1">1 Woche</string> <string name="week_1">1 Woche</string>
<string name="month_1">1 Monat</string> <string name="month_1">1 Monat</string>
...@@ -74,19 +65,9 @@ ...@@ -74,19 +65,9 @@
<string name="version">Version</string> <string name="version">Version</string>
<string name="thank_you_for_using_app">Danke für die Nutzung von %s!</string> <string name="thank_you_for_using_app">Danke für die Nutzung von %s!</string>
<string name="submit">ABSENDEN</string> <string name="submit">ABSENDEN</string>
<string name="guide_tip_1">Junk entfernen, Geschwindigkeit steigern. Mit einem Klick Speicher freigeben.</string>
<string name="guide_tip_1"> <string name="guide_tip_2">Fotos, Videos und Audiodateien bereinigen für mehr Platz und Ordnung.</string>
Junk entfernen, Geschwindigkeit steigern. Mit einem Klick Speicher freigeben. <string name="guide_tip_3">Leistungsstarke Scanfunktion für umfassenden Schutz. Sicherheit für Ihr Gerät.</string>
</string>
<string name="guide_tip_2">
Fotos, Videos und Audiodateien bereinigen für mehr Platz und Ordnung.
</string>
<string name="guide_tip_3">
Leistungsstarke Scanfunktion für umfassenden Schutz. Sicherheit für Ihr Gerät.
</string>
<string name="next">Weiter</string> <string name="next">Weiter</string>
<string name="sure">Bestätigen</string> <string name="sure">Bestätigen</string>
<string name="exit_junk_clean">Junk-Bereinigung beenden?</string> <string name="exit_junk_clean">Junk-Bereinigung beenden?</string>
...@@ -110,10 +91,8 @@ ...@@ -110,10 +91,8 @@
<string name="powered_by_trustlook">Powered by Trustlook</string> <string name="powered_by_trustlook">Powered by Trustlook</string>
<string name="malware_recommended">Für genauere Ergebnisse Internetverbindung empfohlen</string> <string name="malware_recommended">Für genauere Ergebnisse Internetverbindung empfohlen</string>
<string name="notification_tips">Aktivieren Sie Benachrichtigungen für wichtige Hinweise.</string> <string name="notification_tips">Aktivieren Sie Benachrichtigungen für wichtige Hinweise.</string>
<string name="don_t_miss_important_tips">Wichtige Hinweise nicht verpassen</string>
<string name="select_a_language">Sprache wählen</string> <string name="select_a_language">Sprache wählen</string>
<string name="get_started">Loslegen</string> <string name="get_started">Loslegen</string>
<string name="loading">Wird geladen...</string>
<string name="battery">Akku</string> <string name="battery">Akku</string>
<string name="estimated_battery">Voraussichtliche Akkulaufzeit</string> <string name="estimated_battery">Voraussichtliche Akkulaufzeit</string>
<string name="electric_current">Stromstärke</string> <string name="electric_current">Stromstärke</string>
...@@ -126,4 +105,39 @@ ...@@ -126,4 +105,39 @@
<string name="notify_screenshot">Screenshots bereinigen für mehr Platz!</string> <string name="notify_screenshot">Screenshots bereinigen für mehr Platz!</string>
<string name="notify_photo_compression">Fotos komprimieren für mehr Speicherplatz!</string> <string name="notify_photo_compression">Fotos komprimieren für mehr Speicherplatz!</string>
<string name="ads_are_about_to_be_shown_s">Werbung wird in (%1$s Sek.) angezeigt</string> <string name="ads_are_about_to_be_shown_s">Werbung wird in (%1$s Sek.) angezeigt</string>
<string name="by_continuing_">Durch Fortfahren stimmen Sie den\u0020</string>
<string name="thank_you_very_much">Vielen Dank, dass Sie sich die Zeit genommen haben, uns zu bewerten.</string>
<string name="view">Anzeigen</string>
<string name="content_not_found">Inhalt nicht gefunden</string>
<string name="uninstall_app">App deinstallieren</string>
<string name="ok">OK</string>
<string name="size">Größe</string>
<string name="install_time">Installationszeit</string>
<string name="app_function_experience_tip">%s ist ein fortschrittlicher Reiniger für Android-Geräte, um Mobiltelefone zu bereinigen. Die Reinigungs-App kann leere Dateien, Protokolldateien, veraltete APKs, temporäre Dateien, ähnliche Bilder und große Dateien bereinigen. Sie kann auch Batterieinformationen anzeigen, Apps deinstallieren und Bilder komprimieren.</string>
<string name="experience_it_immediately">Sofort ausprobieren</string>
<string name="screenshot">Screenshot</string>
<string name="exit_uninstall_app_content">App-Deinstallation beenden? Ungenutzte Anwendungen können Speicherplatz belegen.</string>
<string name="notify_uninstall_app">Entfernen Sie ungenutzte Apps, um Speicherplatz freizugeben.</string>
<string name="quick_clean">Schnellbereinigung</string>
<string name="scan_completed">Scan abgeschlossen</string>
<string name="turn_on_notification">Benachrichtigung aktivieren</string>
<string name="redundant_files_found">Überflüssige Dateien gefunden</string>
<string name="found_f">Gefunden: %1$s</string>
<string name="involve_ad">Dieser Vorgang kann Werbung enthalten.</string>
<string name="consent_required">Zustimmung erforderlich</string>
<string name="start">Start</string>
<string name="privacy_policy">Datenschutzrichtlinie</string>
<string name="photo">Foto</string>
<string name="audio">Audio</string>
<string name="document">Dokument</string>
<string name="video">Video</string>
<string name="continue_">Fortfahren</string>
<string name="open_settings">Einstellungen öffnen</string>
<string name="storage_permission_title">Speicherberechtigungen benötigt</string>
<string name="storage_permission_content">Zulassen, dass %s auf die Berechtigung „Zugriff auf alle Dateien“ zugreift, um Dateien auf Ihrem Gerät zu verwalten?</string>
<string name="large_file">Große Dateien</string>
<string name="exit_uninstall_app">App-Deinstallation beenden</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <resources xmlns:tools="http://schemas.android.com/tools">
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <string name="app_name" translatable="false">Simple Cleaner</string>
<string name="facebook_app_id" translatable="false">4512448902756291</string>
<string name="mb_10" translatable="false">10 MB</string>
<string name="mb_20" translatable="false">20 MB</string>
<string name="mb_50" translatable="false">50 MB</string>
<string name="mb_100" translatable="false">100 MB</string>
<string name="mb_500" translatable="false">500 MB</string>
<string name="which_type_do_you_want_to_clean">Which type do you want to clean?</string>
<string name="consent">During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package name,Google Ad ID,Mobile phone local time zone,Mobile phone photo album, empty folders, apk files, temp files, log files,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery Please rest assured that we will handle your information in strict accordance with relevant laws and regulations. All the information we collect will be used reasonably to ensure the normal operation and service improvement of the APP, and we will take all necessary measures to protect the security of your personal information. Your privacy is of utmost importance to us.</string>
<string name="junk_clean">Junk Clean</string>
<string name="battery_info">Battery Info</string>
<string name="screenshot_clean">Screenshot Clean</string>
<string name="large_file_clean">Large File Clean</string>
<string name="photo_compression">Photo Compression</string>
<string name="similar_photos">Similar Photos</string>
<string name="home">Home</string>
<string name="settings">Settings</string>
<string name="battery_status">Battery status</string>
<string name="temperature">Temperature</string>
<string name="voltage">Voltage</string>
<string name="health">Health</string>
<string name="good">Good</string>
<string name="normal">Normal</string>
<string name="battery_type">Battery Type</string>
<string name="battery_capacity">Battery Capacity</string>
<string name="please_wait">Please wait</string>
<string name="power">Power</string>
<string name="charging">Charging</string>
<string name="clean_tips">Clean Up doesn\'t Delete Your Personal Data</string>
<string name="clean">Clean</string>
<string name="go_it">Go it</string>
<string name="empty_folder">Empty Folder</string>
<string name="apk_files">Apk Files</string>
<string name="temp_files">Temp Files</string>
<string name="logs_files">Logs Files</string>
<string name="cleaned_up">Cleaned Up</string>
<string name="cleaned_up_content">Cleaned up other data to free up more space</string>
<string name="result_junk_clean">Clean up unnecessary junk files!</string>
<string name="clean_now">Clean Now</string>
<string name="all_types">All Types</string>
<string name="delete">Delete</string>
<string name="other_than">Other than</string>
<string name="image">Image</string>
<string name="apk">Apk</string>
<string name="other_types">Other Types</string>
<string name="all_time">All time</string>
<string name="week_1">1 week</string>
<string name="month_1">1 month</string>
<string name="month_3">3 month</string>
<string name="month_6">6 month</string>
<string name="year_1">1 year</string>
<string name="larger_than">Larger than</string>
<string name="confirm">Confirm</string>
<string name="confirm_content">The original photos will be replaced by the compressed ones</string>
<string name="cancel">Cancel</string>
<string name="delete_title">Sure to delete?</string>
<string name="delete_content">Selected files cannot be recovered after deletion. Continue anyway?</string>
<string name="screenshots_totally">Screenshots totally</string>
<string name="select_all">Select All</string>
<string name="auto_select">Auto Select</string>
<string name="occupies">Occupies</string>
<string name="compress">Compress</string>
<string name="wait_a_moment">Wait a moment</string>
<string name="compress_all">Compress All</string>
<string name="best_quality_photo">Best quality photo</string>
<string name="most_space_saved">Most space saved</string>
<string name="clean_junk">Clean Junk</string>
<string name="already_saved_for_you">Already saved for you</string>
<string name="rate_us">Rate us</string>
<string name="version">Version</string>
<string name="thank_you_for_using_app">Thank you for using\n %s!</string>
<string name="submit">Submit</string>
<string name="guide_tip_1">Clean up clutter to unlock more space and keep your phone running smoothly.</string>
<string name="guide_tip_2">Quickly clear junk files and free up valuable storage with just a few taps.</string>
<string name="guide_tip_3">Clean photos,videos,and audio files to save space and keep your phone tidy.</string>
<string name="next">Next</string>
<string name="sure">Sure</string>
<string name="exit_junk_clean">Exit Junk Clean</string>
<string name="exit_junk_clean_content">Exit Junk Clean? Uncleared junk files might be taking up space.</string>
<string name="exit_battery_info">Exit Battery Info</string>
<string name="exit_battery_info_content">Exit Battery Info? Continuing to use it can help you better manage your battery status.</string>
<string name="exit_large_file_clean">Exit Large File Clean</string>
<string name="exit_large_file_clean_content">Exit Large File Clean? Undeleted large files may be taking up valuable space.</string>
<string name="exit_photo_compression">Exit Photo Compression</string>
<string name="exit_photo_compression_content">Exit Photo Compression? Uncompressed photos may be taking up space.</string>
<string name="exit_screenshot_cleaner">Exit Screenshot Clean</string>
<string name="exit_screenshot_cleaner_content">Exit Screenshot Clean? Undeleted screenshots might be using space.</string>
<string name="exit_similar_photos">Exit Duplicate Photos</string>
<string name="exit_similar_photos_content">Exit Duplicate Photos? Unmoved duplicate photos might be occupying space.</string>
<string name="logout_content">Are you sure you want to quit without trying to clean up the garbage again?</string>
<string name="please_wait_a_moment">Please wait a moment</string>
<string name="exit">Exit</string>
<string name="turn_on">Turn on</string>
<string name="CLEAN">CLEAN</string>
<string name="uninstall">Uninstall</string>
<string name="powered_by_trustlook">Powered by Trustlook</string>
<string name="malware_recommended">It is recommended to turn on the network connection for more accurate results</string>
<string name="notification_tips">Enable notifications to receive suggestions that matter.</string>
<string name="select_a_language">Select a language</string>
<string name="get_started">Get Started</string>
<string name="battery">Battery</string>
<string name="estimated_battery">Estimated battery</string>
<string name="electric_current">Electric current</string>
<string name="real_time_current">Real-time current</string>
<string name="average_current">Average current</string>
<string name="notify_junk_clean">Delete the junk files from your phone right away!</string>
<string name="notify_battery_info">Review your phone\'s battery usage lately!</string>
<string name="notify_large_file">Clear space by deleting large unused files!</string>
<string name="notify_similar_photos">Remove similar photos and save storage!</string>
<string name="notify_screenshot">Remove unnecessary screenshots and save storage!</string>
<string name="notify_photo_compression">Compress pictures to free up valuable storage!</string>
<string name="ads_are_about_to_be_shown_s">Ads are about to be shown(%1$ss)</string>
<string name="by_continuing_">By continuing you are agreeing to the\u0020</string>
<string name="thank_you_very_much">Thank you very much for taking the time to rate us.</string>
<string name="view">View</string>
<string name="content_not_found">Content not found</string>
<string name="uninstall_app">Uninstall App</string>
<string name="ok">OK</string>
<string name="size">Size</string>
<string name="install_time">Install Time</string>
<string name="app_function_experience_tip">%s is an advanced cleaner for Android devices to clean mobile phones. Cleaning apps can clean up empty files, log files, outdated APKs, temporary files, similar pictures, and large files. It can also view battery information, uninstall apps and compress pictures.</string>
<string name="experience_it_immediately">Experience it immediately</string>
<string name="screenshot">Screenshot</string>
<string name="exit_uninstall_app_content">Exit Uninstall App? Unused applications may occupy phone storage</string>
<string name="notify_uninstall_app">Remove unused apps to free up storage space.</string>
<string name="quick_clean">Quick Clean</string>
<string name="scan_completed">Scan Completed</string>
<string name="turn_on_notification">Turn on notification</string>
<string name="redundant_files_found">Redundant Files Found</string>
<string name="found_f">%1$s Found</string>
<string name="involve_ad">This process may involve ad.</string>
<string name="consent_required">Consent Required</string>
<string name="start">Start</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="photo">Photo</string>
<string name="audio">Audio</string>
<string name="document">Document</string>
<string name="video">Video</string>
<string name="continue_">Continue</string>
<string name="open_settings">Open Settings</string>
<string name="storage_permission_title">Need to obtain storage permissions</string>
<string name="storage_permission_content">Allow %s to access All Files Access permission to manage files of your device?</string>
<string name="large_file">Large File</string>
<string name="exit_uninstall_app">Exit Uninstall apps</string>
</resources> </resources>
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="involve_ad">Este proceso puede incluir publicidad.</string> <string name="involve_ad">Este proceso puede incluir publicidad.</string>
<string name="consent_required">Se requiere consentimiento</string> <string name="consent_required">Se requiere consentimiento</string>
...@@ -21,16 +21,13 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de ...@@ -21,16 +21,13 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de
<string name="storage_permission_title">Necesario obtener permisos de almacenamiento</string> <string name="storage_permission_title">Necesario obtener permisos de almacenamiento</string>
<string name="storage_permission_content">¿Permitir que %s acceda al permiso de Todos los archivos para gestionar los archivos de tu dispositivo?</string> <string name="storage_permission_content">¿Permitir que %s acceda al permiso de Todos los archivos para gestionar los archivos de tu dispositivo?</string>
<string name="file_recovery">Recuperar archivos</string>
<string name="junk_clean">Limpiar basura</string> <string name="junk_clean">Limpiar basura</string>
<string name="battery_info">Información de batería</string> <string name="battery_info">Información de batería</string>
<string name="screenshot_clean">Limpiar capturas</string> <string name="screenshot_clean">Limpiar capturas</string>
<string name="app_manager">Administrador de apps</string>
<string name="large_file_clean">Limpiar archivos grandes</string> <string name="large_file_clean">Limpiar archivos grandes</string>
<string name="photo_compression">Compresión de fotos</string> <string name="photo_compression">Compresión de fotos</string>
<string name="similar_photos">Fotos duplicadas</string> <string name="similar_photos">Fotos duplicadas</string>
<string name="home">Inicio</string> <string name="home">Inicio</string>
<string name="recovery">Recuperación</string>
<string name="settings">Configuración</string> <string name="settings">Configuración</string>
<string name="battery_status">Estado de la batería</string> <string name="battery_status">Estado de la batería</string>
...@@ -45,9 +42,6 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de ...@@ -45,9 +42,6 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de
<string name="please_wait">Por favor espera</string> <string name="please_wait">Por favor espera</string>
<string name="power">Energía</string> <string name="power">Energía</string>
<string name="charging">Cargando</string> <string name="charging">Cargando</string>
<string name="left_with_current_power_consumption">restante con el consumo actual</string>
<string name="finish">Finalizar</string>
<string name="found">Encontrado</string>
<string name="clean_tips">La limpieza no elimina tus datos personales</string> <string name="clean_tips">La limpieza no elimina tus datos personales</string>
<string name="clean">Limpiar</string> <string name="clean">Limpiar</string>
<string name="go_it">Entendido</string> <string name="go_it">Entendido</string>
...@@ -58,13 +52,7 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de ...@@ -58,13 +52,7 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de
<string name="cleaned_up">Limpieza completada</string> <string name="cleaned_up">Limpieza completada</string>
<string name="cleaned_up_content">Se limpiaron otros datos para liberar más espacio</string> <string name="cleaned_up_content">Se limpiaron otros datos para liberar más espacio</string>
<string name="result_junk_clean">¡Limpieza de archivos innecesarios completada!</string> <string name="result_junk_clean">¡Limpieza de archivos innecesarios completada!</string>
<string name="result_antivirus">Protección antivirus para móviles</string>
<string name="clean_now">Limpiar ahora</string> <string name="clean_now">Limpiar ahora</string>
<string name="result_battery_info">Ver uso y detalles de la batería</string>
<string name="result_large_file_clean">Limpia archivos grandes para liberar espacio</string>
<string name="result_photo_compression">Reduce el tamaño de fotos para liberar espacio</string>
<string name="result_screenshot_clean">Limpia capturas para liberar espacio</string>
<string name="result_similar_photos">Elimina fotos duplicadas para ahorrar espacio</string>
<string name="all_types">Todos los tipos</string> <string name="all_types">Todos los tipos</string>
<string name="delete">Eliminar</string> <string name="delete">Eliminar</string>
<string name="other_than">Otros que</string> <string name="other_than">Otros que</string>
...@@ -93,41 +81,20 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de ...@@ -93,41 +81,20 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de
<string name="compress_all">Comprimir todo</string> <string name="compress_all">Comprimir todo</string>
<string name="best_quality_photo">Foto de mejor calidad</string> <string name="best_quality_photo">Foto de mejor calidad</string>
<string name="most_space_saved">Máximo espacio ahorrado</string> <string name="most_space_saved">Máximo espacio ahorrado</string>
<string name="recover_tip">Recupera datos perdidos de dispositivos Android sin root</string>
<string name="photos">Fotos</string>
<string name="recover_lost_photos">Recuperar fotos perdidas</string>
<string name="videos">Videos</string>
<string name="recover_lost_videos">Recuperar videos perdidos</string>
<string name="audios">Audios</string>
<string name="documents">Documentos</string>
<string name="recover_lost_documents">Recuperar documentos perdidos</string>
<string name="scan">Escanear</string>
<string name="click_to_view">Haz clic para ver</string>
<string name="clean_junk">Limpiar basura</string> <string name="clean_junk">Limpiar basura</string>
<string name="more">Más</string>
<string name="duplicate_photos">Fotos duplicadas</string>
<string name="already_saved_for_you">Ya guardado para ti</string> <string name="already_saved_for_you">Ya guardado para ti</string>
<string name="rate_us">Califícanos</string> <string name="rate_us">Califícanos</string>
<string name="version">Versión</string> <string name="version">Versión</string>
<string name="recycle_bin">Papelera de reciclaje</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedy protege tus fotos, videos, archivos y aplicaciones de ser eliminados]]></string>
<string name="recyclebin">Papelera de reciclaje</string>
<string name="thank_you_for_using_app">¡Gracias por usar %s!</string> <string name="thank_you_for_using_app">¡Gracias por usar %s!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">Muchas gracias por tomarte el tiempo de calificarnos.</string>
<string name="submit">ENVIAR</string> <string name="submit">ENVIAR</string>
<string name="screenshot_cleaner">Limpiador de capturas</string>
<string name="guide_title_1">Limpieza con un toque</string>
<string name="guide_tip_1"> <string name="guide_tip_1">
Elimina basura, aumenta la velocidad. Libera memoria con un solo toque. Elimina basura, aumenta la velocidad. Libera memoria con un solo toque.
</string> </string>
<string name="guide_title_2">Limpiar almacenamiento ahorra espacio</string>
<string name="guide_tip_2"> <string name="guide_tip_2">
Limpia fotos, videos y archivos de audio para ahorrar espacio y mantener tu teléfono ordenado. Limpia fotos, videos y archivos de audio para ahorrar espacio y mantener tu teléfono ordenado.
</string> </string>
<string name="guide_title_3">Escudo antivirus</string>
<string name="guide_tip_3"> <string name="guide_tip_3">
Escaneo potente, protección total. Mantén tu teléfono seguro. Escaneo potente, protección total. Mantén tu teléfono seguro.
</string> </string>
...@@ -149,73 +116,47 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de ...@@ -149,73 +116,47 @@ Por favor, ten la seguridad de que manejaremos tu información estrictamente de
<string name="logout_content">¿Estás seguro de que deseas salir sin intentar limpiar la basura nuevamente?</string> <string name="logout_content">¿Estás seguro de que deseas salir sin intentar limpiar la basura nuevamente?</string>
<string name="please_wait_a_moment">Por favor espera un momento</string> <string name="please_wait_a_moment">Por favor espera un momento</string>
<string name="exit">Salir</string> <string name="exit">Salir</string>
<string name="start_to_use">COMENZAR A USAR</string>
<string name="privacy">privacidad</string>
<string name="agree">aceptar\u0020</string>
<string name="terms_of_service">términos de servicio</string>
<string name="notification_title">Activar notificaciones</string>
<string name="notification_content">No te pierdas importantes recordatorios de limpieza de tu teléfono</string>
<string name="turn_on">Activar</string> <string name="turn_on">Activar</string>
<string name="junk_files">Archivos basura</string>
<string name="memory_used">Memoria usada</string>
<string name="storage_used">Almacenamiento usado</string>
<string name="CLEAN">LIMPIAR</string> <string name="CLEAN">LIMPIAR</string>
<string name="make_your_phone_clean">Haz que tu teléfono esté limpio</string>
<string name="antivirus">Antivirus</string>
<string name="mobile_antivirus_protection">Protección antivirus para móviles</string>
<string name="clear_phone_screenshot">Limpiar capturas del teléfono</string>
<string name="clear_large_files_on_the_phone">Limpiar archivos grandes del teléfono</string>
<string name="clear_similar_pictures_on_the_phone">Limpiar fotos similares del teléfono</string>
<string name="image_compression">Compresión de imágenes</string>
<string name="compress_mobile_phone_images">Comprimir imágenes del teléfono</string>
<string name="view_battery_information">Ver información de la batería</string>
<string name="show_all_settings">mostrar toda la configuración</string>
<string name="malware_scan">Escaneo antivirus</string>
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="apps">Aplicaciones</string>
<string name="antivirus_scan_error_occurred_please_try_again">Ocurrió un error en el escaneo antivirus, por favor inténtalo de nuevo</string>
<string name="exit_malware_clean">Salir del escaneo antivirus</string>
<string name="exit_malware_clean_content">¿Salir del escaneo antivirus? ¡Se encontraron amenazas potenciales! Quédate y protege tu dispositivo ahora.</string>
<string name="no_threats_found">Tu teléfono está completamente seguro\n¡no se encontraron amenazas!</string>
<string name="kind_tips">Consejo amable</string>
<string name="powered_by_trustlook">Con tecnología de Trustlook</string> <string name="powered_by_trustlook">Con tecnología de Trustlook</string>
<string name="malware_recommended">Se recomienda activar la conexión a internet para resultados más precisos</string> <string name="malware_recommended">Se recomienda activar la conexión a internet para resultados más precisos</string>
<string name="notification_tips">Activa notificaciones para recibir sugerencias importantes.</string> <string name="notification_tips">Activa notificaciones para recibir sugerencias importantes.</string>
<string name="don_t_miss_important_tips">No te pierdas consejos importantes</string>
<string name="let_us_know_how_we_re_doing">¡Haznos saber cómo lo estamos haciendo!</string>
<string name="we_feedback_invaluable">
Siempre intentamos mejorar lo que hacemos, ¡y tu feedback es invaluable!
</string>
<string name="select_a_language">Selecciona un idioma</string> <string name="select_a_language">Selecciona un idioma</string>
<string name="one_tap_clean">Limpieza con un toque</string>
<string name="get_started">Comenzar</string> <string name="get_started">Comenzar</string>
<string name="loading">cargando...</string>
<string name="try_it_new">Pruébalo nuevo</string>
<string name="battery">Batería</string> <string name="battery">Batería</string>
<string name="estimated_battery">Batería estimada</string> <string name="estimated_battery">Batería estimada</string>
<string name="electric_current">Corriente eléctrica</string> <string name="electric_current">Corriente eléctrica</string>
<string name="real_time_current">Corriente en tiempo real</string> <string name="real_time_current">Corriente en tiempo real</string>
<string name="average_current">Corriente promedio</string> <string name="average_current">Corriente promedio</string>
<string name="permission_request">Solicitud de permiso</string>
<string name="deny">Denegar</string>
<string name="allow">Permitir</string>
<string name="reject">Rechazar</string>
<string name="collect_installed_application_information">Recopilar información de aplicaciones instaladas:</string>
<string name="when_you_use_the_vlrus">Cuando uses la función de escaneo de VIRUS, recopilaremos información sobre las aplicaciones que tienes instaladas, incluyendo: nombre de la aplicación instalada, nombre del paquete de la aplicación, código de versión de la aplicación, nombre de la versión de la aplicación, hash MD5 e información de firma, ruta de instalación e información de archivos en el almacenamiento del dispositivo.</string>
<string name="using_and_transferring_installed">Uso y transferencia de información de aplicaciones instaladas:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">La función de escaneo de virus utiliza el SDK de Trustlook. Cuando uses la función de escaneo de virus, subiremos la información recopilada de las aplicaciones instaladas a la base de datos de virus de terceros de Trustlook para el escaneo, con el fin de detectar posibles riesgos de seguridad y brindar una mejor protección. El SDK de Trustlook proporciona servicios de seguridad, que analizan las aplicaciones recolectadas, aplicando análisis estáticos y de comportamiento para generar informes de riesgo de aplicaciones.</string>
<string name="installed_application_information_access_and_sharing_statement">Declaración de acceso y uso compartido de información de aplicaciones instaladas:</string>
<string name="we_take_the_confidentiality_of_your">Tomamos muy en serio la confidencialidad de tu información, y ni nosotros ni el SDK de Trustlook venderemos, licenciaremos, transferiremos o divulgaremos esta información a menos que tú lo autorices.</string>
<string name="view_information_collection_instructions">Ver instrucciones de recopilación de información:</string>
<string name="notify_junk_clean">¡Limpia los archivos basura de tu teléfono ahora!</string> <string name="notify_junk_clean">¡Limpia los archivos basura de tu teléfono ahora!</string>
<string name="notif_antivirus">Tu dispositivo puede tener amenazas potenciales. Toca para escanear y eliminarlas.</string>
<string name="notify_battery_info">¡Revisa el consumo de batería de tu teléfono recientemente!</string> <string name="notify_battery_info">¡Revisa el consumo de batería de tu teléfono recientemente!</string>
<string name="notify_large_file">¡Libera espacio eliminando archivos grandes!</string> <string name="notify_large_file">¡Libera espacio eliminando archivos grandes!</string>
<string name="notify_similar_photos">¡Limpia fotos similares y ahorra espacio!</string> <string name="notify_similar_photos">¡Limpia fotos similares y ahorra espacio!</string>
<string name="notify_screenshot">¡Libera espacio eliminando capturas innecesarias!</string> <string name="notify_screenshot">¡Libera espacio eliminando capturas innecesarias!</string>
<string name="notify_photo_compression">¡Libera espacio en tu teléfono comprimiendo fotos!</string> <string name="notify_photo_compression">¡Libera espacio en tu teléfono comprimiendo fotos!</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">Si sales, los resultados del escaneo se descartarán.</string>
<string name="exit_scanning">Salir del escaneo</string>
<string name="ads_are_about_to_be_shown_s">Los anuncios se mostrarán en (%1$ss)</string> <string name="ads_are_about_to_be_shown_s">Los anuncios se mostrarán en (%1$ss)</string>
<string name="issue">%1$s problema</string>
<string name="by_continuing_">Al continuar, aceptas los\u0020</string>
<string name="thank_you_very_much">Muchas gracias por tomarte el tiempo de valorarnos.</string>
<string name="view">Ver</string>
<string name="content_not_found">Contenido no encontrado</string>
<string name="uninstall_app">Desinstalar aplicación</string>
<string name="ok">Aceptar</string>
<string name="size">Tamaño</string>
<string name="install_time">Fecha de instalación</string>
<string name="app_function_experience_tip">%s es un limpiador avanzado para dispositivos Android que limpia teléfonos móviles. Puede limpiar archivos vacíos, registros, APK obsoletos, archivos temporales, fotos similares y archivos grandes. También muestra información de batería, desinstala apps y comprime imágenes.</string>
<string name="experience_it_immediately">Pruébalo ahora</string>
<string name="screenshot">Captura de pantalla</string>
<string name="exit_uninstall_app_content">¿Salir de Desinstalar apps? Las aplicaciones no usadas pueden ocupar almacenamiento.</string>
<string name="notify_uninstall_app">Elimina aplicaciones no usadas para liberar espacio.</string>
<string name="quick_clean">Limpieza rápida</string>
<string name="scan_completed">Escaneo completado</string>
<string name="turn_on_notification">Activar notificaciones</string>
<string name="redundant_files_found">Archivos redundantes encontrados</string>
<string name="found_f">%1$s encontrados</string>
<string name="large_file">Archivos grandes</string>
<string name="exit_uninstall_app">Salir de Desinstalar apps</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="preparing_advertisement">Préparation de la publicité</string>
<string name="involve_ad">Ce processus peut inclure de la publicité.</string> <string name="involve_ad">Ce processus peut inclure de la publicité.</string>
<string name="consent_required">Consentement requis</string> <string name="consent_required">Consentement requis</string>
<string name="which_type_do_you_want_to_clean">Quel type voulez-vous nettoyer ?</string> <string name="which_type_do_you_want_to_clean">Quel type voulez-vous nettoyer ?</string>
<string name="consent">Durant l\’utilisation de cette application, nous avons besoin d\’obtenir les informations suivantes : modèle du téléphone, fabricant du téléphone, version du système Android, numéro de version de l\’application, nom de la version de l\’application, nom du package, identifiant publicitaire Google, fuseau horaire local du téléphone, album photo du téléphone, dossiers vides, fichiers APK, fichiers temporaires, fichiers journaux, niveau de batterie, autonomie du téléphone, température de la batterie, tension de la batterie, technologie de la batterie, capacité de la batterie, courant de la batterie, valeur moyenne actuelle de la batterie.Veuillez être assuré(e) que nous traitons vos informations conformément aux lois et réglementations en vigueur. Toutes les informations collectées seront utilisées de manière raisonnable pour assurer le fonctionnement normal et l\’amélioration des services de l\’application, et nous prendrons toutes les mesures nécessaires pour protéger la sécurité de vos informations personnelles. Votre vie privée est notre priorité absolue.</string>
<string name="consent">
Durant l\’utilisation de cette application, nous avons besoin d\’obtenir les informations suivantes : modèle du téléphone, fabricant du téléphone, version du système Android, numéro de version de l\’application, nom de la version de l\’application, nom du package, identifiant publicitaire Google, fuseau horaire local du téléphone, album photo du téléphone, dossiers vides, fichiers APK, fichiers temporaires, fichiers journaux, niveau de batterie, autonomie du téléphone, température de la batterie, tension de la batterie, technologie de la batterie, capacité de la batterie, courant de la batterie, valeur moyenne actuelle de la batterie.
Veuillez être assuré(e) que nous traitons vos informations conformément aux lois et réglementations en vigueur. Toutes les informations collectées seront utilisées de manière raisonnable pour assurer le fonctionnement normal et l\’amélioration des services de l\’application, et nous prendrons toutes les mesures nécessaires pour protéger la sécurité de vos informations personnelles. Votre vie privée est notre priorité absolue.
</string>
<string name="start">Commencer</string> <string name="start">Commencer</string>
<string name="privacy_policy">Politique de confidentialité</string> <string name="privacy_policy">Politique de confidentialité</string>
<string name="photo">Photo</string> <string name="photo">Photo</string>
...@@ -21,19 +14,14 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l ...@@ -21,19 +14,14 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l
<string name="open_settings">Ouvrir les paramètres</string> <string name="open_settings">Ouvrir les paramètres</string>
<string name="storage_permission_title">Autorisation de stockage nécessaire</string> <string name="storage_permission_title">Autorisation de stockage nécessaire</string>
<string name="storage_permission_content">Autoriser %s à accéder à la permission d\’accès à tous les fichiers pour gérer les fichiers de votre appareil ?</string> <string name="storage_permission_content">Autoriser %s à accéder à la permission d\’accès à tous les fichiers pour gérer les fichiers de votre appareil ?</string>
<string name="file_recovery">Récupération de fichiers</string>
<string name="junk_clean">Nettoyage des indésirables</string> <string name="junk_clean">Nettoyage des indésirables</string>
<string name="battery_info">Infos batterie</string> <string name="battery_info">Infos batterie</string>
<string name="screenshot_clean">Nettoyage des captures</string> <string name="screenshot_clean">Nettoyage des captures</string>
<string name="app_manager">Gestionnaire d\’apps</string>
<string name="large_file_clean">Nettoyage des gros fichiers</string> <string name="large_file_clean">Nettoyage des gros fichiers</string>
<string name="photo_compression">Compression photo</string> <string name="photo_compression">Compression photo</string>
<string name="similar_photos">Photos en double</string> <string name="similar_photos">Photos en double</string>
<string name="home">Accueil</string> <string name="home">Accueil</string>
<string name="recovery">Récupération</string>
<string name="settings">Paramètres</string> <string name="settings">Paramètres</string>
<string name="battery_status">État de la batterie</string> <string name="battery_status">État de la batterie</string>
<string name="temperature">Température</string> <string name="temperature">Température</string>
<string name="voltage">Tension</string> <string name="voltage">Tension</string>
...@@ -42,13 +30,9 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l ...@@ -42,13 +30,9 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l
<string name="normal">Normal</string> <string name="normal">Normal</string>
<string name="battery_type">Type de batterie</string> <string name="battery_type">Type de batterie</string>
<string name="battery_capacity">Capacité de la batterie</string> <string name="battery_capacity">Capacité de la batterie</string>
<string name="please_wait">Veuillez patienter</string> <string name="please_wait">Veuillez patienter</string>
<string name="power">Puissance</string> <string name="power">Puissance</string>
<string name="charging">Chargement</string> <string name="charging">Chargement</string>
<string name="left_with_current_power_consumption">restant avec la consommation actuelle</string>
<string name="finish">Terminer</string>
<string name="found">Trouvé</string>
<string name="clean_tips">Le nettoyage ne supprime pas vos données personnelles</string> <string name="clean_tips">Le nettoyage ne supprime pas vos données personnelles</string>
<string name="clean">Nettoyer</string> <string name="clean">Nettoyer</string>
<string name="go_it">Compris</string> <string name="go_it">Compris</string>
...@@ -59,20 +43,13 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l ...@@ -59,20 +43,13 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l
<string name="cleaned_up">Nettoyé</string> <string name="cleaned_up">Nettoyé</string>
<string name="cleaned_up_content">Données nettoyées pour libérer de l\’espace</string> <string name="cleaned_up_content">Données nettoyées pour libérer de l\’espace</string>
<string name="result_junk_clean">Nettoyez les fichiers indésirables inutiles !</string> <string name="result_junk_clean">Nettoyez les fichiers indésirables inutiles !</string>
<string name="result_antivirus">Protection antivirus mobile</string>
<string name="clean_now">Nettoyer maintenant</string> <string name="clean_now">Nettoyer maintenant</string>
<string name="result_battery_info">Voir l\’utilisation et les détails de la batterie</string>
<string name="result_large_file_clean">Nettoyez les gros fichiers pour libérer de l\’espace</string>
<string name="result_photo_compression">Réduisez la taille des photos pour libérer de l\’espace</string>
<string name="result_screenshot_clean">Nettoyez les captures pour libérer de l\’espace</string>
<string name="result_similar_photos">Supprimez les photos en double pour gagner de l\’espace.</string>
<string name="all_types">Tous types</string> <string name="all_types">Tous types</string>
<string name="delete">Supprimer</string> <string name="delete">Supprimer</string>
<string name="other_than">Autre que</string> <string name="other_than">Autre que</string>
<string name="image">Image</string> <string name="image">Image</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">Autres types</string> <string name="other_types">Autres types</string>
<string name="all_time">Toujours</string> <string name="all_time">Toujours</string>
<string name="week_1">1 semaine</string> <string name="week_1">1 semaine</string>
<string name="month_1">1 mois</string> <string name="month_1">1 mois</string>
...@@ -94,45 +71,15 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l ...@@ -94,45 +71,15 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l
<string name="compress_all">Tout compresser</string> <string name="compress_all">Tout compresser</string>
<string name="best_quality_photo">Meilleure qualité photo</string> <string name="best_quality_photo">Meilleure qualité photo</string>
<string name="most_space_saved">Maximum d\’espace libéré</string> <string name="most_space_saved">Maximum d\’espace libéré</string>
<string name="recover_tip">Récupérez les données perdues sur appareils Android non rootés</string>
<string name="photos">Photos</string>
<string name="recover_lost_photos">Récupérer photos perdues</string>
<string name="videos">Vidéos</string>
<string name="recover_lost_videos">Récupérer vidéos perdues</string>
<string name="audios">Audios</string>
<string name="documents">Documents</string>
<string name="recover_lost_documents">Récupérer documents perdus</string>
<string name="scan">Scanner</string>
<string name="click_to_view">Cliquer pour voir</string>
<string name="clean_junk">Nettoyer indésirables</string> <string name="clean_junk">Nettoyer indésirables</string>
<string name="more">Plus</string>
<string name="duplicate_photos">Photos en double</string>
<string name="already_saved_for_you">Déjà sauvegardé pour vous</string> <string name="already_saved_for_you">Déjà sauvegardé pour vous</string>
<string name="rate_us">Évaluez-nous</string> <string name="rate_us">Évaluez-nous</string>
<string name="version">Version</string> <string name="version">Version</string>
<string name="recycle_bin">Corbeille</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedy protège vos photos, vidéos, fichiers et apps contre la suppression]]></string>
<string name="recyclebin">Corbeille</string>
<string name="thank_you_for_using_app">Merci d\’utiliser %s !</string> <string name="thank_you_for_using_app">Merci d\’utiliser %s !</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">Merci d\’avoir pris le temps de nous évaluer.</string>
<string name="submit">SOUMETTRE</string> <string name="submit">SOUMETTRE</string>
<string name="screenshot_cleaner">Nettoyeur de captures</string> <string name="guide_tip_1">Éliminez les indésirables, boostez la vitesse. Libérez de la mémoire en un clic.</string>
<string name="guide_tip_2">Nettoyez photos, vidéos et audios pour libérer de l\’espace et garder votre téléphone organisé.</string>
<string name="guide_title_1">Nettoyage en un clic</string> <string name="guide_tip_3">Scan puissant, protection totale. Gardez votre téléphone en sécurité.</string>
<string name="guide_tip_1">
Éliminez les indésirables, boostez la vitesse. Libérez de la mémoire en un clic.
</string>
<string name="guide_title_2">Gagnez de l\’espace</string>
<string name="guide_tip_2">
Nettoyez photos, vidéos et audios pour libérer de l\’espace et garder votre téléphone organisé.
</string>
<string name="guide_title_3">Bouclier antivirus</string>
<string name="guide_tip_3">
Scan puissant, protection totale. Gardez votre téléphone en sécurité.
</string>
<string name="next">Suivant</string> <string name="next">Suivant</string>
<string name="sure">Confirmer</string> <string name="sure">Confirmer</string>
<string name="exit_junk_clean">Quitter nettoyage</string> <string name="exit_junk_clean">Quitter nettoyage</string>
...@@ -150,74 +97,26 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l ...@@ -150,74 +97,26 @@ Veuillez être assuré(e) que nous traitons vos informations conformément aux l
<string name="logout_content">Êtes-vous sûr de vouloir quitter sans essayer de nettoyer à nouveau ?</string> <string name="logout_content">Êtes-vous sûr de vouloir quitter sans essayer de nettoyer à nouveau ?</string>
<string name="please_wait_a_moment">Veuillez patienter</string> <string name="please_wait_a_moment">Veuillez patienter</string>
<string name="exit">Quitter</string> <string name="exit">Quitter</string>
<string name="start_to_use">COMMENCER</string>
<string name="privacy">confidentialité</string>
<string name="agree">accepter\u0020</string>
<string name="terms_of_service">conditions d\’utilisation</string>
<string name="notification_title">Activer les notifications</string>
<string name="notification_content">Ne manquez pas les alertes importantes de nettoyage</string>
<string name="turn_on">Activer</string> <string name="turn_on">Activer</string>
<string name="junk_files">Fichiers indésirables</string>
<string name="memory_used">Mémoire utilisée</string>
<string name="storage_used">Stockage utilisé</string>
<string name="CLEAN">NETTOYER</string> <string name="CLEAN">NETTOYER</string>
<string name="make_your_phone_clean">Gardez votre téléphone propre</string>
<string name="antivirus">Antivirus</string>
<string name="mobile_antivirus_protection">Protection antivirus mobile</string>
<string name="clear_phone_screenshot">Nettoyer les captures</string>
<string name="clear_large_files_on_the_phone">Nettoyer les gros fichiers</string>
<string name="clear_similar_pictures_on_the_phone">Nettoyer les photos similaires</string>
<string name="image_compression">Compression d\’image</string>
<string name="compress_mobile_phone_images">Compresser les images</string>
<string name="view_battery_information">Voir infos batterie</string>
<string name="show_all_settings">Afficher tous paramètres</string>
<string name="malware_scan">Scan antivirus</string>
<string name="uninstall">Désinstaller</string> <string name="uninstall">Désinstaller</string>
<string name="apps">Applications</string>
<string name="antivirus_scan_error_occurred_please_try_again">Erreur de scan, veuillez réessayer</string>
<string name="exit_malware_clean">Quitter scan antivirus</string>
<string name="exit_malware_clean_content">Quitter le scan ? Des menaces potentielles détectées ! Restez pour sécuriser votre appareil.</string>
<string name="no_threats_found">Votre téléphone est sécurisé\nAucune menace trouvée !</string>
<string name="kind_tips">Conseil</string>
<string name="powered_by_trustlook">Propulsé par Trustlook</string> <string name="powered_by_trustlook">Propulsé par Trustlook</string>
<string name="malware_recommended">Activez Internet pour des résultats plus précis</string> <string name="malware_recommended">Activez Internet pour des résultats plus précis</string>
<string name="notification_tips">Activez les notifications pour recevoir des conseils utiles.</string> <string name="notification_tips">Activez les notifications pour recevoir des conseils utiles.</string>
<string name="don_t_miss_important_tips">Ne manquez pas les conseils importants</string>
<string name="let_us_know_how_we_re_doing">Dites-nous ce que vous pensez !</string>
<string name="we_feedback_invaluable">
Nous améliorons constamment nos services, et votre avis est inestimable !
</string>
<string name="select_a_language">Choisir une langue</string> <string name="select_a_language">Choisir une langue</string>
<string name="one_tap_clean">Nettoyage en un clic</string>
<string name="get_started">Commencer</string> <string name="get_started">Commencer</string>
<string name="loading">chargement...</string>
<string name="try_it_new">Essayer</string>
<string name="battery">Batterie</string> <string name="battery">Batterie</string>
<string name="estimated_battery">Autonomie estimée</string> <string name="estimated_battery">Autonomie estimée</string>
<string name="electric_current">Courant électrique</string> <string name="electric_current">Courant électrique</string>
<string name="real_time_current">Courant en temps réel</string> <string name="real_time_current">Courant en temps réel</string>
<string name="average_current">Courant moyen</string> <string name="average_current">Courant moyen</string>
<string name="permission_request">Demande de permission</string>
<string name="deny">Refuser</string>
<string name="allow">Autoriser</string>
<string name="reject">Rejeter</string>
<string name="collect_installed_application_information">Collecte d\’informations sur les applications installées :</string>
<string name="when_you_use_the_vlrus">Lorsque vous utilisez la fonction de scan VlRUS, nous collectons des informations sur vos applications installées, incluant : nom de l\’application, nom du package, code de version, nom de version, hash MD5, signature, chemin d\’installation et informations de stockage.</string>
<string name="using_and_transferring_installed">Utilisation et transfert des informations :</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">La fonction de scan utilise le SDK Trustlook. Les informations collectées sont envoyées à la base de données Trustlook pour détecter les risques et fournir une meilleure protection. Le SDK Trustlook analyse les applications via des analyses statiques et comportementales.</string>
<string name="installed_application_information_access_and_sharing_statement">Déclaration d\’accès et de partage :</string>
<string name="we_take_the_confidentiality_of_your">Nous protégeons vos informations. Ni nous ni Trustlook ne vendrons, ne partagerons ni ne divulguerons ces informations sans votre autorisation.</string>
<string name="view_information_collection_instructions">Voir les instructions de collecte :</string>
<string name="notify_junk_clean">Nettoyez les fichiers indésirables maintenant !</string> <string name="notify_junk_clean">Nettoyez les fichiers indésirables maintenant !</string>
<string name="notif_antivirus">Votre appareil pourrait contenir des menaces potentielles. Appuyez pour analyser et les éliminer.</string>
<string name="notify_battery_info">Vérifiez la consommation récente de votre batterie !</string> <string name="notify_battery_info">Vérifiez la consommation récente de votre batterie !</string>
<string name="notify_large_file">Supprimez les gros fichiers pour libérer de l\’espace de stockage !</string> <string name="notify_large_file">Supprimez les gros fichiers pour libérer de l\’espace de stockage !</string>
<string name="notify_similar_photos">Nettoyez les photos similaires - Gagnez de l\’espace !</string> <string name="notify_similar_photos">Nettoyez les photos similaires - Gagnez de l\’espace !</string>
<string name="notify_screenshot">Libérez de l\’espace en nettoyant vos captures d\’écran !</string> <string name="notify_screenshot">Libérez de l\’espace en nettoyant vos captures d\’écran !</string>
<string name="notify_photo_compression">Libérez de l\’espace en compressant vos photos.</string> <string name="notify_photo_compression">Libérez de l\’espace en compressant vos photos.</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">Si vous quittez, les résultats de l\’analyse seront perdus.</string>
<string name="exit_scanning">Quitter l\’analyse</string>
<string name="ads_are_about_to_be_shown_s">Publicité sur le point d\’être affichée (%1$ss)</string> <string name="ads_are_about_to_be_shown_s">Publicité sur le point d\’être affichée (%1$ss)</string>
<string name="issue">%1$s problème</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="which_type_do_you_want_to_clean">どのタイプをクリーンアップしますか?</string> <string name="which_type_do_you_want_to_clean">どのタイプをクリーンアップしますか?</string>
<string name="consent"> <string name="consent">
本アプリの使用中に、以下の情報を取得する必要があります: 本アプリの使用中に、以下の情報を取得する必要があります:
携帯電話のモデル、製造元、Androidシステムバージョン、 携帯電話のモデル、製造元、Androidシステムバージョン、
...@@ -28,19 +27,14 @@ ...@@ -28,19 +27,14 @@
<string name="open_settings">設定を開く</string> <string name="open_settings">設定を開く</string>
<string name="storage_permission_title">ストレージ権限が必要です</string> <string name="storage_permission_title">ストレージ権限が必要です</string>
<string name="storage_permission_content">%sにデバイスのすべてのファイルへのアクセスを許可して、ファイルを管理しますか?</string> <string name="storage_permission_content">%sにデバイスのすべてのファイルへのアクセスを許可して、ファイルを管理しますか?</string>
<string name="file_recovery">ファイル復元</string>
<string name="junk_clean">ジャンククリーナー</string> <string name="junk_clean">ジャンククリーナー</string>
<string name="battery_info">バッテリー情報</string> <string name="battery_info">バッテリー情報</string>
<string name="screenshot_clean">スクリーンショットクリーナー</string> <string name="screenshot_clean">スクリーンショットクリーナー</string>
<string name="app_manager">アプリマネージャー</string>
<string name="large_file_clean">大容量ファイルクリーナー</string> <string name="large_file_clean">大容量ファイルクリーナー</string>
<string name="photo_compression">写真圧縮</string> <string name="photo_compression">写真圧縮</string>
<string name="similar_photos">重複写真</string> <string name="similar_photos">重複写真</string>
<string name="home">ホーム</string> <string name="home">ホーム</string>
<string name="recovery">復元</string>
<string name="settings">設定</string> <string name="settings">設定</string>
<string name="battery_status">バッテリー状態</string> <string name="battery_status">バッテリー状態</string>
<string name="temperature">温度</string> <string name="temperature">温度</string>
<string name="voltage">電圧</string> <string name="voltage">電圧</string>
...@@ -49,13 +43,9 @@ ...@@ -49,13 +43,9 @@
<string name="normal">通常</string> <string name="normal">通常</string>
<string name="battery_type">バッテリー種類</string> <string name="battery_type">バッテリー種類</string>
<string name="battery_capacity">バッテリー容量</string> <string name="battery_capacity">バッテリー容量</string>
<string name="please_wait">お待ちください</string> <string name="please_wait">お待ちください</string>
<string name="power">電源</string> <string name="power">電源</string>
<string name="charging">充電中</string> <string name="charging">充電中</string>
<string name="left_with_current_power_consumption">現在の消費電力で残り</string>
<string name="finish">完了</string>
<string name="found">見つかりました</string>
<string name="clean_tips">クリーンアップは個人データを削除しません</string> <string name="clean_tips">クリーンアップは個人データを削除しません</string>
<string name="clean">クリーン</string> <string name="clean">クリーン</string>
<string name="go_it">了解</string> <string name="go_it">了解</string>
...@@ -66,20 +56,13 @@ ...@@ -66,20 +56,13 @@
<string name="cleaned_up">クリーンアップ完了</string> <string name="cleaned_up">クリーンアップ完了</string>
<string name="cleaned_up_content">その他のデータをクリーンアップして、さらにスペースを解放しました</string> <string name="cleaned_up_content">その他のデータをクリーンアップして、さらにスペースを解放しました</string>
<string name="result_junk_clean">不要なジャンクファイルをクリーンアップ!</string> <string name="result_junk_clean">不要なジャンクファイルをクリーンアップ!</string>
<string name="result_antivirus">モバイルウイルス対策保護</string>
<string name="clean_now">今すぐクリーン</string> <string name="clean_now">今すぐクリーン</string>
<string name="result_battery_info">バッテリー使用状況と詳細を表示</string>
<string name="result_large_file_clean">大容量ファイルをクリーンしてストレージスペースを解放</string>
<string name="result_photo_compression">写真サイズを縮小してスペースを解放</string>
<string name="result_screenshot_clean">スクリーンショットをクリーンしてスペースを解放</string>
<string name="result_similar_photos">重複写真を削除してスペースを節約</string>
<string name="all_types">すべてのタイプ</string> <string name="all_types">すべてのタイプ</string>
<string name="delete">削除</string> <string name="delete">削除</string>
<string name="other_than">以外</string> <string name="other_than">以外</string>
<string name="image">画像</string> <string name="image">画像</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">その他のタイプ</string> <string name="other_types">その他のタイプ</string>
<string name="all_time">すべての期間</string> <string name="all_time">すべての期間</string>
<string name="week_1">1週間</string> <string name="week_1">1週間</string>
<string name="month_1">1ヶ月</string> <string name="month_1">1ヶ月</string>
...@@ -101,45 +84,15 @@ ...@@ -101,45 +84,15 @@
<string name="compress_all">すべて圧縮</string> <string name="compress_all">すべて圧縮</string>
<string name="best_quality_photo">最高品質の写真</string> <string name="best_quality_photo">最高品質の写真</string>
<string name="most_space_saved">最大のスペース節約</string> <string name="most_space_saved">最大のスペース節約</string>
<string name="recover_tip">ルート化されていないAndroidデバイスから失われたデータを復元</string>
<string name="photos">写真</string>
<string name="recover_lost_photos">失われた写真を復元</string>
<string name="videos">動画</string>
<string name="recover_lost_videos">失われた動画を復元</string>
<string name="audios">オーディオ</string>
<string name="documents">ドキュメント</string>
<string name="recover_lost_documents">失われたドキュメントを復元</string>
<string name="scan">スキャン</string>
<string name="click_to_view">クリックして表示</string>
<string name="clean_junk">ジャンクをクリーン</string> <string name="clean_junk">ジャンクをクリーン</string>
<string name="more">もっと見る</string>
<string name="duplicate_photos">重複写真</string>
<string name="already_saved_for_you">既に保存済み</string> <string name="already_saved_for_you">既に保存済み</string>
<string name="rate_us">評価する</string> <string name="rate_us">評価する</string>
<string name="version">バージョン</string> <string name="version">バージョン</string>
<string name="recycle_bin">ごみ箱</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedyはあなたの写真、動画、ファイル、アプリファイルが削除されないように保護しています]]></string>
<string name="recyclebin">ごみ箱</string>
<string name="thank_you_for_using_app">%sをご利用いただきありがとうございます!</string> <string name="thank_you_for_using_app">%sをご利用いただきありがとうございます!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">評価いただき誠にありがとうございます。</string>
<string name="submit">送信</string> <string name="submit">送信</string>
<string name="screenshot_cleaner">スクリーンショットクリーナー</string> <string name="guide_tip_1">ジャンクを一掃し、速度を向上。ワンタップでメモリを解放。</string>
<string name="guide_tip_2">写真、動画、オーディオファイルをクリーンしてスペースを節約し、携帯電話を整理整頓。</string>
<string name="guide_title_1">ワンタップクリーナー</string> <string name="guide_tip_3">強力なスキャンで完全保護。携帯電話を安全に保ちます。</string>
<string name="guide_tip_1">
ジャンクを一掃し、速度を向上。ワンタップでメモリを解放。
</string>
<string name="guide_title_2">ストレージをクリアしてスペースを確保</string>
<string name="guide_tip_2">
写真、動画、オーディオファイルをクリーンしてスペースを節約し、携帯電話を整理整頓。
</string>
<string name="guide_title_3">ウイルスシールド</string>
<string name="guide_tip_3">
強力なスキャンで完全保護。携帯電話を安全に保ちます。
</string>
<string name="next">次へ</string> <string name="next">次へ</string>
<string name="sure">はい</string> <string name="sure">はい</string>
<string name="exit_junk_clean">ジャンククリーナーを終了</string> <string name="exit_junk_clean">ジャンククリーナーを終了</string>
...@@ -157,82 +110,49 @@ ...@@ -157,82 +110,49 @@
<string name="logout_content">再度クリーンアップを試さずに終了してもよろしいですか?</string> <string name="logout_content">再度クリーンアップを試さずに終了してもよろしいですか?</string>
<string name="please_wait_a_moment">少々お待ちください</string> <string name="please_wait_a_moment">少々お待ちください</string>
<string name="exit">終了</string> <string name="exit">終了</string>
<string name="start_to_use">使用開始</string>
<string name="privacy">プライバシー</string>
<string name="agree">同意する</string>
<string name="terms_of_service">利用規約</string>
<string name="notification_title">通知をオンにする</string>
<string name="notification_content">重要な携帯電話クリーニング通知を見逃さない</string>
<string name="turn_on">オンにする</string> <string name="turn_on">オンにする</string>
<string name="junk_files">ジャンクファイル</string>
<string name="memory_used">使用済みメモリ</string>
<string name="storage_used">使用済みストレージ</string>
<string name="CLEAN">クリーン</string> <string name="CLEAN">クリーン</string>
<string name="make_your_phone_clean">携帯電話をクリーンに</string>
<string name="antivirus">アンチウイルス</string>
<string name="mobile_antivirus_protection">モバイルウイルス対策保護</string>
<string name="clear_phone_screenshot">携帯電話のスクリーンショットをクリア</string>
<string name="clear_large_files_on_the_phone">携帯電話の大容量ファイルをクリア</string>
<string name="clear_similar_pictures_on_the_phone">携帯電話の類似画像をクリア</string>
<string name="image_compression">画像圧縮</string>
<string name="compress_mobile_phone_images">携帯電話の画像を圧縮</string>
<string name="view_battery_information">バッテリー情報を表示</string>
<string name="show_all_settings">すべての設定を表示</string>
<string name="malware_scan">ウイルススキャン</string>
<string name="uninstall">アンインストール</string> <string name="uninstall">アンインストール</string>
<string name="apps">アプリ</string>
<string name="antivirus_scan_error_occurred_please_try_again">ウイルススキャンでエラーが発生しました。もう一度お試しください</string>
<string name="exit_malware_clean">ウイルススキャンを終了</string>
<string name="exit_malware_clean_content">ウイルススキャンを終了しますか?潜在的な脅威が見つかりました!すぐにデバイスを保護してください。</string>
<string name="no_threats_found">あなたの携帯電話は完全に安全です\n脅威は見つかりませんでした!</string>
<string name="kind_tips">親切なヒント</string>
<string name="powered_by_trustlook">Trustlook提供</string> <string name="powered_by_trustlook">Trustlook提供</string>
<string name="malware_recommended">より正確な結果を得るためにネットワーク接続をオンにすることをお勧めします</string> <string name="malware_recommended">より正確な結果を得るためにネットワーク接続をオンにすることをお勧めします</string>
<string name="notification_tips">重要な提案を受け取るために通知を有効にしてください。</string> <string name="notification_tips">重要な提案を受け取るために通知を有効にしてください。</string>
<string name="don_t_miss_important_tips">重要なヒントを見逃さない</string>
<string name="let_us_know_how_we_re_doing">私たちの取り組みについてご意見をお聞かせください</string>
<string name="we_feedback_invaluable">
私たちは常に改善に努めており、あなたのフィードバックは非常に貴重です!
</string>
<string name="select_a_language">言語を選択</string> <string name="select_a_language">言語を選択</string>
<string name="one_tap_clean">ワンタップクリーナー</string>
<string name="get_started">はじめに</string> <string name="get_started">はじめに</string>
<string name="loading">読み込み中...</string>
<string name="try_it_new">新機能を試す</string>
<string name="battery">バッテリー</string> <string name="battery">バッテリー</string>
<string name="estimated_battery">推定バッテリー</string> <string name="estimated_battery">推定バッテリー</string>
<string name="electric_current">電流</string> <string name="electric_current">電流</string>
<string name="real_time_current">リアルタイム電流</string> <string name="real_time_current">リアルタイム電流</string>
<string name="average_current">平均電流</string> <string name="average_current">平均電流</string>
<string name="permission_request">権限リクエスト</string>
<string name="deny">拒否</string>
<string name="allow">許可</string>
<string name="reject">拒否</string>
<string name="collect_installed_application_information">インストール済みアプリケーション情報の収集:</string>
<string name="when_you_use_the_vlrus">ウイルススキャン機能を使用する際、インストールされているアプリケーションの情報を収集します。これには、インストールされているアプリケーションの名前、アプリケーションパッケージ名、アプリケーションバージョンコード、アプリケーションバージョン名、MD5ハッシュと署名情報、インストールパス、およびデバイスストレージ上のファイル情報が含まれます。</string>
<string name="using_and_transferring_installed">インストール済みアプリケーション情報の使用と転送:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">ウイルススキャン機能はTrustlook SDKを使用しています。ウイルススキャン機能を使用する際、収集したインストール済みアプリケーション情報をTrustlookサードパーティのウイルスデータベースにアップロードし、スキャンを行います。これにより、可能なセキュリティリスクを迅速に発見し、より良い保護を提供します。Trustlook SDKはセキュリティサービスを提供し、アプリケーションコレクションを分析し、静的および行動分析を適用してアプリケーションリスクレポートを提供します。</string>
<string name="installed_application_information_access_and_sharing_statement">インストール済みアプリ情報のアクセス及び共有に関する声明:</string>
<string name="we_take_the_confidentiality_of_your">私たちはあなたの情報の機密性を非常に重んじており、Trustlook SDKと共に、あなたの許可がない限りこの情報を販売・ライセンス供与・転送・開示することはありません。</string>
<string name="view_information_collection_instructions">情報収集の説明を表示:</string>
<!-- 通知関連 -->
<string name="notify_junk_clean">今すぐスマホのジャンクファイルをクリーンアップ!</string> <string name="notify_junk_clean">今すぐスマホのジャンクファイルをクリーンアップ!</string>
<string name="notif_antivirus">デバイスに潜在的な脅威が検出されました。タップしてスキャンし排除しましょう</string>
<string name="notify_battery_info">最近のバッテリー消費状況を確認しましょう!</string> <string name="notify_battery_info">最近のバッテリー消費状況を確認しましょう!</string>
<string name="notify_large_file">大容量ファイルを削除してストレージを解放!</string> <string name="notify_large_file">大容量ファイルを削除してストレージを解放!</string>
<string name="notify_similar_photos">類似写真を整理 - スペースを節約!</string> <string name="notify_similar_photos">類似写真を整理 - スペースを節約!</string>
<string name="notify_screenshot">スクリーンショットを整理してスペースを解放!</string> <string name="notify_screenshot">スクリーンショットを整理してスペースを解放!</string>
<string name="notify_photo_compression">写真を圧縮してスマホのストレージを空けよう</string> <string name="notify_photo_compression">写真を圧縮してスマホのストレージを空けよう</string>
<!-- 操作メッセージ -->
<string name="lf_you_exit_the_scanning_results_will_be_discarded">終了すると、スキャン結果は破棄されます</string>
<string name="exit_scanning">スキャンを終了</string>
<!-- 広告表示 -->
<string name="ads_are_about_to_be_shown_s">広告が表示されます(%1$s秒)</string> <string name="ads_are_about_to_be_shown_s">広告が表示されます(%1$s秒)</string>
<!-- 問題報告 --> <string name="by_continuing_">続行することで、以下の内容に同意します\u0020</string>
<string name="issue">%1$s件の問題</string> <string name="thank_you_very_much">評価いただきありがとうございます。</string>
<string name="view">表示</string>
<string name="content_not_found">コンテンツが見つかりません</string>
<string name="uninstall_app">アプリをアンインストール</string>
<string name="ok">OK</string>
<string name="size">サイズ</string>
<string name="install_time">インストール日時</string>
<string name="app_function_experience_tip">%sはAndroidデバイス向けの高度なクリーナーアプリです。空ファイル、ログファイル、古いAPK、一時ファイル、類似画像、大容量ファイルをクリーンアップできます。また、バッテリー情報の確認、アプリのアンインストール、画像の圧縮も可能です。</string>
<string name="experience_it_immediately">今すぐ体験</string>
<string name="screenshot">スクリーンショット</string>
<string name="exit_uninstall_app_content">アンインストールを終了しますか?使用されていないアプリはストレージを占有している可能性があります</string>
<string name="notify_uninstall_app">未使用のアプリを削除してストレージを解放しましょう。</string>
<string name="quick_clean">クイッククリーニング</string>
<string name="scan_completed">スキャン完了</string>
<string name="turn_on_notification">通知をオンにする</string>
<string name="redundant_files_found">不要ファイルを発見</string>
<string name="found_f">%1$sを発見</string>
<string name="involve_ad">この処理には広告が含まれる場合があります。</string>
<string name="consent_required">同意が必要です</string>
<string name="large_file">大容量ファイル</string>
<string name="exit_uninstall_app">アンインストールを終了</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools" >
<string name="preparing_advertisement">광고 준비 중</string>
<string name="involve_ad">이 과정에는 광고가 포함될 수 있습니다.</string> <string name="involve_ad">이 과정에는 광고가 포함될 수 있습니다.</string>
<string name="consent_required">동의 필요</string> <string name="consent_required">동의 필요</string>
<string name="which_type_do_you_want_to_clean">어떤 유형을 정리하시겠습니까?</string> <string name="which_type_do_you_want_to_clean">어떤 유형을 정리하시겠습니까?</string>
<string name="consent"> <string name="consent">
이 앱 사용 중 다음 정보를 수집합니다: 휴대폰 모델, 제조사, Android 시스템 버전, 앱 버전 번호, 앱 버전 이름, 패키지명, Google 광고 ID, 휴대폰 시간대, 휴대폰 사진첩, 빈 폴더, APK 파일, 임시 파일, 로그 파일, 배터리 잔량, 휴대폰 대기 시간, 배터리 온도, 배터리 전압, 배터리 기술, 배터리 용량, 배터리 전류, 배터리 전류 평균값 이 앱 사용 중 다음 정보를 수집합니다: 휴대폰 모델, 제조사, Android 시스템 버전, 앱 버전 번호, 앱 버전 이름, 패키지명, Google 광고 ID, 휴대폰 시간대, 휴대폰 사진첩, 빈 폴더, APK 파일, 임시 파일, 로그 파일, 배터리 잔량, 휴대폰 대기 시간, 배터리 온도, 배터리 전압, 배터리 기술, 배터리 용량, 배터리 전류, 배터리 전류 평균값
관련 법규를 엄격히 준수하여 정보를 처리하며, 수집된 모든 정보는 앱 정상 운영 및 서비스 개선을 위해 합리적으로 사용됩니다. 개인정보 보호를 위해 모든 필요한 조치를 취할 것을 약속드립니다. 관련 법규를 엄격히 준수하여 정보를 처리하며, 수집된 모든 정보는 앱 정상 운영 및 서비스 개선을 위해 합리적으로 사용됩니다. 개인정보 보호를 위해 모든 필요한 조치를 취할 것을 약속드립니다.
</string> </string>
<string name="start">시작</string> <string name="start">시작</string>
...@@ -22,18 +18,14 @@ ...@@ -22,18 +18,14 @@
<string name="storage_permission_title">저장 권한 필요</string> <string name="storage_permission_title">저장 권한 필요</string>
<string name="storage_permission_content">%s이(가) 기기 파일 관리를 위해 모든 파일 접근 권한을 허용하시겠습니까?</string> <string name="storage_permission_content">%s이(가) 기기 파일 관리를 위해 모든 파일 접근 권한을 허용하시겠습니까?</string>
<string name="file_recovery">파일 복구</string>
<string name="junk_clean">정크 파일 정리</string> <string name="junk_clean">정크 파일 정리</string>
<string name="battery_info">배터리 정보</string> <string name="battery_info">배터리 정보</string>
<string name="screenshot_clean">스크린샷 정리</string> <string name="screenshot_clean">스크린샷 정리</string>
<string name="app_manager">앱 관리자</string>
<string name="large_file_clean">대용량 파일 정리</string> <string name="large_file_clean">대용량 파일 정리</string>
<string name="photo_compression">사진 압축</string> <string name="photo_compression">사진 압축</string>
<string name="similar_photos">중복 사진</string> <string name="similar_photos">중복 사진</string>
<string name="home"></string> <string name="home"></string>
<string name="recovery">복구</string>
<string name="settings">설정</string> <string name="settings">설정</string>
<string name="battery_status">배터리 상태</string> <string name="battery_status">배터리 상태</string>
<string name="temperature">온도</string> <string name="temperature">온도</string>
<string name="voltage">전압</string> <string name="voltage">전압</string>
...@@ -46,9 +38,6 @@ ...@@ -46,9 +38,6 @@
<string name="please_wait">잠시 기다려주세요</string> <string name="please_wait">잠시 기다려주세요</string>
<string name="power">전원</string> <string name="power">전원</string>
<string name="charging">충전 중</string> <string name="charging">충전 중</string>
<string name="left_with_current_power_consumption">현재 전력 소모량 기준 남은 시간</string>
<string name="finish">완료</string>
<string name="found">발견됨</string>
<string name="clean_tips">정리 시 개인 데이터는 삭제되지 않습니다</string> <string name="clean_tips">정리 시 개인 데이터는 삭제되지 않습니다</string>
<string name="clean">정리</string> <string name="clean">정리</string>
<string name="go_it">확인</string> <string name="go_it">확인</string>
...@@ -59,20 +48,13 @@ ...@@ -59,20 +48,13 @@
<string name="cleaned_up">정리 완료</string> <string name="cleaned_up">정리 완료</string>
<string name="cleaned_up_content">더 많은 공간을 확보하기 위해 기타 데이터 정리</string> <string name="cleaned_up_content">더 많은 공간을 확보하기 위해 기타 데이터 정리</string>
<string name="result_junk_clean">불필요한 정크 파일 정리 완료!</string> <string name="result_junk_clean">불필요한 정크 파일 정리 완료!</string>
<string name="result_antivirus">모바일 바이러스 보호</string>
<string name="clean_now">지금 정리</string> <string name="clean_now">지금 정리</string>
<string name="result_battery_info">배터리 사용량 및 상세 정보 확인</string>
<string name="result_large_file_clean">대용량 파일 정리로 저장 공간 확보</string>
<string name="result_photo_compression">사진 크기 축소로 더 많은 공간 확보</string>
<string name="result_screenshot_clean">스크린샷 정리로 공간 확보</string>
<string name="result_similar_photos">중복 사진 삭제로 공간 절약</string>
<string name="all_types">모든 유형</string> <string name="all_types">모든 유형</string>
<string name="delete">삭제</string> <string name="delete">삭제</string>
<string name="other_than">기타 항목</string> <string name="other_than">기타 항목</string>
<string name="image">이미지</string> <string name="image">이미지</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">기타 유형</string> <string name="other_types">기타 유형</string>
<string name="all_time">전체 기간</string> <string name="all_time">전체 기간</string>
<string name="week_1">1주일</string> <string name="week_1">1주일</string>
<string name="month_1">1개월</string> <string name="month_1">1개월</string>
...@@ -94,41 +76,18 @@ ...@@ -94,41 +76,18 @@
<string name="compress_all">전체 압축</string> <string name="compress_all">전체 압축</string>
<string name="best_quality_photo">최고 품질 사진</string> <string name="best_quality_photo">최고 품질 사진</string>
<string name="most_space_saved">최대 공간 절약</string> <string name="most_space_saved">최대 공간 절약</string>
<string name="recover_tip">루팅되지 않은 Android 기기에서 손실된 데이터 복구</string>
<string name="photos">사진</string>
<string name="recover_lost_photos">손실된 사진 복구</string>
<string name="videos">비디오</string>
<string name="recover_lost_videos">손실된 비디오 복구</string>
<string name="audios">오디오</string>
<string name="documents">문서</string>
<string name="recover_lost_documents">손실된 문서 복구</string>
<string name="scan">스캔</string>
<string name="click_to_view">클릭하여 보기</string>
<string name="clean_junk">정크 파일 정리</string> <string name="clean_junk">정크 파일 정리</string>
<string name="more">더보기</string>
<string name="duplicate_photos">중복 사진</string>
<string name="already_saved_for_you">이미 절약된 공간</string> <string name="already_saved_for_you">이미 절약된 공간</string>
<string name="rate_us">평가하기</string> <string name="rate_us">평가하기</string>
<string name="version">버전</string> <string name="version">버전</string>
<string name="recycle_bin">휴지통</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedy가 사진, 비디오, 파일 및 앱 파일이 삭제되지 않도록 보호합니다]]></string>
<string name="recyclebin">휴지통</string>
<string name="thank_you_for_using_app">%s를 사용해 주셔서 감사합니다!</string> <string name="thank_you_for_using_app">%s를 사용해 주셔서 감사합니다!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">소중한 평가 감사드립니다.</string>
<string name="submit">제출</string> <string name="submit">제출</string>
<string name="screenshot_cleaner">스크린샷 정리기</string>
<string name="guide_title_1">원탭 정리</string>
<string name="guide_tip_1"> <string name="guide_tip_1">
정크 파일 제거로 속도 향상. 한 번의 탭으로 메모리 확보 정크 파일 제거로 속도 향상. 한 번의 탭으로 메모리 확보
</string> </string>
<string name="guide_title_2">저장 공간 정리</string>
<string name="guide_tip_2"> <string name="guide_tip_2">
사진, 비디오, 오디오 파일 정리로 공간 절약 및 기기 정돈 사진, 비디오, 오디오 파일 정리로 공간 절약 및 기기 정돈
</string> </string>
<string name="guide_title_3">바이러스 방어</string>
<string name="guide_tip_3"> <string name="guide_tip_3">
강력한 스캔으로 기기 보호. 안전한 사용 환경 제공 강력한 스캔으로 기기 보호. 안전한 사용 환경 제공
</string> </string>
...@@ -150,73 +109,46 @@ ...@@ -150,73 +109,46 @@
<string name="logout_content">정리 없이 종료하시겠습니까?</string> <string name="logout_content">정리 없이 종료하시겠습니까?</string>
<string name="please_wait_a_moment">잠시 기다려주세요</string> <string name="please_wait_a_moment">잠시 기다려주세요</string>
<string name="exit">종료</string> <string name="exit">종료</string>
<string name="start_to_use">사용 시작</string>
<string name="privacy">개인정보</string>
<string name="agree">동의</string>
<string name="terms_of_service">서비스 약관</string>
<string name="notification_title">알림 설정</string>
<string name="notification_content">중요한 정리 알림을 놓치지 마세요</string>
<string name="turn_on">켜기</string> <string name="turn_on">켜기</string>
<string name="junk_files">정크 파일</string>
<string name="memory_used">사용 중인 메모리</string>
<string name="storage_used">사용 중인 저장공간</string>
<string name="CLEAN">정리</string> <string name="CLEAN">정리</string>
<string name="make_your_phone_clean">기기를 깨끗하게 유지하세요</string>
<string name="antivirus">바이러스 검사</string>
<string name="mobile_antivirus_protection">모바일 바이러스 보호</string>
<string name="clear_phone_screenshot">스크린샷 정리</string>
<string name="clear_large_files_on_the_phone">대용량 파일 정리</string>
<string name="clear_similar_pictures_on_the_phone">중복 사진 정리</string>
<string name="image_compression">이미지 압축</string>
<string name="compress_mobile_phone_images">휴대폰 이미지 압축</string>
<string name="view_battery_information">배터리 정보 확인</string>
<string name="show_all_settings">모든 설정 보기</string>
<string name="malware_scan">악성코드 검사</string>
<string name="uninstall">삭제</string> <string name="uninstall">삭제</string>
<string name="apps"></string>
<string name="antivirus_scan_error_occurred_please_try_again">바이러스 검사 중 오류 발생, 다시 시도해주세요</string>
<string name="exit_malware_clean">악성코드 검사 종료</string>
<string name="exit_malware_clean_content">악성코드 검사를 종료하시겠습니까? 잠재적 위협이 발견되었습니다. 즉시 조치를 취하세요.</string>
<string name="no_threats_found">휴대폰이 안전합니다\n위협 요소가 없습니다!</string>
<string name="kind_tips">친절한 안내</string>
<string name="powered_by_trustlook">Trustlook 제공</string> <string name="powered_by_trustlook">Trustlook 제공</string>
<string name="malware_recommended">더 정확한 결과를 위해 네트워크 연결을 권장합니다</string> <string name="malware_recommended">더 정확한 결과를 위해 네트워크 연결을 권장합니다</string>
<string name="notification_tips">중요한 알림을 받으려면 설정을 활성화하세요.</string> <string name="notification_tips">중요한 알림을 받으려면 설정을 활성화하세요.</string>
<string name="don_t_miss_important_tips">중요한 팁을 놓치지 마세요</string>
<string name="let_us_know_how_we_re_doing">서비스 평가를 남겨주세요</string>
<string name="we_feedback_invaluable">
여러분의 소중한 피드백은 서비스 개선에 큰 도움이 됩니다.
</string>
<string name="select_a_language">언어 선택</string> <string name="select_a_language">언어 선택</string>
<string name="one_tap_clean">원탭 정리</string>
<string name="get_started">시작하기</string> <string name="get_started">시작하기</string>
<string name="loading">로딩 중...</string>
<string name="try_it_new">새로 시도</string>
<string name="battery">배터리</string> <string name="battery">배터리</string>
<string name="estimated_battery">예상 배터리</string> <string name="estimated_battery">예상 배터리</string>
<string name="electric_current">전류</string> <string name="electric_current">전류</string>
<string name="real_time_current">실시간 전류</string> <string name="real_time_current">실시간 전류</string>
<string name="average_current">평균 전류</string> <string name="average_current">평균 전류</string>
<string name="permission_request">권한 요청</string>
<string name="deny">거부</string>
<string name="allow">허용</string>
<string name="reject">거절</string>
<string name="collect_installed_application_information">설치된 앱 정보 수집:</string>
<string name="when_you_use_the_vlrus">바이러스 검사 기능 사용 시 설치된 앱 정보(앱 이름, 패키지명, 버전 코드, 버전 이름, MD5 해시, 서명 정보, 설치 경로)를 수집합니다.</string>
<string name="using_and_transferring_installed">설치된 앱 정보 사용 및 전송:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">Trustlook SDK를 통해 바이러스 검사 시 수집된 정보를 분석하여 보안 위험을 식별합니다.</string>
<string name="installed_application_information_access_and_sharing_statement">설치된 앱 정보 접근 및 공유 정책:</string>
<string name="we_take_the_confidentiality_of_your">사용자 정보 보호를 최우선으로 하며, Trustlook SDK와 함께 정보를 무단 판매/양도하지 않습니다.</string>
<string name="view_information_collection_instructions">정보 수집 안내 보기:</string>
<string name="notify_junk_clean">지금 휴대폰 정크 파일을 정리하세요!</string> <string name="notify_junk_clean">지금 휴대폰 정크 파일을 정리하세요!</string>
<string name="notif_antivirus">잠재적 위협이 있을 수 있습니다. 검사로 제거하세요.</string>
<string name="notify_battery_info">최근 휴대폰 배터리 사용량을 확인하세요!</string> <string name="notify_battery_info">최근 휴대폰 배터리 사용량을 확인하세요!</string>
<string name="notify_large_file">대용량 파일을 정리하여 저장 공간을 확보하세요!</string> <string name="notify_large_file">대용량 파일을 정리하여 저장 공간을 확보하세요!</string>
<string name="notify_similar_photos">비슷한 사진 정리로 공간을 절약하세요!</string> <string name="notify_similar_photos">비슷한 사진 정리로 공간을 절약하세요!</string>
<string name="notify_screenshot">스크린샷 정리로 저장 공간을 확보하세요!</string> <string name="notify_screenshot">스크린샷 정리로 저장 공간을 확보하세요!</string>
<string name="notify_photo_compression">사진 압축으로 휴대폰 저장 공간을 확보하세요.</string> <string name="notify_photo_compression">사진 압축으로 휴대폰 저장 공간을 확보하세요.</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">종료하면 스캔 결과가 삭제됩니다.</string>
<string name="exit_scanning">스캔 종료</string>
<string name="ads_are_about_to_be_shown_s">광고 표시까지 (%1$s초)</string> <string name="ads_are_about_to_be_shown_s">광고 표시까지 (%1$s초)</string>
<string name="issue">%1$s 문제</string> <string name="by_continuing_">계속 진행하면 다음에 동의하는 것으로 간주됩니다\u0020</string>
<string name="thank_you_very_much">평가해 주셔서 감사합니다.</string>
<string name="view">보기</string>
<string name="content_not_found">콘텐츠를 찾을 수 없음</string>
<string name="uninstall_app">앱 제거</string>
<string name="ok">확인</string>
<string name="size">크기</string>
<string name="install_time">설치 날짜</string>
<string name="app_function_experience_tip">%s는 Android 기기를 위한 고급 클리너 앱입니다. 빈 파일, 로그 파일, 오래된 APK, 임시 파일, 유사한 사진 및 대용량 파일을 정리할 수 있습니다. 또한 배터리 정보 확인, 앱 제거, 사진 압축 기능을 제공합니다.</string>
<string name="experience_it_immediately">지금 경험해보기</string>
<string name="screenshot">스크린샷</string>
<string name="exit_uninstall_app_content">앱 제거를 종료할까요? 사용하지 않는 앱이 저장공간을 차지할 수 있습니다</string>
<string name="notify_uninstall_app">사용하지 않는 앱을 제거하여 저장공간을 확보하세요.</string>
<string name="quick_clean">빠른 정리</string>
<string name="scan_completed">검사 완료</string>
<string name="turn_on_notification">알림 켜기</string>
<string name="redundant_files_found">불필요한 파일 발견</string>
<string name="found_f">%1$s 발견</string>
<string name="large_file">대용량 파일</string>
<string name="exit_uninstall_app">앱 제거 종료</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="preparing_advertisement">Preparando anúncio</string>
<string name="involve_ad">Este processo pode envolver anúncios.</string> <string name="involve_ad">Este processo pode envolver anúncios.</string>
<string name="consent_required">Consentimento Necessário</string> <string name="consent_required">Consentimento Necessário</string>
<string name="which_type_do_you_want_to_clean">Qual tipo você deseja limpar?</string> <string name="which_type_do_you_want_to_clean">Qual tipo você deseja limpar?</string>
<string name="consent"> <string name="consent">
Durante o uso deste aplicativo, precisamos obter as seguintes informações: modelo do telefone, fabricante do telefone, versão do sistema Android, número da versão do aplicativo, nome da versão do aplicativo, nome do pacote, ID de anúncio do Google, fuso horário local do telefone, álbum de fotos do telefone, pastas vazias, arquivos APK, arquivos temporários, arquivos de log, nível da bateria, tempo em espera do telefone, temperatura da bateria, voltagem da bateria, tecnologia da bateria, capacidade da bateria, corrente da bateria, valor médio atual da bateria. Durante o uso deste aplicativo, precisamos obter as seguintes informações: modelo do telefone, fabricante do telefone, versão do sistema Android, número da versão do aplicativo, nome da versão do aplicativo, nome do pacote, ID de anúncio do Google, fuso horário local do telefone, álbum de fotos do telefone, pastas vazias, arquivos APK, arquivos temporários, arquivos de log, nível da bateria, tempo em espera do telefone, temperatura da bateria, voltagem da bateria, tecnologia da bateria, capacidade da bateria, corrente da bateria, valor médio atual da bateria.
Por favor, tenha certeza de que trataremos suas informações estritamente de acordo com as leis e regulamentos relevantes. Todas as informações coletadas serão usadas de forma razoável para garantir o funcionamento normal e a melhoria dos serviços do aplicativo, e tomaremos todas as medidas necessárias para proteger a segurança de suas informações pessoais. Sua privacidade é de extrema importância para nós. Por favor, tenha certeza de que trataremos suas informações estritamente de acordo com as leis e regulamentos relevantes. Todas as informações coletadas serão usadas de forma razoável para garantir o funcionamento normal e a melhoria dos serviços do aplicativo, e tomaremos todas as medidas necessárias para proteger a segurança de suas informações pessoais. Sua privacidade é de extrema importância para nós.
</string> </string>
<string name="start">Iniciar</string> <string name="start">Iniciar</string>
<string name="privacy_policy">Política de Privacidade</string> <string name="privacy_policy">Política de Privacidade</string>
<string name="photo">Foto</string> <string name="photo">Foto</string>
...@@ -20,20 +17,14 @@ ...@@ -20,20 +17,14 @@
<string name="open_settings">Abrir Configurações</string> <string name="open_settings">Abrir Configurações</string>
<string name="storage_permission_title">Necessário obter permissões de armazenamento</string> <string name="storage_permission_title">Necessário obter permissões de armazenamento</string>
<string name="storage_permission_content">Permitir que %s acesse a permissão de Acesso a Todos os Arquivos para gerenciar os arquivos do seu dispositivo?</string> <string name="storage_permission_content">Permitir que %s acesse a permissão de Acesso a Todos os Arquivos para gerenciar os arquivos do seu dispositivo?</string>
<string name="file_recovery">Recuperação de Arquivos</string>
<string name="junk_clean">Limpeza de Lixo</string> <string name="junk_clean">Limpeza de Lixo</string>
<string name="battery_info">Informações da Bateria</string> <string name="battery_info">Informações da Bateria</string>
<string name="screenshot_clean">Limpeza de Screenshots</string> <string name="screenshot_clean">Limpeza de Screenshots</string>
<string name="app_manager">Gerenciador de Apps</string>
<string name="large_file_clean">Limpeza de Arquivos Grandes</string> <string name="large_file_clean">Limpeza de Arquivos Grandes</string>
<string name="photo_compression">Compressão de Fotos</string> <string name="photo_compression">Compressão de Fotos</string>
<string name="similar_photos">Fotos Duplicadas</string> <string name="similar_photos">Fotos Duplicadas</string>
<string name="home">Início</string> <string name="home">Início</string>
<string name="recovery">Recuperação</string>
<string name="settings">Configurações</string> <string name="settings">Configurações</string>
<string name="battery_status">Status da bateria</string> <string name="battery_status">Status da bateria</string>
<string name="temperature">Temperatura</string> <string name="temperature">Temperatura</string>
<string name="voltage">Voltagem</string> <string name="voltage">Voltagem</string>
...@@ -42,13 +33,9 @@ ...@@ -42,13 +33,9 @@
<string name="normal">Normal</string> <string name="normal">Normal</string>
<string name="battery_type">Tipo de Bateria</string> <string name="battery_type">Tipo de Bateria</string>
<string name="battery_capacity">Capacidade da Bateria</string> <string name="battery_capacity">Capacidade da Bateria</string>
<string name="please_wait">Por favor, aguarde</string> <string name="please_wait">Por favor, aguarde</string>
<string name="power">Energia</string> <string name="power">Energia</string>
<string name="charging">Carregando</string> <string name="charging">Carregando</string>
<string name="left_with_current_power_consumption">restante com o consumo atual</string>
<string name="finish">Concluir</string>
<string name="found">Encontrado</string>
<string name="clean_tips">A limpeza não exclui seus dados pessoais</string> <string name="clean_tips">A limpeza não exclui seus dados pessoais</string>
<string name="clean">Limpar</string> <string name="clean">Limpar</string>
<string name="go_it">Entendi</string> <string name="go_it">Entendi</string>
...@@ -59,20 +46,13 @@ ...@@ -59,20 +46,13 @@
<string name="cleaned_up">Limpo</string> <string name="cleaned_up">Limpo</string>
<string name="cleaned_up_content">Dados limpos para liberar mais espaço</string> <string name="cleaned_up_content">Dados limpos para liberar mais espaço</string>
<string name="result_junk_clean">Limpe arquivos desnecessários!</string> <string name="result_junk_clean">Limpe arquivos desnecessários!</string>
<string name="result_antivirus">Proteção antivírus para celular</string>
<string name="clean_now">Limpar Agora</string> <string name="clean_now">Limpar Agora</string>
<string name="result_battery_info">Visualize o uso e detalhes da bateria</string>
<string name="result_large_file_clean">Limpe arquivos grandes para liberar espaço</string>
<string name="result_photo_compression">Reduza o tamanho das fotos para liberar espaço</string>
<string name="result_screenshot_clean">Limpe screenshots para liberar espaço</string>
<string name="result_similar_photos">Exclua fotos duplicadas para economizar espaço.</string>
<string name="all_types">Todos os Tipos</string> <string name="all_types">Todos os Tipos</string>
<string name="delete">Excluir</string> <string name="delete">Excluir</string>
<string name="other_than">Outros que</string> <string name="other_than">Outros que</string>
<string name="image">Imagem</string> <string name="image">Imagem</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">Outros Tipos</string> <string name="other_types">Outros Tipos</string>
<string name="all_time">Todo o tempo</string> <string name="all_time">Todo o tempo</string>
<string name="week_1">1 semana</string> <string name="week_1">1 semana</string>
<string name="month_1">1 mês</string> <string name="month_1">1 mês</string>
...@@ -94,45 +74,15 @@ ...@@ -94,45 +74,15 @@
<string name="compress_all">Comprimir Tudo</string> <string name="compress_all">Comprimir Tudo</string>
<string name="best_quality_photo">Melhor qualidade de foto</string> <string name="best_quality_photo">Melhor qualidade de foto</string>
<string name="most_space_saved">Mais espaço economizado</string> <string name="most_space_saved">Mais espaço economizado</string>
<string name="recover_tip">Recupere dados perdidos de dispositivos Android sem root</string>
<string name="photos">Fotos</string>
<string name="recover_lost_photos">Recuperar fotos perdidas</string>
<string name="videos">Vídeos</string>
<string name="recover_lost_videos">Recuperar vídeos perdidos</string>
<string name="audios">Áudios</string>
<string name="documents">Documentos</string>
<string name="recover_lost_documents">Recuperar documentos perdidos</string>
<string name="scan">Escanear</string>
<string name="click_to_view">Clique para visualizar</string>
<string name="clean_junk">Limpar Lixo</string> <string name="clean_junk">Limpar Lixo</string>
<string name="more">Mais</string>
<string name="duplicate_photos">Fotos Duplicadas</string>
<string name="already_saved_for_you">Já salvo para você</string> <string name="already_saved_for_you">Já salvo para você</string>
<string name="rate_us">Avalie-nos</string> <string name="rate_us">Avalie-nos</string>
<string name="version">Versão</string> <string name="version">Versão</string>
<string name="recycle_bin">Lixeira</string>
<string name="recyclebin_tip"><![CDATA[O Mobispeedy está protegendo suas fotos, vídeos, arquivos e arquivos de aplicativos contra exclusão]]></string>
<string name="recyclebin">Lixeira</string>
<string name="thank_you_for_using_app">Obrigado por usar %s!</string> <string name="thank_you_for_using_app">Obrigado por usar %s!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">Muito obrigado por dedicar seu tempo para nos avaliar.</string>
<string name="submit">ENVIAR</string> <string name="submit">ENVIAR</string>
<string name="screenshot_cleaner">Limpeza de Screenshots</string> <string name="guide_tip_1">Elimine lixo, aumente a velocidade. Libere memória com um único toque.</string>
<string name="guide_tip_2">Limpe fotos, vídeos e arquivos de áudio para economizar espaço e manter seu telefone organizado.</string>
<string name="guide_title_1">Limpeza com Um Toque</string> <string name="guide_tip_3">Varredura poderosa, proteção total. Mantenha seu telefone seguro.</string>
<string name="guide_tip_1">
Elimine lixo, aumente a velocidade. Libere memória com um único toque.
</string>
<string name="guide_title_2">Limpar armazenamento economiza espaço</string>
<string name="guide_tip_2">
Limpe fotos, vídeos e arquivos de áudio para economizar espaço e manter seu telefone organizado.
</string>
<string name="guide_title_3">Escudo Antivírus</string>
<string name="guide_tip_3">
Varredura poderosa, proteção total. Mantenha seu telefone seguro.
</string>
<string name="next">Próximo</string> <string name="next">Próximo</string>
<string name="sure">Claro</string> <string name="sure">Claro</string>
<string name="exit_junk_clean">Sair da Limpeza de Lixo</string> <string name="exit_junk_clean">Sair da Limpeza de Lixo</string>
...@@ -150,74 +100,45 @@ ...@@ -150,74 +100,45 @@
<string name="logout_content">Tem certeza de que deseja sair sem tentar limpar o lixo novamente?</string> <string name="logout_content">Tem certeza de que deseja sair sem tentar limpar o lixo novamente?</string>
<string name="please_wait_a_moment">Por favor, aguarde um momento</string> <string name="please_wait_a_moment">Por favor, aguarde um momento</string>
<string name="exit">Sair</string> <string name="exit">Sair</string>
<string name="start_to_use">COMEÇAR A USAR</string>
<string name="privacy">privacidade</string>
<string name="agree">concordo\u0020</string>
<string name="terms_of_service">termos de serviço</string>
<string name="notification_title">Ativar notificações</string>
<string name="notification_content">Nunca perca lembretes importantes de limpeza do telefone</string>
<string name="turn_on">Ativar</string> <string name="turn_on">Ativar</string>
<string name="junk_files">Arquivos de Lixo</string>
<string name="memory_used">Memória Usada</string>
<string name="storage_used">Armazenamento Usado</string>
<string name="CLEAN">LIMPAR</string> <string name="CLEAN">LIMPAR</string>
<string name="make_your_phone_clean">Deixe seu telefone limpo</string>
<string name="antivirus">Antivírus</string>
<string name="mobile_antivirus_protection">Proteção antivírus para celular</string>
<string name="clear_phone_screenshot">Limpar screenshots do telefone</string>
<string name="clear_large_files_on_the_phone">Limpar arquivos grandes no telefone</string>
<string name="clear_similar_pictures_on_the_phone">Limpar fotos similares no telefone</string>
<string name="image_compression">Compressão de Imagem</string>
<string name="compress_mobile_phone_images">Comprimir imagens do telefone</string>
<string name="view_battery_information">Visualizar informações da bateria</string>
<string name="show_all_settings">mostrar todas as configurações</string>
<string name="malware_scan">Varredura Antivírus</string>
<string name="uninstall">Desinstalar</string> <string name="uninstall">Desinstalar</string>
<string name="apps">Aplicativos</string>
<string name="antivirus_scan_error_occurred_please_try_again">Ocorreu um erro na varredura antivírus, por favor tente novamente</string>
<string name="exit_malware_clean">Sair da Varredura Antivírus</string>
<string name="exit_malware_clean_content">Sair da Varredura Antivírus? Ameaças potenciais encontradas! Fique e proteja seu dispositivo imediatamente.</string>
<string name="no_threats_found">Seu telefone está completamente seguro\nnenhuma ameaça encontrada!</string>
<string name="kind_tips">Dicas Úteis</string>
<string name="powered_by_trustlook">Desenvolvido por Trustlook</string> <string name="powered_by_trustlook">Desenvolvido por Trustlook</string>
<string name="malware_recommended">Recomenda-se ativar a conexão de rede para resultados mais precisos</string> <string name="malware_recommended">Recomenda-se ativar a conexão de rede para resultados mais precisos</string>
<string name="notification_tips">Ative as notificações para receber sugestões relevantes.</string> <string name="notification_tips">Ative as notificações para receber sugestões relevantes.</string>
<string name="don_t_miss_important_tips">Não perca dicas importantes</string>
<string name="let_us_know_how_we_re_doing">Deixe-nos saber como estamos nos saindo!</string>
<string name="we_feedback_invaluable">
Estamos sempre tentando melhorar o que fazemos, e seu feedback é inestimável!
</string>
<string name="select_a_language">Selecione um idioma</string> <string name="select_a_language">Selecione um idioma</string>
<string name="one_tap_clean">Limpeza com Um Toque</string>
<string name="get_started">Começar</string> <string name="get_started">Começar</string>
<string name="loading">carregando...</string>
<string name="try_it_new">Experimente Novamente</string>
<string name="battery">Bateria</string> <string name="battery">Bateria</string>
<string name="estimated_battery">Bateria estimada</string> <string name="estimated_battery">Bateria estimada</string>
<string name="electric_current">Corrente Elétrica</string> <string name="electric_current">Corrente Elétrica</string>
<string name="real_time_current">Corrente em Tempo Real</string> <string name="real_time_current">Corrente em Tempo Real</string>
<string name="average_current">Corrente Média</string> <string name="average_current">Corrente Média</string>
<string name="permission_request">Solicitação de permissão</string>
<string name="deny">Negar</string>
<string name="allow">Permitir</string>
<string name="reject">Rejeitar</string>
<string name="collect_installed_application_information">Coletar informações de aplicativos instalados:</string>
<string name="when_you_use_the_vlrus">Quando você usa a função de varredura de VlRUS, coletamos informações sobre os aplicativos que você instala, incluindo: nome do aplicativo instalado, nome do pacote do aplicativo, código da versão do aplicativo, nome da versão do aplicativo, hash MD5 e informações de assinatura, caminho de instalação e informações de arquivo do dispositivo no armazenamento.</string>
<string name="using_and_transferring_installed">Usando e transferindo informações de aplicativos instalados:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">A funcionalidade de varredura de vírus usa o SDK do Trustlook. Quando você usa a função de varredura de vírus, enviaremos as informações coletadas sobre os aplicativos instalados para o banco de dados de vírus de terceiros do Trustlook para varredura, a fim de descobrir possíveis riscos de segurança e fornecer melhor proteção. O SDK do Trustlook fornece serviços de segurança, que analisam aplicativos coletados, aplicando análises estáticas e comportamentais para fornecer relatórios de risco de aplicativos.</string>
<string name="installed_application_information_access_and_sharing_statement">Declaração de acesso e compartilhamento de informações de aplicativos instalados:</string>
<string name="we_take_the_confidentiality_of_your">Levamos a confidencialidade das suas informações muito a sério, e nós e o SDK do Trustlook não venderemos, licenciaremos, transferiremos ou divulgaremos estas informações a menos que autorizado por você.</string>
<string name="view_information_collection_instructions">Ver instruções de coleta de informações:</string>
<string name="notify_junk_clean">Limpe os arquivos inúteis do seu telefone agora!</string> <string name="notify_junk_clean">Limpe os arquivos inúteis do seu telefone agora!</string>
<string name="notif_antivirus">Seu dispositivo pode ter ameaças potenciais. Toque para escanear e eliminá-las.</string>
<string name="notify_battery_info">Verifique o consumo da bateria do seu telefone recentemente!</string> <string name="notify_battery_info">Verifique o consumo da bateria do seu telefone recentemente!</string>
<string name="notify_large_file">Libere espaço de armazenamento limpando arquivos grandes!</string> <string name="notify_large_file">Libere espaço de armazenamento limpando arquivos grandes!</string>
<string name="notify_similar_photos">Limpe Fotos Semelhantes - Economize Espaço!</string> <string name="notify_similar_photos">Limpe Fotos Semelhantes - Economize Espaço!</string>
<string name="notify_screenshot">Libere espaço limpando screenshots acumuladas!</string> <string name="notify_screenshot">Libere espaço limpando screenshots acumuladas!</string>
<string name="notify_photo_compression">Libere espaço de armazenamento comprimindo fotos.</string> <string name="notify_photo_compression">Libere espaço de armazenamento comprimindo fotos.</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">Se você sair, os resultados da verificação serão descartados.</string>
<string name="exit_scanning">Sair da verificação</string>
<string name="ads_are_about_to_be_shown_s">Anúncios serão exibidos em (%1$ss)</string> <string name="ads_are_about_to_be_shown_s">Anúncios serão exibidos em (%1$ss)</string>
<string name="issue">%1$s problema</string> <string name="by_continuing_">Ao continuar, você concorda com\u0020</string>
<string name="thank_you_very_much">Muito obrigado por avaliar nosso aplicativo.</string>
<string name="view">Visualizar</string>
<string name="content_not_found">Conteúdo não encontrado</string>
<string name="uninstall_app">Desinstalar app</string>
<string name="ok">OK</string>
<string name="size">Tamanho</string>
<string name="install_time">Data de instalação</string>
<string name="app_function_experience_tip">%s é um limpador avançado para dispositivos Android. Pode limpar arquivos vazios, logs, APKs antigos, arquivos temporários, fotos similares e arquivos grandes. Também mostra informações da bateria, desinstala apps e comprime imagens.</string>
<string name="experience_it_immediately">Experimente agora</string>
<string name="screenshot">Captura de tela</string>
<string name="exit_uninstall_app_content">Sair da desinstalação? Apps não usados podem ocupar espaço.</string>
<string name="notify_uninstall_app">Remova apps não utilizados para liberar espaço.</string>
<string name="quick_clean">Limpeza rápida</string>
<string name="scan_completed">Varredura concluída</string>
<string name="turn_on_notification">Ativar notificações</string>
<string name="redundant_files_found">Arquivos redundantes encontrados</string>
<string name="found_f">%1$s encontrados</string>
<string name="large_file">Arquivos grandes</string>
<string name="exit_uninstall_app">Sair da desinstalação</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="which_type_do_you_want_to_clean">您想清理哪种类型?</string> <string name="which_type_do_you_want_to_clean">您想清理哪种类型?</string>
<string name="consent"> <string name="consent">
在使用本应用过程中,我们需要获取以下信息:手机型号、手机制造商、安卓系统版本、应用版本号、应用版本名称、包名、谷歌广告ID、手机本地时区、手机相册、空文件夹、APK文件、临时文件、日志文件、电池电量、手机待机时间、电池温度、电池电压、电池技术、电池容量、电池电流、电池电流平均值 在使用本应用过程中,我们需要获取以下信息:手机型号、手机制造商、安卓系统版本、应用版本号、应用版本名称、包名、谷歌广告ID、手机本地时区、手机相册、空文件夹、APK文件、临时文件、日志文件、电池电量、手机待机时间、电池温度、电池电压、电池技术、电池容量、电池电流、电池电流平均值
...@@ -15,21 +15,16 @@ ...@@ -15,21 +15,16 @@
<string name="open_settings">打开设置</string> <string name="open_settings">打开设置</string>
<string name="storage_permission_title">需要获取存储权限</string> <string name="storage_permission_title">需要获取存储权限</string>
<string name="storage_permission_content">允许%s访问「所有文件访问」权限来管理您设备上的文件?</string> <string name="storage_permission_content">允许%s访问「所有文件访问」权限来管理您设备上的文件?</string>
<string name="preparing_advertisement">准备广告中</string>
<string name="involve_ad">此过程可能包含广告</string> <string name="involve_ad">此过程可能包含广告</string>
<string name="consent_required">需要同意</string> <string name="consent_required">需要同意</string>
<string name="file_recovery">文件恢复</string>
<string name="junk_clean">垃圾清理</string> <string name="junk_clean">垃圾清理</string>
<string name="battery_info">电池信息</string> <string name="battery_info">电池信息</string>
<string name="screenshot_clean">截图清理</string> <string name="screenshot_clean">截图清理</string>
<string name="app_manager">应用管理</string>
<string name="large_file_clean">大文件清理</string> <string name="large_file_clean">大文件清理</string>
<string name="photo_compression">图片压缩</string> <string name="photo_compression">图片压缩</string>
<string name="similar_photos">相似照片</string> <string name="similar_photos">相似照片</string>
<string name="home">首页</string> <string name="home">首页</string>
<string name="recovery">恢复</string>
<string name="settings">设置</string> <string name="settings">设置</string>
<string name="battery_status">电池状态</string> <string name="battery_status">电池状态</string>
<string name="temperature">温度</string> <string name="temperature">温度</string>
<string name="voltage">电压</string> <string name="voltage">电压</string>
...@@ -38,13 +33,9 @@ ...@@ -38,13 +33,9 @@
<string name="normal">正常</string> <string name="normal">正常</string>
<string name="battery_type">电池类型</string> <string name="battery_type">电池类型</string>
<string name="battery_capacity">电池容量</string> <string name="battery_capacity">电池容量</string>
<string name="please_wait">请稍候</string> <string name="please_wait">请稍候</string>
<string name="power">电量</string> <string name="power">电量</string>
<string name="charging">充电中</string> <string name="charging">充电中</string>
<string name="left_with_current_power_consumption">按当前耗电还剩</string>
<string name="finish">完成</string>
<string name="found">发现</string>
<string name="clean_tips">清理不会删除您的个人数据</string> <string name="clean_tips">清理不会删除您的个人数据</string>
<string name="clean">清理</string> <string name="clean">清理</string>
<string name="go_it">知道了</string> <string name="go_it">知道了</string>
...@@ -55,20 +46,13 @@ ...@@ -55,20 +46,13 @@
<string name="cleaned_up">已清理</string> <string name="cleaned_up">已清理</string>
<string name="cleaned_up_content">清理了其他数据以释放更多空间</string> <string name="cleaned_up_content">清理了其他数据以释放更多空间</string>
<string name="result_junk_clean">清理不必要的垃圾文件!</string> <string name="result_junk_clean">清理不必要的垃圾文件!</string>
<string name="result_antivirus">手机病毒防护</string>
<string name="clean_now">立即清理</string> <string name="clean_now">立即清理</string>
<string name="result_battery_info">查看电池使用情况和详情</string>
<string name="result_large_file_clean">清理大文件释放存储空间</string>
<string name="result_photo_compression">减小照片尺寸释放更多空间</string>
<string name="result_screenshot_clean">清理截图释放更多空间</string>
<string name="result_similar_photos">删除重复照片节省空间</string>
<string name="all_types">全部类型</string> <string name="all_types">全部类型</string>
<string name="delete">删除</string> <string name="delete">删除</string>
<string name="other_than">除此之外</string> <string name="other_than">除此之外</string>
<string name="image">图片</string> <string name="image">图片</string>
<string name="apk">APK</string> <string name="apk">APK</string>
<string name="other_types">其他类型</string> <string name="other_types">其他类型</string>
<string name="all_time">全部时间</string> <string name="all_time">全部时间</string>
<string name="week_1">1周内</string> <string name="week_1">1周内</string>
<string name="month_1">1个月内</string> <string name="month_1">1个月内</string>
...@@ -90,45 +74,15 @@ ...@@ -90,45 +74,15 @@
<string name="compress_all">全部压缩</string> <string name="compress_all">全部压缩</string>
<string name="best_quality_photo">最佳画质</string> <string name="best_quality_photo">最佳画质</string>
<string name="most_space_saved">最大节省空间</string> <string name="most_space_saved">最大节省空间</string>
<string name="recover_tip">从未root的安卓设备恢复丢失数据</string>
<string name="photos">照片</string>
<string name="recover_lost_photos">恢复丢失照片</string>
<string name="videos">视频</string>
<string name="recover_lost_videos">恢复丢失视频</string>
<string name="audios">音频</string>
<string name="documents">文档</string>
<string name="recover_lost_documents">恢复丢失文档</string>
<string name="scan">扫描</string>
<string name="click_to_view">点击查看</string>
<string name="clean_junk">清理垃圾</string> <string name="clean_junk">清理垃圾</string>
<string name="more">更多</string>
<string name="duplicate_photos">重复照片</string>
<string name="already_saved_for_you">已为您节省</string> <string name="already_saved_for_you">已为您节省</string>
<string name="rate_us">评价我们</string> <string name="rate_us">评价我们</string>
<string name="version">版本</string> <string name="version">版本</string>
<string name="recycle_bin">回收站</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedy正在保护您的照片、视频、文件和应用文件不被删除]]></string>
<string name="recyclebin">回收站</string>
<string name="thank_you_for_using_app">感谢您使用%s!</string> <string name="thank_you_for_using_app">感谢您使用%s!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">非常感谢您抽空为我们评分</string>
<string name="submit">提交</string> <string name="submit">提交</string>
<string name="screenshot_cleaner">截图清理</string> <string name="guide_tip_1">快速清除垃圾,提升速度。一键释放内存空间</string>
<string name="guide_tip_2">清理照片、视频和音频文件以节省空间,保持手机整洁</string>
<string name="guide_title_1">一键清理</string> <string name="guide_tip_3">强力扫描,全面保护。让您的手机安全无忧</string>
<string name="guide_tip_1">
快速清除垃圾,提升速度。一键释放内存空间
</string>
<string name="guide_title_2">清理存储节省空间</string>
<string name="guide_tip_2">
清理照片、视频和音频文件以节省空间,保持手机整洁
</string>
<string name="guide_title_3">病毒防护盾</string>
<string name="guide_tip_3">
强力扫描,全面保护。让您的手机安全无忧
</string>
<string name="next">下一步</string> <string name="next">下一步</string>
<string name="sure">确定</string> <string name="sure">确定</string>
<string name="exit_junk_clean">退出垃圾清理</string> <string name="exit_junk_clean">退出垃圾清理</string>
...@@ -146,74 +100,45 @@ ...@@ -146,74 +100,45 @@
<string name="logout_content">您确定要退出而不尝试再次清理垃圾吗?</string> <string name="logout_content">您确定要退出而不尝试再次清理垃圾吗?</string>
<string name="please_wait_a_moment">请稍等片刻</string> <string name="please_wait_a_moment">请稍等片刻</string>
<string name="exit">退出</string> <string name="exit">退出</string>
<string name="start_to_use">开始使用</string>
<string name="privacy">隐私</string>
<string name="agree">同意</string>
<string name="terms_of_service">服务条款</string>
<string name="notification_title">开启通知</string>
<string name="notification_content">不错过重要的手机清理通知提醒</string>
<string name="turn_on">立即开启</string> <string name="turn_on">立即开启</string>
<string name="junk_files">垃圾文件</string>
<string name="memory_used">内存使用</string>
<string name="storage_used">存储使用</string>
<string name="CLEAN">清理</string> <string name="CLEAN">清理</string>
<string name="make_your_phone_clean">让您的手机保持清洁</string>
<string name="antivirus">病毒查杀</string>
<string name="mobile_antivirus_protection">手机病毒防护</string>
<string name="clear_phone_screenshot">清理手机截图</string>
<string name="clear_large_files_on_the_phone">清理手机大文件</string>
<string name="clear_similar_pictures_on_the_phone">清理手机相似图片</string>
<string name="image_compression">图片压缩</string>
<string name="compress_mobile_phone_images">压缩手机图片</string>
<string name="view_battery_information">查看电池信息</string>
<string name="show_all_settings">显示全部设置</string>
<string name="malware_scan">病毒扫描</string>
<string name="uninstall">卸载</string> <string name="uninstall">卸载</string>
<string name="apps">应用</string>
<string name="antivirus_scan_error_occurred_please_try_again">病毒扫描出错,请重试</string>
<string name="exit_malware_clean">退出病毒扫描</string>
<string name="exit_malware_clean_content">退出病毒扫描?发现潜在威胁!请立即停留并保护您的设备</string>
<string name="no_threats_found">您的手机绝对安全\n未发现任何威胁!</string>
<string name="kind_tips">温馨提示</string>
<string name="powered_by_trustlook">由Trustlook提供支持</string> <string name="powered_by_trustlook">由Trustlook提供支持</string>
<string name="malware_recommended">建议开启网络连接以获得更准确的结果</string> <string name="malware_recommended">建议开启网络连接以获得更准确的结果</string>
<string name="notification_tips">开启通知以接收重要建议</string> <string name="notification_tips">开启通知以接收重要建议</string>
<string name="don_t_miss_important_tips">不错过重要提示</string>
<string name="let_us_know_how_we_re_doing">告诉我们您的使用体验</string>
<string name="we_feedback_invaluable">
我们始终在努力改进,您的反馈对我们非常宝贵!
</string>
<string name="select_a_language">选择语言</string> <string name="select_a_language">选择语言</string>
<string name="one_tap_clean">一键清理</string>
<string name="get_started">开始使用</string> <string name="get_started">开始使用</string>
<string name="loading">加载中...</string>
<string name="try_it_new">尝试新功能</string>
<string name="battery">电池</string> <string name="battery">电池</string>
<string name="estimated_battery">预估电量</string> <string name="estimated_battery">预估电量</string>
<string name="electric_current">电流</string> <string name="electric_current">电流</string>
<string name="real_time_current">实时电流</string> <string name="real_time_current">实时电流</string>
<string name="average_current">平均电流</string> <string name="average_current">平均电流</string>
<string name="permission_request">权限请求</string>
<string name="deny">拒绝</string>
<string name="allow">允许</string>
<string name="reject">拒绝</string>
<string name="collect_installed_application_information">收集已安装应用信息:</string>
<string name="when_you_use_the_vlrus">当您使用病毒扫描功能时,我们会收集您安装的应用信息,包括:已安装应用名称、应用包名、应用版本代码、应用版本名称、MD5哈希和签名信息、安装路径及设备存储上的文件信息</string>
<string name="using_and_transferring_installed">使用和传输已安装应用信息:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">病毒扫描功能使用Trustlook SDK。当您使用病毒扫描功能时,我们会将收集的已安装应用信息上传至Trustlook第三方病毒数据库进行扫描,以便及时发现可能存在的安全隐患,提供更好的防护。Trustlook SDK提供的安全服务会对应用集合进行分析,应用静态和行为分析给出应用风险报告</string>
<string name="installed_application_information_access_and_sharing_statement">已安装应用信息访问与共享声明:</string>
<string name="we_take_the_confidentiality_of_your">我们非常重视您信息的保密性,我们和Trustlook SDK不会出售、许可、转让或披露这些信息,除非获得您的授权</string>
<string name="view_information_collection_instructions">查看信息收集说明:</string>
<string name="notify_junk_clean">立即清理手机上的垃圾文件!</string> <string name="notify_junk_clean">立即清理手机上的垃圾文件!</string>
<string name="notif_antivirus">您的设备可能存在潜在威胁。点击扫描并清除</string>
<string name="notify_battery_info">查看您手机最近的电池消耗情况!</string> <string name="notify_battery_info">查看您手机最近的电池消耗情况!</string>
<string name="notify_large_file">清理大文件释放存储空间!</string> <string name="notify_large_file">清理大文件释放存储空间!</string>
<string name="notify_similar_photos">清理相似照片 - 节省空间!</string> <string name="notify_similar_photos">清理相似照片 - 节省空间!</string>
<string name="notify_screenshot">通过清理截图释放空间!</string> <string name="notify_screenshot">通过清理截图释放空间!</string>
<string name="notify_photo_compression">通过压缩照片释放手机存储空间</string> <string name="notify_photo_compression">通过压缩照片释放手机存储空间</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">如果退出,扫描结果将被丢弃</string>
<string name="exit_scanning">退出扫描</string>
<string name="ads_are_about_to_be_shown_s">即将显示广告(%1$s秒)</string> <string name="ads_are_about_to_be_shown_s">即将显示广告(%1$s秒)</string>
<string name="issue">%1$s个问题</string> <string name="by_continuing_">继续即表示您同意\u0020</string>
<string name="thank_you_very_much">感谢您花时间为我们评分</string>
<string name="view">查看</string>
<string name="content_not_found">内容未找到</string>
<string name="uninstall_app">卸载应用</string>
<string name="ok">确定</string>
<string name="size">大小</string>
<string name="install_time">安装时间</string>
<string name="app_function_experience_tip">%s是用于清理Android设备的高级清理工具。可清理空文件、日志文件、过期APK、临时文件、相似图片和大文件。还能查看电池信息、卸载应用和压缩图片。</string>
<string name="experience_it_immediately">立即体验</string>
<string name="screenshot">截图</string>
<string name="exit_uninstall_app_content">退出卸载应用?未使用的应用可能占用存储空间</string>
<string name="notify_uninstall_app">移除未使用的应用以释放存储空间。</string>
<string name="quick_clean">快速清理</string>
<string name="scan_completed">扫描完成</string>
<string name="turn_on_notification">开启通知</string>
<string name="redundant_files_found">发现冗余文件</string>
<string name="found_f">发现%1$s</string>
<string name="large_file">大文件</string>
<string name="exit_uninstall_app">退出卸载应用</string>
</resources> </resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="ExtraTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="preparing_advertisement">準備廣告中</string>
<string name="involve_ad">此過程可能包含廣告。</string> <string name="involve_ad">此過程可能包含廣告。</string>
<string name="consent_required">需要同意</string> <string name="consent_required">需要同意</string>
<string name="which_type_do_you_want_to_clean">您想清理哪種類型?</string> <string name="which_type_do_you_want_to_clean">您想清理哪種類型?</string>
...@@ -19,19 +18,14 @@ ...@@ -19,19 +18,14 @@
<string name="open_settings">打開設置</string> <string name="open_settings">打開設置</string>
<string name="storage_permission_title">需要獲取存儲權限</string> <string name="storage_permission_title">需要獲取存儲權限</string>
<string name="storage_permission_content">允許%s訪問「所有檔案存取」權限以管理您設備上的檔案?</string> <string name="storage_permission_content">允許%s訪問「所有檔案存取」權限以管理您設備上的檔案?</string>
<string name="file_recovery">檔案恢復</string>
<string name="junk_clean">垃圾清理</string> <string name="junk_clean">垃圾清理</string>
<string name="battery_info">電池信息</string> <string name="battery_info">電池信息</string>
<string name="screenshot_clean">截圖清理</string> <string name="screenshot_clean">截圖清理</string>
<string name="app_manager">應用管理</string>
<string name="large_file_clean">大檔案清理</string> <string name="large_file_clean">大檔案清理</string>
<string name="photo_compression">照片壓縮</string> <string name="photo_compression">照片壓縮</string>
<string name="similar_photos">重複照片</string> <string name="similar_photos">重複照片</string>
<string name="home">首頁</string> <string name="home">首頁</string>
<string name="recovery">恢復</string>
<string name="settings">設置</string> <string name="settings">設置</string>
<string name="battery_status">電池狀態</string> <string name="battery_status">電池狀態</string>
<string name="temperature">溫度</string> <string name="temperature">溫度</string>
<string name="voltage">電壓</string> <string name="voltage">電壓</string>
...@@ -40,13 +34,9 @@ ...@@ -40,13 +34,9 @@
<string name="normal">正常</string> <string name="normal">正常</string>
<string name="battery_type">電池類型</string> <string name="battery_type">電池類型</string>
<string name="battery_capacity">電池容量</string> <string name="battery_capacity">電池容量</string>
<string name="please_wait">請稍候</string> <string name="please_wait">請稍候</string>
<string name="power">電量</string> <string name="power">電量</string>
<string name="charging">充電中</string> <string name="charging">充電中</string>
<string name="left_with_current_power_consumption">根據當前耗電量剩餘</string>
<string name="finish">完成</string>
<string name="found">找到</string>
<string name="clean_tips">清理不會刪除您的個人數據</string> <string name="clean_tips">清理不會刪除您的個人數據</string>
<string name="clean">清理</string> <string name="clean">清理</string>
<string name="go_it">知道了</string> <string name="go_it">知道了</string>
...@@ -57,20 +47,13 @@ ...@@ -57,20 +47,13 @@
<string name="cleaned_up">已清理</string> <string name="cleaned_up">已清理</string>
<string name="cleaned_up_content">清理其他數據以釋放更多空間</string> <string name="cleaned_up_content">清理其他數據以釋放更多空間</string>
<string name="result_junk_clean">清理不必要的垃圾檔案!</string> <string name="result_junk_clean">清理不必要的垃圾檔案!</string>
<string name="result_antivirus">手機防毒保護</string>
<string name="clean_now">立即清理</string> <string name="clean_now">立即清理</string>
<string name="result_battery_info">查看電池使用情況及詳細信息</string>
<string name="result_large_file_clean">清理大檔案以釋放存儲空間</string>
<string name="result_photo_compression">減小照片大小以釋放更多空間</string>
<string name="result_screenshot_clean">檢查截圖清理以釋放更多空間</string>
<string name="result_similar_photos">刪除重複照片以節省空間。</string>
<string name="all_types">所有類型</string> <string name="all_types">所有類型</string>
<string name="delete">刪除</string> <string name="delete">刪除</string>
<string name="other_than">其他</string> <string name="other_than">其他</string>
<string name="image">圖片</string> <string name="image">圖片</string>
<string name="apk">Apk</string> <string name="apk">Apk</string>
<string name="other_types">其他類型</string> <string name="other_types">其他類型</string>
<string name="all_time">全部時間</string> <string name="all_time">全部時間</string>
<string name="week_1">1週</string> <string name="week_1">1週</string>
<string name="month_1">1個月</string> <string name="month_1">1個月</string>
...@@ -92,47 +75,15 @@ ...@@ -92,47 +75,15 @@
<string name="compress_all">全部壓縮</string> <string name="compress_all">全部壓縮</string>
<string name="best_quality_photo">最佳品質照片</string> <string name="best_quality_photo">最佳品質照片</string>
<string name="most_space_saved">最大空間節省</string> <string name="most_space_saved">最大空間節省</string>
<string name="recover_tip">從未root的Android設備恢復丟失數據</string>
<string name="photos">照片</string>
<string name="recover_lost_photos">恢復丟失照片</string>
<string name="videos">視頻</string>
<string name="recover_lost_videos">恢復丟失視頻</string>
<string name="audios">音頻</string>
<string name="documents">文件</string>
<string name="recover_lost_documents">恢復丟失文件</string>
<string name="scan">掃描</string>
<string name="click_to_view">點擊查看</string>
<string name="clean_junk">清理垃圾</string> <string name="clean_junk">清理垃圾</string>
<string name="more">更多</string>
<string name="duplicate_photos">重複照片</string>
<string name="already_saved_for_you">已為您節省</string> <string name="already_saved_for_you">已為您節省</string>
<string name="rate_us">評價我們</string> <string name="rate_us">評價我們</string>
<string name="version">版本</string> <string name="version">版本</string>
<string name="recycle_bin">回收站</string>
<string name="recyclebin_tip"><![CDATA[Mobispeedy正在保護您的照片、視頻、文件及應用檔案不被刪除]]></string>
<string name="recyclebin">回收站</string>
<string name="thank_you_for_using_app">感謝您使用%s!</string> <string name="thank_you_for_using_app">感謝您使用%s!</string>
<string name="thank_you_very_much_for_taking_the_time_to_rate_us">非常感謝您抽出時間評價我們。</string>
<string name="submit">提交</string> <string name="submit">提交</string>
<string name="screenshot_cleaner">截圖清理</string> <string name="guide_tip_1">清除垃圾,提升速度。一鍵釋放記憶體。</string>
<string name="guide_tip_2">清理照片、視頻和音頻檔案以節省空間,保持手機整潔。</string>
<string name="guide_tip_3">強大的掃描,全面保護。讓您的手機安全無憂。</string>
<string name="guide_title_1">一鍵清理</string>
<string name="guide_tip_1">
清除垃圾,提升速度。一鍵釋放記憶體。
</string>
<string name="guide_title_2">清理存儲節省空間</string>
<string name="guide_tip_2">
清理照片、視頻和音頻檔案以節省空間,保持手機整潔。
</string>
<string name="guide_title_3">病毒防護</string>
<string name="guide_tip_3">
強大的掃描,全面保護。讓您的手機安全無憂。
</string>
<string name="next">下一步</string> <string name="next">下一步</string>
<string name="sure">確定</string> <string name="sure">確定</string>
<string name="exit_junk_clean">退出垃圾清理</string> <string name="exit_junk_clean">退出垃圾清理</string>
...@@ -150,73 +101,46 @@ ...@@ -150,73 +101,46 @@
<string name="logout_content">您確定要退出而不嘗試再次清理垃圾嗎?</string> <string name="logout_content">您確定要退出而不嘗試再次清理垃圾嗎?</string>
<string name="please_wait_a_moment">請稍等片刻</string> <string name="please_wait_a_moment">請稍等片刻</string>
<string name="exit">退出</string> <string name="exit">退出</string>
<string name="start_to_use">開始使用</string>
<string name="privacy">隱私</string>
<string name="agree">同意</string>
<string name="terms_of_service">服務條款</string>
<string name="notification_title">開啟通知</string>
<string name="notification_content">不錯過重要的手機清理通知提醒</string>
<string name="turn_on">開啟</string> <string name="turn_on">開啟</string>
<string name="junk_files">垃圾檔案</string>
<string name="memory_used">記憶體使用</string>
<string name="storage_used">存儲使用</string>
<string name="CLEAN">清理</string> <string name="CLEAN">清理</string>
<string name="make_your_phone_clean">讓您的手機更乾淨</string>
<string name="antivirus">防毒</string>
<string name="mobile_antivirus_protection">手機防毒保護</string>
<string name="clear_phone_screenshot">清理手機截圖</string>
<string name="clear_large_files_on_the_phone">清理手機上的大檔案</string>
<string name="clear_similar_pictures_on_the_phone">清理手機上的相似圖片</string>
<string name="image_compression">圖片壓縮</string>
<string name="compress_mobile_phone_images">壓縮手機圖片</string>
<string name="view_battery_information">查看電池信息</string>
<string name="show_all_settings">顯示所有設置</string>
<string name="malware_scan">病毒掃描</string>
<string name="uninstall">卸載</string> <string name="uninstall">卸載</string>
<string name="apps">應用</string>
<string name="antivirus_scan_error_occurred_please_try_again">病毒掃描出錯,請重試</string>
<string name="exit_malware_clean">退出病毒掃描</string>
<string name="exit_malware_clean_content">退出病毒掃描?發現潛在威脅!請立即保護您的設備。</string>
<string name="no_threats_found">您的手機完全安全\n未發現任何威脅!</string>
<string name="kind_tips">溫馨提示</string>
<string name="powered_by_trustlook">由Trustlook提供支持</string> <string name="powered_by_trustlook">由Trustlook提供支持</string>
<string name="malware_recommended">建議開啟網絡連接以獲得更準確的結果</string> <string name="malware_recommended">建議開啟網絡連接以獲得更準確的結果</string>
<string name="notification_tips">啟用通知以接收重要建議。</string> <string name="notification_tips">啟用通知以接收重要建議。</string>
<string name="don_t_miss_important_tips">不錯過重要提示</string>
<string name="let_us_know_how_we_re_doing">告訴我們您的使用體驗!</string>
<string name="we_feedback_invaluable">
我們一直在努力改進,您的反饋對我們非常寶貴!
</string>
<string name="select_a_language">選擇語言</string> <string name="select_a_language">選擇語言</string>
<string name="one_tap_clean">一鍵清理</string>
<string name="get_started">開始使用</string> <string name="get_started">開始使用</string>
<string name="loading">載入中...</string>
<string name="try_it_new">試試新功能</string>
<string name="battery">電池</string> <string name="battery">電池</string>
<string name="estimated_battery">預計電池</string> <string name="estimated_battery">預計電池</string>
<string name="electric_current">電流</string> <string name="electric_current">電流</string>
<string name="real_time_current">實時電流</string> <string name="real_time_current">實時電流</string>
<string name="average_current">平均電流</string> <string name="average_current">平均電流</string>
<string name="permission_request">權限請求</string>
<string name="deny">拒絕</string>
<string name="allow">允許</string>
<string name="reject">拒絕</string>
<string name="collect_installed_application_information">收集已安裝應用程式信息:</string>
<string name="when_you_use_the_vlrus">當您使用病毒掃描功能時,我們會收集您安裝的應用程式信息,包括:已安裝應用名稱、應用套件名稱、應用版本代碼、應用版本名稱、MD5哈希和簽名信息、安裝路徑及設備存儲上的檔案信息。</string>
<string name="using_and_transferring_installed">使用和傳輸已安裝應用程式信息:</string>
<string name="virus_scanning_functionality_uses_trustlook_sdk">病毒掃描功能使用Trustlook SDK。當您使用病毒掃描功能時,我們會將收集的已安裝應用程式信息上傳至Trustlook第三方病毒數據庫進行掃描,以便及時發現可能的安全風險並提供更好的保護。Trustlook SDK提供安全服務,對應用集合進行分析,應用靜態和行為分析以提供應用風險報告。</string>
<string name="installed_application_information_access_and_sharing_statement">已安裝應用程式信息訪問與共享聲明:</string>
<string name="we_take_the_confidentiality_of_your">我們非常重視您的信息保密,我們和Trustlook SDK不會出售、許可、轉讓或披露這些信息,除非獲得您的授權。</string>
<string name="view_information_collection_instructions">查看信息收集說明:</string>
<string name="notify_junk_clean">立即清理手機上的垃圾檔案!</string> <string name="notify_junk_clean">立即清理手機上的垃圾檔案!</string>
<string name="notif_antivirus">您的設備可能存在潛在威脅。點擊掃描並清除。</string>
<string name="notify_battery_info">查看您手機最近的電池消耗情況!</string> <string name="notify_battery_info">查看您手機最近的電池消耗情況!</string>
<string name="notify_large_file">清理大檔案以釋放存儲空間!</string> <string name="notify_large_file">清理大檔案以釋放存儲空間!</string>
<string name="notify_similar_photos">清理相似照片 - 節省空間!</string> <string name="notify_similar_photos">清理相似照片 - 節省空間!</string>
<string name="notify_screenshot">清理截圖雜亂以釋放空間!</string> <string name="notify_screenshot">清理截圖雜亂以釋放空間!</string>
<string name="notify_photo_compression">通過壓縮照片釋放手機存儲空間。</string> <string name="notify_photo_compression">通過壓縮照片釋放手機存儲空間。</string>
<string name="lf_you_exit_the_scanning_results_will_be_discarded">如果您退出,掃描結果將被丟棄。</string>
<string name="exit_scanning">退出掃描</string>
<string name="ads_are_about_to_be_shown_s">即將顯示廣告(%1$s秒)</string> <string name="ads_are_about_to_be_shown_s">即將顯示廣告(%1$s秒)</string>
<string name="issue">%1$s問題</string>
<string name="by_continuing_">繼續即表示您同意\u0020</string>
<string name="thank_you_very_much">感謝您花時間為我們評分</string>
<string name="view">檢視</string>
<string name="content_not_found">內容未找到</string>
<string name="uninstall_app">解除安裝應用程式</string>
<string name="ok">確定</string>
<string name="size">大小</string>
<string name="install_time">安裝時間</string>
<string name="app_function_experience_tip">%s是專為Android裝置設計的高階清理工具,可清理空檔案、日誌檔、過期APK、暫存檔、相似圖片和大檔案。同時能檢視電池資訊、解除安裝應用程式和壓縮圖片。</string>
<string name="experience_it_immediately">立即體驗</string>
<string name="screenshot">螢幕截圖</string>
<string name="exit_uninstall_app_content">結束解除安裝應用程式?未使用的應用程式可能佔用儲存空間</string>
<string name="notify_uninstall_app">移除未使用的應用程式以釋放儲存空間。</string>
<string name="quick_clean">快速清理</string>
<string name="scan_completed">掃描完成</string>
<string name="turn_on_notification">開啟通知</string>
<string name="redundant_files_found">發現冗餘檔案</string>
<string name="found_f">發現%1$s</string>
<string name="large_file">大型檔案</string>
<string name="exit_uninstall_app">結束解除安裝</string>
</resources> </resources>
\ No newline at end of file
<resources xmlns:tools="http://schemas.android.com/tools" tools:ignore="MissingTranslation"> <resources xmlns:tools="http://schemas.android.com/tools">
<string name="app_name" translatable="false">Simple Cleaner</string>
<string name="app_name">Simple Cleaner</string> <string name="facebook_app_id" translatable="false">4512448902756291</string>
<string name="facebook_app_id">4512448902756291</string> <string name="mb_10" translatable="false">10 MB</string>
<string name="mb_10">10 MB</string> <string name="mb_20" translatable="false">20 MB</string>
<string name="mb_20">20 MB</string> <string name="mb_50" translatable="false">50 MB</string>
<string name="mb_50">50 MB</string> <string name="mb_100" translatable="false">100 MB</string>
<string name="mb_100">100 MB</string> <string name="mb_500" translatable="false">500 MB</string>
<string name="mb_500">500 MB</string>
<string name="involve_ad">This process may involve ad.</string>
<string name="consent_required">Consent Required</string>
<string name="which_type_do_you_want_to_clean">Which type do you want to clean?</string> <string name="which_type_do_you_want_to_clean">Which type do you want to clean?</string>
<string name="consent">During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package name,Google Ad ID,Mobile phone local time zone,Mobile phone photo album, empty folders, apk files, temp files, log files,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery Please rest assured that we will handle your information in strict accordance with relevant laws and regulations. All the information we collect will be used reasonably to ensure the normal operation and service improvement of the APP, and we will take all necessary measures to protect the security of your personal information. Your privacy is of utmost importance to us.</string>
<string name="consent">
During the use of this APP, we need to obtain the following information:Mobile phone model, mobile phone manufacturer,Android system version,Application version number, application version name,Package name,Google Ad ID,Mobile phone local time zone,Mobile phone photo album, empty folders, apk files, temp files, log files,Battery power, mobile phone standby time, battery temperature, battery voltage, battery technology, battery capacity, battery current, current average value of the battery
Please rest assured that we will handle your information in strict accordance with relevant laws and regulations. All the information we collect will be used reasonably to ensure the normal operation and service improvement of the APP, and we will take all necessary measures to protect the security of your personal information. Your privacy is of utmost importance to us.
</string>
<string name="start">Start</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="photo">Photo</string>
<string name="audio">Audio</string>
<string name="document">Document</string>
<string name="video">Video</string>
<string name="continue_">Continue</string>
<string name="open_settings">Open Settings</string>
<string name="storage_permission_title">Need to obtain storage permissions</string>
<string name="storage_permission_content">Allow %s to access All Files Access permission to manage files of your device?</string>
<string name="junk_clean">Junk Clean</string> <string name="junk_clean">Junk Clean</string>
<string name="battery_info">Battery Info</string> <string name="battery_info">Battery Info</string>
<string name="screenshot_clean">Screenshot Clean</string> <string name="screenshot_clean">Screenshot Clean</string>
<string name="large_file_clean">Large File Clean</string> <string name="large_file_clean">Large File Clean</string>
<string name="large_file">Large File</string>
<string name="photo_compression">Photo Compression</string> <string name="photo_compression">Photo Compression</string>
<string name="similar_photos">Similar Photos</string> <string name="similar_photos">Similar Photos</string>
<string name="home">Home</string> <string name="home">Home</string>
<string name="settings">Settings</string> <string name="settings">Settings</string>
<string name="battery_status">Battery status</string> <string name="battery_status">Battery status</string>
<string name="temperature">Temperature</string> <string name="temperature">Temperature</string>
<string name="voltage">Voltage</string> <string name="voltage">Voltage</string>
...@@ -48,7 +24,6 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -48,7 +24,6 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="normal">Normal</string> <string name="normal">Normal</string>
<string name="battery_type">Battery Type</string> <string name="battery_type">Battery Type</string>
<string name="battery_capacity">Battery Capacity</string> <string name="battery_capacity">Battery Capacity</string>
<string name="please_wait">Please wait</string> <string name="please_wait">Please wait</string>
<string name="power">Power</string> <string name="power">Power</string>
<string name="charging">Charging</string> <string name="charging">Charging</string>
...@@ -69,7 +44,6 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -69,7 +44,6 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="image">Image</string> <string name="image">Image</string>
<string name="apk">Apk</string> <string name="apk">Apk</string>
<string name="other_types">Other Types</string> <string name="other_types">Other Types</string>
<string name="all_time">All time</string> <string name="all_time">All time</string>
<string name="week_1">1 week</string> <string name="week_1">1 week</string>
<string name="month_1">1 month</string> <string name="month_1">1 month</string>
...@@ -97,21 +71,9 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -97,21 +71,9 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="version">Version</string> <string name="version">Version</string>
<string name="thank_you_for_using_app">Thank you for using\n %s!</string> <string name="thank_you_for_using_app">Thank you for using\n %s!</string>
<string name="submit">Submit</string> <string name="submit">Submit</string>
<string name="guide_tip_1">Clean up clutter to unlock more space and keep your phone running smoothly.</string>
<string name="guide_tip_2">Quickly clear junk files and free up valuable storage with just a few taps.</string>
<string name="guide_tip_1"> <string name="guide_tip_3">Clean photos,videos,and audio files to save space and keep your phone tidy.</string>
Clean up clutter to unlock more space and keep your phone running smoothly.
</string>
<string name="guide_tip_2">
Quickly clear junk files and free up valuable storage with just a few taps.
</string>
<string name="guide_tip_3">
Clean photos,videos,and audio files to save space and keep your phone tidy.
</string>
<string name="next">Next</string> <string name="next">Next</string>
<string name="sure">Sure</string> <string name="sure">Sure</string>
<string name="exit_junk_clean">Exit Junk Clean</string> <string name="exit_junk_clean">Exit Junk Clean</string>
...@@ -125,7 +87,6 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -125,7 +87,6 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="exit_screenshot_cleaner">Exit Screenshot Clean</string> <string name="exit_screenshot_cleaner">Exit Screenshot Clean</string>
<string name="exit_screenshot_cleaner_content">Exit Screenshot Clean? Undeleted screenshots might be using space.</string> <string name="exit_screenshot_cleaner_content">Exit Screenshot Clean? Undeleted screenshots might be using space.</string>
<string name="exit_similar_photos">Exit Duplicate Photos</string> <string name="exit_similar_photos">Exit Duplicate Photos</string>
<string name="exit_uninstall_app">Exit Uninstall apps</string>
<string name="exit_similar_photos_content">Exit Duplicate Photos? Unmoved duplicate photos might be occupying space.</string> <string name="exit_similar_photos_content">Exit Duplicate Photos? Unmoved duplicate photos might be occupying space.</string>
<string name="logout_content">Are you sure you want to quit without trying to clean up the garbage again?</string> <string name="logout_content">Are you sure you want to quit without trying to clean up the garbage again?</string>
<string name="please_wait_a_moment">Please wait a moment</string> <string name="please_wait_a_moment">Please wait a moment</string>
...@@ -150,6 +111,8 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -150,6 +111,8 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="notify_screenshot">Remove unnecessary screenshots and save storage!</string> <string name="notify_screenshot">Remove unnecessary screenshots and save storage!</string>
<string name="notify_photo_compression">Compress pictures to free up valuable storage!</string> <string name="notify_photo_compression">Compress pictures to free up valuable storage!</string>
<string name="ads_are_about_to_be_shown_s">Ads are about to be shown(%1$ss)</string> <string name="ads_are_about_to_be_shown_s">Ads are about to be shown(%1$ss)</string>
<string name="by_continuing_">By continuing you are agreeing to the\u0020</string> <string name="by_continuing_">By continuing you are agreeing to the\u0020</string>
<string name="thank_you_very_much">Thank you very much for taking the time to rate us.</string> <string name="thank_you_very_much">Thank you very much for taking the time to rate us.</string>
<string name="view">View</string> <string name="view">View</string>
...@@ -168,6 +131,19 @@ Please rest assured that we will handle your information in strict accordance wi ...@@ -168,6 +131,19 @@ Please rest assured that we will handle your information in strict accordance wi
<string name="turn_on_notification">Turn on notification</string> <string name="turn_on_notification">Turn on notification</string>
<string name="redundant_files_found">Redundant Files Found</string> <string name="redundant_files_found">Redundant Files Found</string>
<string name="found_f">%1$s Found</string> <string name="found_f">%1$s Found</string>
<string name="involve_ad">This process may involve ad.</string>
<string name="consent_required">Consent Required</string>
<string name="start">Start</string>
<string name="privacy_policy">Privacy Policy</string>
<string name="photo">Photo</string>
<string name="audio">Audio</string>
<string name="document">Document</string>
<string name="video">Video</string>
<string name="continue_">Continue</string>
<string name="open_settings">Open Settings</string>
<string name="storage_permission_title">Need to obtain storage permissions</string>
<string name="storage_permission_content">Allow %s to access All Files Access permission to manage files of your device?</string>
<string name="large_file">Large File</string>
<string name="exit_uninstall_app">Exit Uninstall apps</string>
</resources> </resources>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment