Commit 4196c5c2 authored by wanglei's avatar wanglei

a

parent 173c24f6
Pipeline #1168 canceled with stages
*.iml
.gradle
/local.properties
/.idea/
.DS_Store
./app/build
/captures
.externalNativeBuild
.cxx
local.properties
app/build/
\ No newline at end of file
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'com.google.gms.google-services'
id 'kotlin-kapt'
id 'com.google.firebase.crashlytics'
}
android {
namespace 'com.test.fast.cleanerjunk'
compileSdk 34
defaultConfig {
applicationId "com.test.fast.cleanerjunk"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
ndk {
abiFilters 'arm64-v8a', 'armeabi-v7a', 'x86', 'x86_64'
}
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
setProperty("archivesBaseName", "easyjunkcleaner-v${versionName}")
}
signingConfigs {
realse {
storeFile file('../smartcl.jks')
storePassword '123456'
keyAlias 'key0'
keyPassword '123456'
}
}
buildTypes {
release {
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.realse
// 设置是否要自动上传
firebaseCrashlytics {
mappingFileUploadEnabled true
}
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
viewBinding true
buildConfig true
aidl true
}
lint {
baseline = file("lint-baseline.xml")
}
}
gradle.taskGraph.whenReady {
tasks.each { task ->
if (task.name.contains("uploadCrashlyticsMappingFile")) {
task.enabled = false
}
}
}
dependencies {
implementation(fileTree("libs"))
implementation 'androidx.core:core-ktx:1.9.0'
implementation 'androidx.appcompat:appcompat:1.6.1'
implementation 'com.google.android.material:material:1.12.0'
implementation 'androidx.constraintlayout:constraintlayout:2.1.4'
implementation 'androidx.activity:activity:1.8.0'
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.5'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1'
implementation("com.google.android.gms:play-services-ads:23.1.0")
implementation 'com.google.ads.mediation:applovin:12.4.3.0'
implementation 'com.google.ads.mediation:fyber:8.2.7.0'
implementation 'com.google.ads.mediation:ironsource:8.0.0.1'
implementation 'com.google.ads.mediation:vungle:7.3.1.0'
implementation 'com.google.ads.mediation:facebook:6.17.0.0'
implementation 'com.google.ads.mediation:mintegral:16.7.21.0'
implementation 'com.google.ads.mediation:pangle:5.9.0.4.0'
implementation 'com.github.bumptech.glide:glide:4.16.0'
implementation 'com.airbnb.android:lottie:6.4.0'
implementation platform('com.google.firebase:firebase-bom:32.3.1')
implementation 'com.google.firebase:firebase-analytics:21.6.2'
implementation 'com.google.firebase:firebase-crashlytics'
implementation("com.squareup.okhttp3:okhttp:4.9.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.9.0")
implementation("com.github.JavaNoober.BackgroundLibrary:libraryx:1.7.6")
implementation("com.github.pokercc:ExpandableRecyclerView:0.9.3")
def roomVersion = "2.5.0"
implementation("androidx.room:room-runtime:$roomVersion")
annotationProcessor("androidx.room:room-compiler:$roomVersion")
kapt("androidx.room:room-compiler:$roomVersion")
implementation("androidx.room:room-ktx:$roomVersion")
implementation group: 'com.google.code.gson', name: 'gson', version: '2.10.1'
implementation 'com.belerweb:pinyin4j:2.5.1'
implementation("com.google.firebase:firebase-messaging")
implementation("com.facebook.android:facebook-android-sdk:[8,9)")
implementation 'com.makeramen:roundedimageview:2.3.0'
implementation 'com.mikhaellopez:circularprogressbar:3.1.0'
}
\ No newline at end of file
This diff is collapsed.
{
"project_info": {
"project_number": "993178188325",
"project_id": "testcleanmaster",
"storage_bucket": "testcleanmaster.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:993178188325:android:a7986c2607f23024825dcc",
"android_client_info": {
"package_name": "com.test.fast.cleanerjunk"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCY5uqNx8qS5ZPvSIknbh2nH2v5vjzCmPI"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<issues format="6" by="lint 8.1.2" type="baseline" client="gradle" dependencies="false" name="AGP (8.1.2)" variant="fatal" version="8.1.2">
</issues>
This source diff could not be displayed because it is too large. You can view the blob instead.
# Add project specific ProGuard rules here.
# You can control the set of applied configuration files using the
# proguardFiles setting in build.gradle.
#
# For more details, see
# http://developer.android.com/guide/developing/tools/proguard.html
# If your project uses WebView with JS, uncomment the following
# and specify the fully qualified class name to the JavaScript interface
# class:
#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
# public *;
#}
# Uncomment this to preserve the line number information for
# debugging stack traces.
#-keepattributes SourceFile,LineNumberTable
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
-keep class com.test.fast.cleanerjunk.bean.** {*;}
-dontoptimize
-keepattributes Signature
-keep class com.squareup.okhttp.** { *; }
-keep class com.google.gson.stream.** { *; }
-keep class com.google.gson.** { *; }
-keep class com.alibaba.idst.** { *; }
-keep class * extends com.google.gson.reflect.TypeToken
-keepattributes AnnotationDefault, RuntimeVisibleAnnotations
-keep class com.bytedance.sdk.** { *; }
-obfuscationdictionary dictionary.txt
-classobfuscationdictionary dictionary.txt
-packageobfuscationdictionary dictionary.txt
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
<!-- fcm 添加以下权限 -->
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.POST_NOTIFICATIONS" />
<uses-permission android:name="android.permission.FOREGROUND_SERVICE" />
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
<uses-permission android:name="android.permission.REQUEST_DELETE_PACKAGES" />
<queries>
<intent>
<action android:name="android.intent.action.MAIN" />
</intent>
<intent>
<action android:name="android.intent.action.VIEW" />
</intent>
</queries>
<application
android:name=".MyApplication"
android:allowBackup="true"
android:dataExtractionRules="@xml/data_extraction_rules"
android:fullBackupContent="@xml/backup_rules"
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:requestLegacyExternalStorage="true"
android:supportsRtl="true"
android:theme="@style/Theme.SmartCleaner"
android:usesCleartextTraffic="true"
tools:targetApi="31">
<activity
android:name=".activity.splash.NewSplashActivity"
android:exported="true"
android:launchMode="singleTask"
android:screenOrientation="portrait"
android:theme="@style/splash.theme"
tools:ignore="DiscouragedApi,LockedOrientationActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.DeviceScanActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.SettingActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.CleanGuestActivity"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.PrepareScanActivity"
android:screenOrientation="portrait"
tools:ignore="DiscouragedApi,LockedOrientationActivity" />
<activity
android:name=".activity.RecentAppActivity"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".activity.PermissionManagerActivity"
android:exported="false"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".activity.AppManagerActivity"
android:exported="false"
android:screenOrientation="portrait"
android:theme="@style/Theme.clean"
tools:ignore="LockedOrientationActivity" />
<activity
android:name=".activity.BatteryInfoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.home.NewMainActivity"
android:exported="true">
<!-- <intent-filter> -->
<!-- <action android:name="android.intent.action.MAIN" /> -->
<!-- <category android:name="android.intent.category.LAUNCHER" /> -->
<!-- </intent-filter> -->
</activity>
<activity
android:name=".activity.ScanJunkActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.CleanJunkActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.CleaningActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.PermissionTripActivity"
android:screenOrientation="portrait"
android:theme="@style/FullScreenTheme.Null" />
<activity
android:name=".activity.LargeFileCleanActivity"
android:exported="true"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
<activity
android:name=".notificationclean.NotificationGuestActivity"
android:screenOrientation="portrait" />
<activity
android:name=".notificationclean.NotificationCleanActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.ResultActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.RepeaterdPhotoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.NetWorkActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.PrivacyWebActivity"
android:screenOrientation="portrait" />
<meta-data
android:name="com.google.android.gms.ads.APPLICATION_ID"
android:value="ca-app-pub-3940256099942544~3347511713" />
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_INITIALIZATION"
android:value="true" />
<meta-data
android:name="com.google.android.gms.ads.flag.OPTIMIZE_AD_LOADING"
android:value="true" />
<meta-data
android:name="com.google.android.gms.ads.flag.NATIVE_AD_DEBUGGER_ENABLED"
android:value="false" /> <!-- 添加以下服务 -->
<service
android:name=".display.fcm.MyFirebaseMessagingService"
android:exported="true">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
</intent-filter>
</service> <!-- 添加以下接收器 -->
<!-- 注册广播 -->
<receiver
android:name=".display.fcm.MyFirebaseMessagingReceiver"
android:exported="true"
android:permission="com.google.android.c2dm.permission.SEND">
<intent-filter>
<action android:name="com.google.firebase.MESSAGING_EVENT" />
<action android:name="com.google.android.c2dm.intent.RECEIVE" />
<category android:name="com.test.fast.cleanerjunk" />
</intent-filter>
</receiver>
<service
android:name=".display.NotificationService"
android:permission="android.permission.FOREGROUND_SERVICE" />
<service
android:name=".notificationclean.AppNotificationListenerService"
android:exported="true"
android:label="AppNotification service"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE">
<intent-filter>
<action android:name="android.service.notification.NotificationListenerService" />
</intent-filter>
</service>
<service
android:name=".service.FlashlightService"
android:exported="true"
tools:ignore="ExportedService" /> <!-- 照片压缩 -->
<activity
android:name=".activity.photocompress.photo.StartCompressionPhotoActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.photocompress.photo.CompressionSuccessActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.photocompress.photo.CompressioningActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.photocompress.photo.CompressionPhotoListActivity"
android:screenOrientation="portrait" />
<activity
android:name=".activity.photocompress.photo.PreviewCompressionPhotoActivity"
android:screenOrientation="portrait" />
<receiver
android:name=".display.CloseNotificationReceiver"
android:exported="true"
tools:ignore="ExportedReceiver">
<intent-filter>
<action android:name="com.file.notification.CloseNotificationReceiver" />
</intent-filter>
</receiver>
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
</application>
</manifest>
\ No newline at end of file
package android.content.pm;
import android.content.pm.PackageStats;
interface IPackageStatsObserver {
oneway void onGetStatsCompleted(in PackageStats pStats, boolean succeeded);
}
package android.content.pm;
parcelable PackageStats;
{"v":"5.4.4","fr":60,"ip":0,"op":240,"w":720,"h":1280,"nm":"2a","ddd":0,"assets":[{"id":"image_0","w":498,"h":497,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":498,"h":251,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":512,"h":497,"u":"images/","p":"img_2.png","e":0},{"id":"comp_0","layers":[{"ddd":0,"ind":1,"ty":2,"nm":"scan.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[30],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":15,"s":[100],"e":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":222,"s":[100],"e":[0]},{"t":239}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,552,0],"ix":2},"a":{"a":0,"k":[249,248.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[0.731,0.731,-28.047]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100],"e":[108,108,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.52,0.52,3.935]},"o":{"x":[0.333,0.333,0.333],"y":[-0.88,-0.88,10.562]},"t":11,"s":[108,108,100],"e":[96,96,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[-1.081,-1.081,-2.202]},"t":15,"s":[96,96,100],"e":[100,100,100]},{"t":18}],"ix":6}},"ao":0,"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"sm.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":47,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":81,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":111,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":143,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":160,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":175,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":190,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":205,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":222,"s":[100],"e":[0]},{"t":239}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":17,"s":[360,432,0],"e":[360,912,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":47,"s":[360,912,0],"e":[360,432,0],"to":[0,0,0],"ti":[0,80,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":81,"s":[360,432,0],"e":[360,432,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":96,"s":[360,432,0],"e":[360,912,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":126,"s":[360,912,0],"e":[360,432,0],"to":[0,0,0],"ti":[0,80,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":160,"s":[360,432,0],"e":[360,432,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":175,"s":[360,432,0],"e":[360,912,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":205,"s":[360,912,0],"e":[360,432,0],"to":[0,0,0],"ti":[0,80,0]},{"t":239}],"ix":2},"a":{"a":0,"k":[249,125.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":720,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"scan","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,640,0],"ix":2},"a":{"a":0,"k":[360,640,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"w":720,"h":1280,"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"2-phone.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,552,0],"ix":2},"a":{"a":0,"k":[256,248.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":720,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.8.1","fr":60,"ip":0,"op":240,"w":720,"h":1280,"nm":"4a","ddd":0,"assets":[{"id":"image_0","w":498,"h":497,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":498,"h":251,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":419,"h":513,"u":"images/","p":"img_2.png","e":0},{"id":"comp_0","nm":"scan","fr":60,"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"scan.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[30]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":15,"s":[100]},{"i":{"x":[0.833],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":222,"s":[100]},{"t":239,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,552,0],"ix":2,"l":2},"a":{"a":0,"k":[249,248.5,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.667,0.667,0.667],"y":[0.731,0.731,-28.047]},"o":{"x":[0.333,0.333,0.333],"y":[0,0,0]},"t":0,"s":[0,0,100]},{"i":{"x":[0.667,0.667,0.667],"y":[0.52,0.52,3.935]},"o":{"x":[0.333,0.333,0.333],"y":[-0.88,-0.88,10.562]},"t":11,"s":[108,108,100]},{"i":{"x":[0.667,0.667,0.667],"y":[1,1,1]},"o":{"x":[0.333,0.333,0.333],"y":[-1.081,-1.081,-2.202]},"t":15,"s":[96,96,100]},{"t":18,"s":[100,100,100]}],"ix":6,"l":2}},"ao":0,"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"sm.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":17,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":32,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":47,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":64,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":81,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":96,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":111,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":126,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":143,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":160,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":175,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":190,"s":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":205,"s":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":222,"s":[100]},{"t":239,"s":[0]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":17,"s":[360,432,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":47,"s":[360,912,0],"to":[0,0,0],"ti":[0,80,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":81,"s":[360,432,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":96,"s":[360,432,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":126,"s":[360,912,0],"to":[0,0,0],"ti":[0,80,0]},{"i":{"x":0.667,"y":0.667},"o":{"x":0.333,"y":0.333},"t":160,"s":[360,432,0],"to":[0,0,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":175,"s":[360,432,0],"to":[0,80,0],"ti":[0,0,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":205,"s":[360,912,0],"to":[0,0,0],"ti":[0,80,0]},{"t":239,"s":[360,432,0]}],"ix":2,"l":2},"a":{"a":0,"k":[249,125.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":720,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":0,"nm":"scan","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,640,0],"ix":2,"l":2},"a":{"a":0,"k":[360,640,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":720,"h":1280,"ip":0,"op":720,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"4-battery.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,584,0],"ix":2,"l":2},"a":{"a":0,"k":[209.5,256.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":720,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.4.4","fr":60,"ip":0,"op":60,"w":720,"h":560,"nm":"compression_scan","ddd":0,"assets":[{"id":"image_0","w":498,"h":497,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":498,"h":251,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":344,"h":335,"u":"images/","p":"img_2.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"scan.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0],"e":[88]},{"t":9}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,280,0],"ix":2},"a":{"a":0,"k":[249,248.5,0],"ix":1},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[66,66,100],"e":[100,100,100]},{"t":8}],"ix":6}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"sm.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[0.773]},"o":{"x":[0.333],"y":[0]},"t":13,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[31.782]},"t":28,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":49,"s":[100],"e":[0]},{"t":57}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":0.82},"o":{"x":0.333,"y":0},"t":10,"s":[360,23,0],"e":[360,560.613,0],"to":[0,48.472,0],"ti":[0,-91.539,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.202,"y":1},"t":47,"s":[360,560.613,0],"e":[360,578,0],"to":[0,20.198,0],"ti":[0,-10.695,0]},{"t":58}],"ix":2},"a":{"a":0,"k":[249,125.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":240,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"photo.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[350,328,0],"ix":2},"a":{"a":0,"k":[172,167.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":242,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.9.2","fr":30,"ip":0,"op":60,"w":1020,"h":1020,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":270,"h":270,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":729,"h":729,"u":"images/","p":"img_1.png","e":0},{"id":"comp_0","nm":"外圆","fr":30,"layers":[{"ddd":0,"ind":1,"ty":4,"nm":"形状图层 6","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[10],"e":[0]},{"t":40}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[-23.227,28.773,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":0,"s":[100,100,100],"e":[140,140,100]},{"t":40}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[729,729],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.16470600203,0.431372997808,0.96470600203,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-23.227,28.773],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":0,"op":40,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":4,"nm":"形状图层 7","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":20,"s":[10],"e":[0]},{"t":60}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[-23.227,28.773,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":20,"s":[100,100,100],"e":[140,140,100]},{"t":60}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[729,729],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.16470600203,0.431372997808,0.96470600203,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-23.227,28.773],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":20,"op":60,"st":20,"bm":0},{"ddd":0,"ind":3,"ty":4,"nm":"形状图层 8","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":40,"s":[10],"e":[0]},{"t":80}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[-23.227,28.773,0],"ix":1,"l":2},"s":{"a":1,"k":[{"i":{"x":[0.833,0.833,0.833],"y":[0.833,0.833,0.833]},"o":{"x":[0.167,0.167,0.167],"y":[0.167,0.167,0.167]},"t":40,"s":[100,100,100],"e":[140,140,100]},{"t":80}],"ix":6,"l":2}},"ao":0,"shapes":[{"ty":"gr","it":[{"d":1,"ty":"el","s":{"a":0,"k":[729,729],"ix":2},"p":{"a":0,"k":[0,0],"ix":3},"nm":"椭圆路径 1","mn":"ADBE Vector Shape - Ellipse","hd":false},{"ty":"st","c":{"a":0,"k":[0.16470600203,0.431372997808,0.96470600203,1],"ix":3},"o":{"a":0,"k":100,"ix":4},"w":{"a":0,"k":4,"ix":5},"lc":1,"lj":1,"ml":4,"bm":0,"nm":"描边 1","mn":"ADBE Vector Graphic - Stroke","hd":false},{"ty":"tr","p":{"a":0,"k":[-23.227,28.773],"ix":2},"a":{"a":0,"k":[0,0],"ix":1},"s":{"a":0,"k":[100,100],"ix":3},"r":{"a":0,"k":0,"ix":6},"o":{"a":0,"k":100,"ix":7},"sk":{"a":0,"k":0,"ix":4},"sa":{"a":0,"k":0,"ix":5},"nm":"变换"}],"nm":"椭圆 1","np":3,"cix":2,"bm":0,"ix":1,"mn":"ADBE Vector Group","hd":false}],"ip":40,"op":80,"st":40,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"Group 153.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[135,135,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"Group 159.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":1,"k":[{"i":{"x":[0.833],"y":[0.833]},"o":{"x":[0.167],"y":[0.167]},"t":0,"s":[0],"e":[360]},{"t":60}],"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[364.5,364.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":0,"nm":"外圆","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[510,510,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1020,"h":1020,"ip":0,"op":20,"st":-20,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"外圆","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[510,510,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1020,"h":1020,"ip":20,"op":40,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":0,"nm":"外圆","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[510,510,0],"ix":2,"l":2},"a":{"a":0,"k":[510,510,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1020,"h":1020,"ip":40,"op":60,"st":20,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.9.2","fr":29.9700012207031,"ip":0,"op":30.0000012219251,"w":336,"h":602,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":192,"h":192,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":192,"h":192,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":192,"h":192,"u":"images/","p":"img_2.png","e":0},{"id":"image_3","w":312,"h":585,"u":"images/","p":"img_3.png","e":0},{"id":"comp_0","nm":"Wi-Fi","fr":29.9700012207031,"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"wifi_6","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,962,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240.0000097754,"st":-3.00000012219251,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"wifi_5","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,962,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240.0000097754,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"wifi_4","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[540,962,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":240.0000097754,"st":0,"bm":0}]}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"wifi_1","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166,304,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":7.00000028511585,"op":30.0000012219251,"st":17.0000006924242,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"wifi_2","refId":"image_1","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166,304,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":14.0000005702317,"op":30.0000012219251,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"wifi_3","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166,304,0],"ix":2,"l":2},"a":{"a":0,"k":[96,96,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":21.0000008553475,"op":30.0000012219251,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":0,"nm":"Wi-Fi","refId":"comp_0","sr":1,"ks":{"o":{"a":0,"k":35,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166,542,0],"ix":2,"l":2},"a":{"a":0,"k":[540,1200,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"w":1080,"h":2400,"ip":0,"op":30.0000012219251,"st":0,"bm":0},{"ddd":0,"ind":5,"ty":2,"nm":"phone.png","cl":"png","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[166,302,0],"ix":2,"l":2},"a":{"a":0,"k":[156,292.5,0],"ix":1,"l":2},"s":{"a":0,"k":[100,100,100],"ix":6,"l":2}},"ao":0,"ip":0,"op":30.0000012219251,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.4.4","fr":60,"ip":0,"op":60,"w":680,"h":130,"nm":"switch","ddd":0,"assets":[{"id":"image_0","w":138,"h":153,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":52,"h":52,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":52,"h":52,"u":"images/","p":"img_2.png","e":0},{"id":"image_3","w":680,"h":130,"u":"images/","p":"img_3.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"hand.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[605.5,95,0],"e":[649.5,95,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[69,76.5,0],"ix":1},"s":{"a":0,"k":[86,86,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":15,"s":[0],"e":[100]},{"t":25}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[582.5,68.5,0],"e":[626.5,68.5,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[26,26,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"off.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[582.5,68.5,0],"e":[626.5,68.5,0],"to":[7.333,0,0],"ti":[-7.333,0,0]},{"t":33}],"ix":2},"a":{"a":0,"k":[26,26,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"permission_tips.png","cl":"png","refId":"image_3","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[340,65,0],"ix":2},"a":{"a":0,"k":[340,65,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.5.7","fr":60,"ip":0,"op":60,"w":640,"h":140,"nm":"合成 1","ddd":0,"assets":[{"id":"image_0","w":157,"h":175,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":86,"h":50,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":540,"h":114,"u":"images/","p":"img_2.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"bu.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[518,94.5,0],"to":[5.917,0,0],"ti":[-5.917,0,0]},{"t":30,"s":[553.5,94.5,0]}],"ix":2},"a":{"a":0,"k":[78.5,87.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"on.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":22,"s":[0]},{"t":31,"s":[100]}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[502.25,57.5,0],"ix":2},"a":{"a":0,"k":[43,25,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"qx2.png","cl":"png","refId":"image_2","sr":1,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[320,57,0],"ix":2},"a":{"a":0,"k":[270,57,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":60,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
{"v":"5.4.4","fr":60,"ip":0,"op":360,"w":720,"h":1130,"nm":"launch","ddd":0,"assets":[{"id":"image_0","w":498,"h":497,"u":"images/","p":"img_0.png","e":0},{"id":"image_1","w":498,"h":251,"u":"images/","p":"img_1.png","e":0},{"id":"image_2","w":348,"h":552,"u":"images/","p":"img_2.png","e":0},{"id":"image_3","w":348,"h":566,"u":"images/","p":"img_3.png","e":0}],"layers":[{"ddd":0,"ind":1,"ty":2,"nm":"scan.png","cl":"png","refId":"image_0","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0],"e":[100]},{"t":7.5}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,497,0],"ix":2},"a":{"a":0,"k":[249,248.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":2,"ty":2,"nm":"sm.png","cl":"png","refId":"image_1","sr":1,"ks":{"o":{"a":1,"k":[{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":0,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":7.5,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":94.5,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":102,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":129,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":136.5,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":223.5,"s":[100],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.167],"y":[0]},"t":231,"s":[0],"e":[0]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":258,"s":[0],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":265.5,"s":[100],"e":[100]},{"i":{"x":[0.667],"y":[1]},"o":{"x":[0.333],"y":[0]},"t":352.5,"s":[100],"e":[0]},{"t":360}],"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.443},"t":0,"s":[360,330.353,0],"e":[360,927,0],"to":[0,174.642,0],"ti":[0,-10.553,0]},{"i":{"x":0.833,"y":0.78},"o":{"x":0.333,"y":0},"t":51,"s":[360,927,0],"e":[360,330.353,0],"to":[0,16.833,0],"ti":[0,-43.562,0]},{"i":{"x":0.833,"y":0.532},"o":{"x":0.333,"y":0.936},"t":102,"s":[360,330.353,0],"e":[360,330.353,0],"to":[0,174.642,0],"ti":[0,-43.562,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.443},"t":129,"s":[360,330.353,0],"e":[360,927,0],"to":[0,174.642,0],"ti":[0,-10.553,0]},{"i":{"x":0.833,"y":0.78},"o":{"x":0.333,"y":0},"t":180,"s":[360,927,0],"e":[360,330.353,0],"to":[0,16.833,0],"ti":[0,-43.562,0]},{"i":{"x":0.833,"y":0.532},"o":{"x":0.333,"y":0.936},"t":231,"s":[360,330.353,0],"e":[360,330.353,0],"to":[0,174.642,0],"ti":[0,-43.562,0]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0.443},"t":258,"s":[360,330.353,0],"e":[360,927,0],"to":[0,174.642,0],"ti":[0,-10.553,0]},{"i":{"x":0.833,"y":0.785},"o":{"x":0.333,"y":0},"t":309,"s":[360,927,0],"e":[360,330.353,0],"to":[0,16.833,0],"ti":[0,-43.562,0]},{"t":359}],"ix":2},"a":{"a":0,"k":[249,199.5,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":3,"ty":2,"nm":"phone_b.png","cl":"png","refId":"image_2","sr":1.5,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,481,0],"ix":2},"a":{"a":0,"k":[174,276,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"hasMask":true,"masksProperties":[{"inv":false,"mode":"a","pt":{"a":1,"k":[{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":0,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,13],[368,13]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":51,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,9],[368,9]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":102,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,9],[368,9]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,13],[368,13]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":129,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,13],[368,13]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":180,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,9],[368,9]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.167,"y":0},"t":231,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,9],[368,9]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,13],[368,13]],"c":true}]},{"i":{"x":0.667,"y":1},"o":{"x":0.333,"y":0},"t":258,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,13],[368,13]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}]},{"i":{"x":0.833,"y":1},"o":{"x":0.167,"y":0},"t":309,"s":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,589],[368,589]],"c":true}],"e":[{"i":[[0,0],[0,0],[0,0],[0,0]],"o":[[0,0],[0,0],[0,0],[0,0]],"v":[[368,-41],[-22,-41],[-22,9],[368,9]],"c":true}]},{"t":360}],"ix":1},"o":{"a":0,"k":100,"ix":3},"x":{"a":0,"k":0,"ix":4},"nm":"蒙版 1"}],"ip":0,"op":360,"st":0,"bm":0},{"ddd":0,"ind":4,"ty":2,"nm":"phone_a.png","cl":"png","refId":"image_3","sr":1.5,"ks":{"o":{"a":0,"k":100,"ix":11},"r":{"a":0,"k":0,"ix":10},"p":{"a":0,"k":[360,474.5,0],"ix":2},"a":{"a":0,"k":[174,283,0],"ix":1},"s":{"a":0,"k":[100,100,100],"ix":6}},"ao":0,"ip":0,"op":360,"st":0,"bm":0}],"markers":[]}
\ No newline at end of file
This image diff could not be displayed because it is too large. You can view the blob instead.
This diff is collapsed.
package com.test.fast.cleanerjunk
import android.annotation.SuppressLint
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.os.Process
import android.util.Log
import com.google.android.gms.ads.MobileAds
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.google.firebase.FirebaseApp
import com.test.fast.cleanerjunk.activity.splash.NewSplashActivity
import com.test.fast.cleanerjunk.display.fcm.FcmHelper
import com.test.fast.cleanerjunk.helps.BaseApplication
import com.test.fast.cleanerjunk.helps.BlackHelps
import com.test.fast.cleanerjunk.helps.ComUtils.requestCfg
import com.test.fast.cleanerjunk.helps.ConfigHelper
import com.test.fast.cleanerjunk.helps.InstallHelps
import com.test.fast.cleanerjunk.helps.ads.AdmobUtils
import com.test.fast.cleanerjunk.utils.ActivityManagerUtils
import com.test.fast.cleanerjunk.utils.SPUtils
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
class MyApplication : BaseApplication() {
companion object {
var PAUSED_VALUE = 0
}
override fun init() {
initApp()
}
fun initApp() {
if (ConfigHelper.ifAgreePrivacy) {
initNotificationWork()
MainScope().launch {
requestCfg()
InstallHelps.init()
}
MobileAds.initialize(this) { initializationStatus ->
val statusMap =
initializationStatus.adapterStatusMap
for (adapterClass in statusMap.keys) {
val status = statusMap[adapterClass]
Log.d(
"MyApp", String.format(
"Adapter name: %s, Description: %s, Latency: %d",
adapterClass, status!!.description, status.latency
)
)
}
}
}
initLifeListener()
}
private fun initNotificationWork() {
FirebaseApp.initializeApp(this)
FcmHelper.getToken()
FcmHelper.subscribeToTopic()
Log.d("MyService", "startService:" + Process.myPid());
}
@SuppressLint("UnspecifiedRegisterReceiverFlag")
private fun initLifeListener() {
registerActivityLifecycleCallbacks(object : ActivityLifecycleCallbacks {
private var count = 0
override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) {}
override fun onActivityStarted(activity: Activity) {
count++
lastTimeResume = System.currentTimeMillis()
if (count == 1 && isHotLaunch()) {
val topActivity: Activity? = ActivityManagerUtils.getInstance().topActivity
val flag = if (topActivity == null) {
true
} else {
ConfigHelper.noLoadingActivities
.all { !topActivity.localClassName.contains(it, true) }
}
if (flag) {
if (AdmobUtils.isOpenAdLoaded()) {
AdmobUtils.showAppOpenAd(activity)
} else {
topActivity?.startActivity(
Intent(
topActivity,
NewSplashActivity::class.java
).apply {
putExtra("isHotLaunch", true)
putExtra("type", -1)
})
}
}
}
}
override fun onActivityResumed(activity: Activity) {
PAUSED_VALUE = 1
}
override fun onActivityPaused(activity: Activity) {
PAUSED_VALUE = 2
lastTimePause = System.currentTimeMillis()
}
override fun onActivityStopped(activity: Activity) {
count--
}
override fun onActivitySaveInstanceState(activity: Activity, outState: Bundle) {}
override fun onActivityDestroyed(activity: Activity) {}
})
}
private var lastTimePause = 0L
private var lastTimeResume = 0L
private fun isHotLaunch(): Boolean {
if ((lastTimeResume - lastTimePause) > 1000) {
return true
}
return false
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.animation.Animator
import android.annotation.SuppressLint
import android.content.BroadcastReceiver
import android.content.Context
import android.content.Intent
import android.content.IntentFilter
import android.hardware.camera2.CameraAccessException
import android.hardware.camera2.CameraManager
import android.location.LocationManager
import android.os.BatteryManager
import android.os.Build
import android.os.SystemClock
import android.provider.Settings
import android.view.View
import android.widget.Toast
import androidx.activity.OnBackPressedCallback
import androidx.activity.addCallback
import androidx.activity.result.contract.ActivityResultContracts
import androidx.core.view.isVisible
import com.test.fast.cleanerjunk.R
import com.test.fast.cleanerjunk.databinding.ActivityBatteryInfoBinding
import com.test.fast.cleanerjunk.helps.BaseActivity
import com.test.fast.cleanerjunk.helps.ads.AdmobUtils
import com.test.fast.cleanerjunk.view.AFunOb
import java.util.Calendar
import java.util.Date
import kotlin.math.roundToInt
@SuppressLint("SetTextI18n")
class BatteryInfoActivity : BaseActivity<ActivityBatteryInfoBinding>() {
override val isLightMode = true
private lateinit var receiver: BatteryReceiver
private lateinit var cm: CameraManager
private lateinit var cameraId: String
private var isTorchOn = false
override val binding: ActivityBatteryInfoBinding by lazy {
ActivityBatteryInfoBinding.inflate(layoutInflater)
}
override fun initView() {
receiver = BatteryReceiver()
val filter = IntentFilter(Intent.ACTION_BATTERY_CHANGED)
registerReceiver(receiver, filter)
cm = getSystemService(Context.CAMERA_SERVICE) as CameraManager
try {
cameraId = cm.cameraIdList[0]
} catch (e: CameraAccessException) {
e.printStackTrace()
}
setFilter()
binding.idBatteryLottie.imageAssetsFolder = "battery_scan/images/"
binding.idBatteryLottie.setAnimation("battery_scan/data.json")
binding.idBatteryLottie.playAnimation()
binding.root.postDelayed({
playFinish()
}, 5000)
binding.switchTwo.setOnClickListener {
turnOnBluetooth()
}
binding.switchThree.setOnCheckedChangeListener { _, isChecked ->
if (isChecked) {
turnOnFlashLight()
} else {
turnOffFlashLight()
}
}
binding.switchFour.setOnClickListener {
jumpLocationSettings()
}
binding.btOk.setOnClickListener {
AdmobUtils.showInterstitialAd(this) {
binding.btOk.setBackgroundResource(R.drawable.bg_shape_set_click)
startActivity(Intent(this, ResultActivity::class.java).apply {
putExtra("from", AFunOb.BATTERY_INFO)
})
finish()
}
}
binding.ivBack.setOnClickListener {
AdmobUtils.showInterstitialAd(this@BatteryInfoActivity) {
finishToMain()
}
}
onBackPressedDispatcher.addCallback {
AdmobUtils.showInterstitialAd(this@BatteryInfoActivity) {
finishToMain()
}
}
}
private val result1 =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
}
private val settingResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) {
}
private inner class BatteryReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
val current = intent?.extras?.getInt("level") ?: 0
val total = intent?.extras?.getInt("scale") ?: 0
val percent = current * 100 / total
if (percent >= 30) {
binding.imagePower.setImageResource(R.drawable.batteryl)
} else {
binding.imagePower.setImageResource(R.drawable.batteryh)
}
val voltage = intent?.getIntExtra("voltage", 0)?.toFloat()?.roundToInt() ?: 0
binding.tvVo.text = "${voltage / 1000f}V"
val temperature = intent?.getIntExtra("temperature", 0)?.toFloat()?.roundToInt() ?: 0
binding.tvTemp.text = "${temperature / 10f}°C"
binding.tvLevel.text = "$percent%"
}
}
private fun playFinish() {
binding.idConsOne.isVisible = false
binding.idConsBatteryFinish.isVisible = true
binding.idBatteryFinish.addAnimatorListener(object : Animator.AnimatorListener {
override fun onAnimationStart(p0: Animator) {
}
override fun onAnimationEnd(p0: Animator) {
AdmobUtils.showInterstitialAd(this@BatteryInfoActivity) {
updateUI()
}
}
override fun onAnimationCancel(p0: Animator) {
}
override fun onAnimationRepeat(p0: Animator) {
}
})
}
private fun checkFlashLight() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cm.registerTorchCallback(object : CameraManager.TorchCallback() {
override fun onTorchModeChanged(cameraId: String, enabled: Boolean) {
super.onTorchModeChanged(cameraId, enabled)
if (cameraId == this@BatteryInfoActivity.cameraId) {
if (enabled && !isTorchOn) {
isTorchOn = true
binding.switchThree.isChecked = true
} else if (!enabled && isTorchOn) {
isTorchOn = false
binding.switchThree.isChecked = false
}
}
}
}, null)
} else {
Toast.makeText(this, "don't support you phone", Toast.LENGTH_SHORT).show()
}
}
private fun turnOnFlashLight() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cm.setTorchMode(cameraId, true)
} // 打开手电筒
} catch (e: CameraAccessException) {
e.printStackTrace()
}
}
private fun turnOffFlashLight() {
try {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
cm.setTorchMode(cameraId, false)
} // 打开手电筒
} catch (e: CameraAccessException) {
e.printStackTrace()
}
}
private fun jumpLocationSettings() {
val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
settingResult.launch(intent)
}
private fun checkLocation() {
binding.switchFour.isChecked = isLocationEnabled(this)
}
private fun isLocationEnabled(context: Context): Boolean {
val locationManager = context.getSystemService(Context.LOCATION_SERVICE) as LocationManager
return locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER) ||
locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)
}
private fun setFilter() {
val uptime = SystemClock.elapsedRealtime()
val currantTime = Calendar.getInstance().time
val batteryUseTime = currantTime.time - uptime
val batteryDate = Date(batteryUseTime)
binding.tvTime.text = "${batteryDate.hours} H ${batteryDate.minutes} M"
val bm = getSystemService(Context.BATTERY_SERVICE) as BatteryManager
val chargeCounter = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CHARGE_COUNTER)
val pCapacity = bm.getIntProperty(BatteryManager.BATTERY_PROPERTY_CAPACITY)
if (chargeCounter != Int.MIN_VALUE && pCapacity != Int.MIN_VALUE) {
binding.tvMa.text = "${
String.format("%.1f", (chargeCounter / (pCapacity.toFloat() / 100f)) / 1000f)
} mAh"
}
}
private fun updateUI() {
binding.idBatteryLottie.visibility = View.GONE
binding.idConsBatteryFinish.isVisible = false
binding.llContent.isVisible = true
}
override fun onResume() {
super.onResume()
binding.btOk.setBackgroundResource(R.drawable.bg_shape_set)
checkFlashLight()
checkLocation()
}
fun turnOnBluetooth() {
val intent2 = Intent(Settings.ACTION_BLUETOOTH_SETTINGS)
result1.launch(intent2)
}
override fun onDestroy() {
super.onDestroy()
unregisterReceiver(receiver)
binding?.idBatteryLottie?.clearAnimation()
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.content.Intent
import android.graphics.Color
import androidx.core.view.isVisible
import androidx.core.view.updatePadding
import com.test.fast.cleanerjunk.databinding.ActivityLayoutCleanGuestBinding
import com.test.fast.cleanerjunk.helps.BaseActivity
import com.test.fast.cleanerjunk.helps.ConfigHelper
import com.test.fast.cleanerjunk.utils.BarUtils
/**
* 清理功能引导
*/
class CleanGuestActivity : BaseActivity<ActivityLayoutCleanGuestBinding>() {
override val binding: ActivityLayoutCleanGuestBinding by lazy {
ActivityLayoutCleanGuestBinding.inflate(layoutInflater)
}
override fun initView() {
ConfigHelper.ifGuestFirstClean = true
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.root.postDelayed({
binding.idTvSkip.isVisible = true
}, 3000)
binding.idTvSkip.setOnClickListener {
finishToMain()
}
binding.idTvClean.setOnClickListener {
startActivity(Intent(this, PrepareScanActivity::class.java))
finish()
}
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.animation.ValueAnimator
import android.content.Intent
import android.graphics.Color
import android.view.animation.LinearInterpolator
import androidx.core.animation.doOnEnd
import androidx.core.view.updatePadding
import com.test.fast.cleanerjunk.databinding.ActivityLayoutCleanupingBinding
import com.test.fast.cleanerjunk.helps.BaseActivity
import com.test.fast.cleanerjunk.helps.ConfigHelper
import com.test.fast.cleanerjunk.helps.FileHelps
import com.test.fast.cleanerjunk.helps.ads.AdmobUtils
import com.test.fast.cleanerjunk.utils.BarUtils
import com.test.fast.cleanerjunk.view.AFunOb
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.MainScope
import kotlinx.coroutines.launch
import java.io.File
import kotlin.random.Random
class CleaningActivity : BaseActivity<ActivityLayoutCleanupingBinding>() {
override val isLightMode = true
override val binding: ActivityLayoutCleanupingBinding by lazy {
ActivityLayoutCleanupingBinding.inflate(layoutInflater)
}
private val intentSize by lazy {
intent.getLongExtra("size", -1)
}
private val listPath by lazy {
intent.getStringArrayExtra("list") ?: arrayOf()
}
var isDeleSuc = false
private var size = 0L
override fun initView() {
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
ConfigHelper.junkSizeClean += intentSize
// MainScope().launch(Dispatchers.IO) {
// try {
// FileHelps.fileList.clear()
// listPath.forEach {
// val file = File(it)
// if (FileHelps.deleteFile(file)) {
// isDeleSuc = true
// }
//
// }
// } catch (_: Exception) {
// } finally {
//
// }
//
// }
playAnm()
}
private fun playAnm() {
ValueAnimator.ofFloat(0f, 360f).run {
duration = 1000
repeatMode = ValueAnimator.RESTART
repeatCount = ValueAnimator.INFINITE
interpolator = LinearInterpolator()
addUpdateListener {
binding.idYuan.rotation = it.animatedValue as Float
}
start()
}
ValueAnimator.ofInt(0, 100).run {
duration = Random.nextLong(7000, 8000)
interpolator = LinearInterpolator()
addUpdateListener {
binding.idTvJd.text = "${it.animatedValue as Int}"
}
doOnEnd {
AdmobUtils.showInterstitialAd(this@CleaningActivity) {
startActivity(Intent(this@CleaningActivity, ResultActivity::class.java).putExtra("from", AFunOb.JUNK_CLEANER).putExtra("clean_size", intentSize))
finish()
}
}
start()
}
ValueAnimator.ofFloat(0f, 360f).run {
duration = 1000
repeatMode = ValueAnimator.RESTART
repeatCount = ValueAnimator.INFINITE
interpolator = LinearInterpolator()
addUpdateListener {
binding.idView1.rotation = it.animatedValue as Float
}
start()
}
ValueAnimator.ofFloat(0f, 360f).run {
duration = 1000
repeatMode = ValueAnimator.RESTART
repeatCount = ValueAnimator.INFINITE
interpolator = LinearInterpolator()
addUpdateListener {
binding.idView2.rotation = it.animatedValue as Float
}
start()
}
ValueAnimator.ofFloat(0f, 360f).run {
duration = 1000
repeatMode = ValueAnimator.RESTART
repeatCount = ValueAnimator.INFINITE
interpolator = LinearInterpolator()
addUpdateListener {
binding.idView3.rotation = it.animatedValue as Float
}
start()
}
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.content.Intent
import android.util.DisplayMetrics
import android.util.Log
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.LinearSmoothScroller
import androidx.recyclerview.widget.RecyclerView
import com.test.fast.cleanerjunk.R
import com.test.fast.cleanerjunk.activity.splash.NewSplashActivity
import com.test.fast.cleanerjunk.adapter.DeviceScanAdapter
import com.test.fast.cleanerjunk.databinding.ActivityDeviceScanBinding
import com.test.fast.cleanerjunk.helps.BaseActivity
import com.test.fast.cleanerjunk.helps.ConfigHelper
import kotlin.math.abs
class DeviceScanActivity : BaseActivity<ActivityDeviceScanBinding>() {
private lateinit var adapter: DeviceScanAdapter
override val binding: ActivityDeviceScanBinding by lazy {
ActivityDeviceScanBinding.inflate(layoutInflater)
}
override fun initView() {
ConfigHelper.ifGuest = true
binding.rv.isNestedScrollingEnabled = false
binding.ivItem.setImageResource(R.mipmap.d_shebei)
adapter = DeviceScanAdapter(
itemFinish = { title, position ->
when (title) {
"Device Manufacturer" -> {
binding.ivItem.setImageResource(R.mipmap.d_changs)
}
"Google Advertiser Id" -> {
binding.ivItem.setImageResource(R.mipmap.d_ad)
}
"Android Version" -> {
binding.ivItem.setImageResource(R.mipmap.d_xitong)
}
"Initialize engine" -> {
binding.ivItem.setImageResource(R.mipmap.d_wancheng)
}
}
val progress = binding.circularProgress.progress + 25f
binding.circularProgress.setProgressWithAnimation(progress, 2500)
binding.rv.smoothScrollEquallyTo(position)
},
finish = {
binding.rv.isNestedScrollingEnabled = true
binding.tvStart.isEnabled = true
binding.circularProgress.setProgressWithAnimation(100f, 1500)
})
binding.rv.adapter = adapter
binding.circularProgress.setProgressWithAnimation(25f, 2500)
}
override fun initListener() {
super.initListener()
binding.tvStart.setOnClickListener {
startActivity(Intent(this, NewSplashActivity::class.java))
finish()
}
}
// speedFactor越大, 那速度越慢
//https://zhuanlan.zhihu.com/p/654289405
private fun RecyclerView.smoothScrollEquallyTo(pos: Int, speedFactor: Int = 50) {
val scroller = object : LinearSmoothScroller(context) {
override fun calculateSpeedPerPixel(displayMetrics: DisplayMetrics): Float {
// 源码是: return 25f / displayMetrics.densityDpi;
val layoutMgr = this.layoutManager
if (layoutMgr !is LinearLayoutManager) return super.calculateSpeedPerPixel(displayMetrics)
val first = layoutMgr.findFirstVisibleItemPosition()
val diff = abs(pos - first) //来看这个远不远
val speed = 25f / diff * speedFactor //diff越大, 那25f/diff就越小, 那速度就越快.
val ret = speed / displayMetrics.densityDpi
return ret
}
}
scroller.targetPosition = pos
layoutManager?.startSmoothScroll(scroller)
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.app.Activity
import android.content.Intent
import android.os.Bundle
import android.os.Handler
import androidx.appcompat.app.AppCompatActivity
import com.test.fast.cleanerjunk.R
import com.test.fast.cleanerjunk.view.PermisonPopWindow
class PermissionTripActivity : AppCompatActivity() {
companion object {
fun launch(activity: Activity) {
activity.startActivity(
Intent(activity, PermissionTripActivity::class.java)
)
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_layout_permisson_trip)
initView()
}
private fun initView() {
Handler().postDelayed({
PermisonPopWindow(this) {
finish()
}.show()
}, 500)
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity
import android.annotation.SuppressLint
import android.graphics.Color
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.core.view.updatePadding
import com.test.fast.cleanerjunk.databinding.ActivityLayoutWebPrivacyBinding
import com.test.fast.cleanerjunk.helps.BaseActivity
import com.test.fast.cleanerjunk.utils.BarUtils
class PrivacyWebActivity : BaseActivity<ActivityLayoutWebPrivacyBinding>() {
override val binding: ActivityLayoutWebPrivacyBinding by lazy {
ActivityLayoutWebPrivacyBinding.inflate(layoutInflater)
}
@SuppressLint("SetJavaScriptEnabled")
override fun initView() {
BarUtils.setStatusBarLightMode(this, true)
BarUtils.setStatusBarColor(this, Color.TRANSPARENT)
binding.root.updatePadding(top = BarUtils.getStatusBarHeight())
binding.idWeb.settings.setJavaScriptEnabled(true)
binding.idWeb.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
view?.loadUrl(url!!)
return true
}
}
binding.idWeb.loadUrl("https://sites.google.com/view/fast-cleaner-junk/fast-cleaner-junk")
binding.idBack.setOnClickListener {
finishToMain()
}
}
}
\ No newline at end of file
package com.test.fast.cleanerjunk.activity.photocompress.photo
interface AlbumsSelectListener {
fun onSelectAlbum(albums: AlbumBean)
}
\ No newline at end of file
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
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