diff --git a/app/build.gradle.kts b/app/build.gradle.kts index d9c9ec5..e747270 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -6,8 +6,13 @@ plugins { alias(libs.plugins.kotlin.android) id ("kotlin-parcelize") id("io.objectbox") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") + id("applovin-quality-service") +} +applovin { + apiKey = "4yWSuJdlSBRrsgCT2fEzZvNoBH0M1hzyqNP9ZiCTn0an2TBTdxk01Ips4aov__5L4dU8_sQpVw0_GOMLgIfJu_" } - android { namespace = "com.video.mobile.wallpaper" compileSdk = 35 @@ -16,8 +21,8 @@ android { applicationId = "com.video.mobile.wallpaper" minSdk = 24 targetSdk = 35 - versionCode = 1 - versionName = "1.0" + versionCode = 2 + versionName = "1.1" setProperty( "archivesBaseName", "Dynamic Cartoon Wallpaper_V" + versionName + "(${versionCode})_$timestamp" @@ -76,4 +81,27 @@ dependencies { implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:adapter-rxjava2:2.9.0") implementation("com.squareup.okhttp3:logging-interceptor:4.12.0") + + + implementation(files("libs/UpLoadLibrary_07_03_11_54-release.aar")) + implementation(files("libs/MaxLibrary_08_08_15_08-release.aar")) + + implementation(platform("com.google.firebase:firebase-bom:33.7.0")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") + implementation("com.google.firebase:firebase-config") + + //Max(BIGO Ads、Chartboost、DT Exchange、InMobi、ironSource、Liftoff Monetize、Mintegral、Pangle) + implementation("com.applovin:applovin-sdk:+") + implementation("com.applovin.mediation:bigoads-adapter:+") + implementation("com.applovin.mediation:chartboost-adapter:+") + implementation("com.google.android.gms:play-services-base:16.1.0") + implementation("com.applovin.mediation:fyber-adapter:+") + implementation("com.applovin.mediation:inmobi-adapter:+") + implementation("com.squareup.picasso:picasso:2.8") + implementation("androidx.recyclerview:recyclerview:1.1.0") + implementation("com.applovin.mediation:ironsource-adapter:+") + implementation("com.applovin.mediation:vungle-adapter:+") + implementation("com.applovin.mediation:mintegral-adapter:+") + implementation("com.applovin.mediation:bytedance-adapter:+") } \ No newline at end of file diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 0000000..e1dde3e --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "887597693398", + "project_id": "dynamic-cartoon-wallapper", + "storage_bucket": "dynamic-cartoon-wallapper.firebasestorage.app" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:887597693398:android:a0462cb5206a323e8b4c77", + "android_client_info": { + "package_name": "com.video.mobile.wallpaper" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyBg4-5ATxqT6RGNxCOtpnMbbA5XXpZQfDI" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/libs/MaxLibrary_08_08_15_08-release.aar b/app/libs/MaxLibrary_08_08_15_08-release.aar new file mode 100644 index 0000000..c2ce202 Binary files /dev/null and b/app/libs/MaxLibrary_08_08_15_08-release.aar differ diff --git a/app/libs/UpLoadLibrary_07_03_11_54-release.aar b/app/libs/UpLoadLibrary_07_03_11_54-release.aar new file mode 100644 index 0000000..5a50672 Binary files /dev/null and b/app/libs/UpLoadLibrary_07_03_11_54-release.aar differ diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7d05d32..1f5d973 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,7 @@ android:label="@string/app_name" android:roundIcon="@mipmap/logo" android:supportsRtl="true" + android:networkSecurityConfig="@xml/net" android:theme="@style/Theme.DynamicCartoonWallpaper" tools:targetApi="31"> = Build.VERSION_CODES.S) { -// installSplashScreen() -// } + super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_splash) @@ -36,21 +35,16 @@ class SplashActivity : AppCompatActivity() { } progressBar = findViewById(R.id.progress_bar) textProgress = findViewById(R.id.textview_progress) - countDownTimer = object : CountDownTimer(timer, 100) { - override fun onTick(millisUntilFinished: Long) { - val v: Float = - 100 - millisUntilFinished.toFloat() / timer * 100 - val v1 = v.toInt() - progressBar.progress = v1 - textProgress.text = getString(R.string.splash_progress_text, v1) - } - - override fun onFinish() { - launchMain() - } - + countDownTimer = WelComManager.initTimer(this, timer, { millisUntilFinished -> + val v: Float = + 100 - millisUntilFinished.toFloat() / timer * 100 + val v1 = v.toInt() + progressBar.progress = v1 + textProgress.text = getString(R.string.splash_progress_text, v1) + }) { + launchMain() } - countDownTimer?.start() + } private fun launchMain() { diff --git a/app/src/main/java/com/video/mobile/wallpaper/favorite/FavoriteActivity.kt b/app/src/main/java/com/video/mobile/wallpaper/favorite/FavoriteActivity.kt index 0e5d9c5..ab2a980 100644 --- a/app/src/main/java/com/video/mobile/wallpaper/favorite/FavoriteActivity.kt +++ b/app/src/main/java/com/video/mobile/wallpaper/favorite/FavoriteActivity.kt @@ -20,6 +20,7 @@ import androidx.paging.liveData import androidx.paging.map import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView +import com.ad.maxlibrary.MaxManager import com.video.mobile.wallpaper.Helper import com.video.mobile.wallpaper.R import com.video.mobile.wallpaper.database.DataBaseManager @@ -60,9 +61,10 @@ class FavoriteActivity : AppCompatActivity() { imageBack.setOnClickListener { finish() } recyclerView = findViewById(R.id.favorite_recyclerview) layoutEmpty = findViewById(R.id.layout_empty) - + MaxManager.onLoadAd() init() + MaxManager.startShowMaxAd(this) { } } diff --git a/app/src/main/java/com/video/mobile/wallpaper/preview/DisplayVideoActivity.kt b/app/src/main/java/com/video/mobile/wallpaper/preview/DisplayVideoActivity.kt index 7c5f635..3aa35d2 100644 --- a/app/src/main/java/com/video/mobile/wallpaper/preview/DisplayVideoActivity.kt +++ b/app/src/main/java/com/video/mobile/wallpaper/preview/DisplayVideoActivity.kt @@ -28,6 +28,7 @@ import androidx.media3.common.Player import androidx.media3.common.util.UnstableApi import androidx.media3.exoplayer.ExoPlayer import androidx.media3.ui.PlayerView +import com.ad.maxlibrary.MaxManager import com.bumptech.glide.Glide import com.bumptech.glide.load.DataSource import com.bumptech.glide.load.engine.GlideException @@ -103,11 +104,11 @@ class DisplayVideoActivity : AppCompatActivity() { super.onCreate(savedInstanceState) enableEdgeToEdge() setContentView(R.layout.activity_display_video) + MaxManager.onLoadAd() backFrameLayout = findViewById(R.id.back_btn) bottomLayout = findViewById(R.id.layout_btn) ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main)) { v, insets -> val systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars()) -// v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom) val params = backFrameLayout.layoutParams as ViewGroup.MarginLayoutParams params.topMargin = systemBars.top backFrameLayout.layoutParams = params @@ -119,6 +120,8 @@ class DisplayVideoActivity : AppCompatActivity() { Helper.showMyLog("---systemBars.top--${systemBars.top} bottom = ${systemBars.bottom}") insets } + MaxManager.startShowMaxAd(this) { } + downloadingProgressLayout = findViewById(R.id.download_progress_layout) downloadProgressbar = findViewById(R.id.horizontal_progressbar) progressBar = findViewById(R.id.normal_progress) @@ -161,52 +164,58 @@ class DisplayVideoActivity : AppCompatActivity() { } textBtnSet.setOnClickListener { - if (cacheFile.exists()) { - setVideoWallpaper() - } else { - Helper.showToast(this@DisplayVideoActivity, getString(R.string.cache_file_no_lost)) + MaxManager.startShowMaxAd(this@DisplayVideoActivity) { + if (cacheFile.exists()) { + setVideoWallpaper() + } else { + Helper.showToast(this@DisplayVideoActivity, getString(R.string.cache_file_no_lost)) + } } + } textRetry.setOnClickListener { getNetWorkVideo(cachePath) } frameFavorite.setOnClickListener { - showCircleLoading(true, loadingType_circle) - val newStatus = !imageFavorite.isSelected - if (newStatus) { - intentVideoWallpaper?.let { - Helper.showMyLog("--- Video --insertLike ") - DataBaseManager.insertLike(LikeWallpaper().apply { - id = it.id - description = it.description - image = it.image - wallpapertype = it.wallpapertype - thumbnail = it.thumbnail - }) - } - intentLikeWallpaper?.let { - Helper.showMyLog("---Like --insertLike ") - DataBaseManager.insertLike(it) - } - imageFavorite.isSelected = newStatus - showCircleLoading(false) - } else { - DataBaseManager.deleteLike(wallpaperId) { deleteOk -> + MaxManager.startShowMaxAd(this@DisplayVideoActivity){ + showCircleLoading(true, loadingType_circle) + val newStatus = !imageFavorite.isSelected + if (newStatus) { + intentVideoWallpaper?.let { + Helper.showMyLog("--- Video --insertLike ") + DataBaseManager.insertLike(LikeWallpaper().apply { + id = it.id + description = it.description + image = it.image + wallpapertype = it.wallpapertype + thumbnail = it.thumbnail + }) + } + intentLikeWallpaper?.let { + Helper.showMyLog("---Like --insertLike ") + DataBaseManager.insertLike(it) + } + imageFavorite.isSelected = newStatus showCircleLoading(false) - if (deleteOk) { - imageFavorite.isSelected = newStatus - Helper.showToast( - this@DisplayVideoActivity, - getString(R.string.remove_favorite_ok) - ) - } else { - Helper.showToast( - this@DisplayVideoActivity, - getString(R.string.remove_favorite_fail) - ) + } else { + DataBaseManager.deleteLike(wallpaperId) { deleteOk -> + showCircleLoading(false) + if (deleteOk) { + imageFavorite.isSelected = newStatus + Helper.showToast( + this@DisplayVideoActivity, + getString(R.string.remove_favorite_ok) + ) + } else { + Helper.showToast( + this@DisplayVideoActivity, + getString(R.string.remove_favorite_fail) + ) + } } } } + } } diff --git a/app/src/main/res/xml/net.xml b/app/src/main/res/xml/net.xml new file mode 100644 index 0000000..0ac6102 --- /dev/null +++ b/app/src/main/res/xml/net.xml @@ -0,0 +1,6 @@ + + + + mobile-server.lux-ad.com + + diff --git a/build.gradle.kts b/build.gradle.kts index efc3258..64db3ba 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -2,9 +2,16 @@ plugins { alias(libs.plugins.android.application) apply false alias(libs.plugins.kotlin.android) apply false + id("com.google.gms.google-services") version "4.4.2" apply false + id ("com.google.firebase.crashlytics") version "3.0.2" apply false } + buildscript { + repositories { + maven { url = uri("https://artifacts.applovin.com/android") } + } dependencies { classpath("io.objectbox:objectbox-gradle-plugin:4.0.3") + classpath ("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") } } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 20e2a01..97a23a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ # http://www.gradle.org/docs/current/userguide/build_environment.html # Specifies the JVM arguments used for the daemon process. # The setting is particularly useful for tweaking memory settings. -org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Xmx4096m -Dfile.encoding=UTF-8 # When configured, Gradle will run in incubating parallel mode. # This option should only be used with decoupled projects. For more details, visit # https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects diff --git a/settings.gradle.kts b/settings.gradle.kts index d97fc00..c9490ae 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -16,6 +16,9 @@ dependencyResolutionManagement { repositories { google() mavenCentral() + maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") } + maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } + maven { url = uri("https://artifact.bytedance.com/repository/pangle") } } }