diff --git a/app/build.gradle.kts b/app/build.gradle.kts
index a5b54b8..cb0f416 100644
--- a/app/build.gradle.kts
+++ b/app/build.gradle.kts
@@ -19,8 +19,8 @@ android {
applicationId = "com.wallart.art.wallpapers.hd"
minSdk = 23
targetSdk = 34
- versionCode = 4
- versionName = "1.0.3"
+ versionCode = 5
+ versionName = "1.0.4"
setProperty("archivesBaseName", "Art Wallpaper_V" + versionName + "(${versionCode})_$timestamp")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
@@ -83,4 +83,50 @@ dependencies {
implementation ("com.google.firebase:firebase-crashlytics-ktx")
+
+ //-----------------------------TopOn 聚合(mintegral、unityads、liftoff(vungle)、Bigo)
+ //Anythink (Necessary)
+ implementation("com.anythink.sdk:core-tpn:6.3.68")
+ implementation("com.anythink.sdk:nativead-tpn:6.3.68")
+ implementation("com.anythink.sdk:banner-tpn:6.3.68")
+ implementation("com.anythink.sdk:interstitial-tpn:6.3.68")
+ implementation("com.anythink.sdk:rewardedvideo-tpn:6.3.68")
+ implementation("com.anythink.sdk:splash-tpn:6.3.68")
+
+ //Androidx (Necessary)
+ implementation("androidx.appcompat:appcompat:1.1.0")
+ implementation("androidx.browser:browser:1.4.0")
+
+ //Vungle
+ implementation("com.anythink.sdk:adapter-tpn-vungle:6.3.68")
+ implementation("com.vungle:vungle-ads:7.3.2")
+ implementation("com.google.android.gms:play-services-basement:18.1.0")
+ implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
+
+ //UnityAds
+ implementation("com.anythink.sdk:adapter-tpn-unityads:6.3.68")
+ implementation("com.unity3d.ads:unity-ads:4.9.3")
+
+ //Bigo
+ implementation("com.anythink.sdk:adapter-tpn-bigo:6.3.68")
+ implementation("com.bigossp:bigo-ads:4.7.4")
+
+ //Mintegral
+ implementation("com.anythink.sdk:adapter-tpn-mintegral-nonchina:6.3.68")
+ implementation("com.mbridge.msdk.oversea:reward:16.7.51")
+ implementation("com.mbridge.msdk.oversea:newinterstitial:16.7.51")
+ implementation("com.mbridge.msdk.oversea:mbnative:16.7.51")
+ implementation("com.mbridge.msdk.oversea:mbnativeadvanced:16.7.51")
+ implementation("com.mbridge.msdk.oversea:mbsplash:16.7.51")
+ implementation("com.mbridge.msdk.oversea:mbbanner:16.7.51")
+ implementation("com.mbridge.msdk.oversea:mbbid:16.7.51")
+ implementation("androidx.recyclerview:recyclerview:1.1.0")
+
+ //Tramini
+ implementation("com.anythink.sdk:tramini-plugin-tpn:6.3.68")
+ //-----------------------------TopOn 聚合
+
+
+ // Debugger UI Tools
+// implementation ("com.anythink.sdk:debugger-ui:1.0.7")
}
\ No newline at end of file
diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro
index 54e9f65..35ebe71 100644
--- a/app/proguard-rules.pro
+++ b/app/proguard-rules.pro
@@ -33,38 +33,77 @@
-dontwarn org.openjsse.javax.net.ssl.SSLSocket
-dontwarn org.openjsse.net.ssl.OpenJSSE
-
- #=======================================UNity SDK
- # Keep filenames and line numbers for stack traces
- -keepattributes SourceFile,LineNumberTable
-
- # Keep JavascriptInterface for WebView bridge
- -keepattributes JavascriptInterface
+#---------------------------------TopOn 聚合
+# Vungle
+-dontwarn com.vungle.ads.**
+-keepclassmembers class com.vungle.ads.** {
+ *;
+}
- -keep class android.webkit.JavascriptInterface {
- *;
- }
- # Keep all classes in Unity Ads package
- -keep class com.unity3d.ads.** {
- *;
- }
+# Google
+-keep class com.google.android.gms.** { *; }
+-dontwarn com.google.android.gms.**
- # Keep all classes in Unity Services package
- -keep class com.unity3d.services.** {
- *;
- }
- -keep class com.google.android.gms.ads.initialization.** {
- *;
- }
- -keep class com.google.android.gms.ads.MobileAds {
- *;
- }
- -dontwarn com.google.ads.mediation.admob.*
- -dontwarn com.google.android.gms.ads.**
- #==================================UNity SDK
\ No newline at end of file
+# START OkHttp + Okio
+# JSR 305 annotations are for embedding nullability information.
+-dontwarn javax.annotation.**
+
+
+# A resource is loaded with a relative path so the package of this class must be preserved.
+-adaptresourcefilenames okhttp3/internal/publicsuffix/PublicSuffixDatabase.gz
+
+
+# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
+-dontwarn org.codehaus.mojo.animal_sniffer.*
+
+
+# OkHttp platform used only on JVM and when Conscrypt and other security providers are available.
+-dontwarn okhttp3.internal.platform.**
+-dontwarn org.conscrypt.**
+-dontwarn org.bouncycastle.**
+-dontwarn org.openjsse.**
+
+
+# Animal Sniffer compileOnly dependency to ensure APIs are compatible with older versions of Java.
+-dontwarn org.codehaus.mojo.animal_sniffer.*
+
+
+# END OkHttp + Okio
+
+
+# START Protobuf
+-dontwarn com.google.protobuf.**
+-keepclassmembers class com.google.protobuf.** {
+ *;
+}
+-keep class * extends com.google.protobuf.GeneratedMessageLite { *; }
+
+
+# END Protobuf
+-keepattributes Signature
+-keepattributes *Annotation*
+-keep class com.mbridge.** {*; }
+-keep interface com.mbridge.** {*; }
+-keep class android.support.v4.** { *; }
+-dontwarn com.mbridge.**
+-keep class **.R$* { public static final int mbridge*; }
+-keep public class com.mbridge.* extends androidx.** { *; }
+-keep public class androidx.viewpager.widget.PagerAdapter{ *; }
+-keep public class androidx.viewpager.widget.ViewPager.OnPageChangeListener{ *; }
+-keep interface androidx.annotation.IntDef{ *; }
+-keep interface androidx.annotation.Nullable{ *; }
+-keep interface androidx.annotation.CheckResult{ *; }
+-keep interface androidx.annotation.NonNull{ *; }
+-keep public class androidx.fragment.app.Fragment{ *; }
+-keep public class androidx.core.content.FileProvider{ *; }
+-keep public class androidx.core.app.NotificationCompat{ *; }
+-keep public class androidx.appcompat.widget.AppCompatImageView { *; }
+-keep public class androidx.recyclerview.*{ *; }
+
+#---------------------------------TopOn 聚合
\ No newline at end of file
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index f3a5558..86f05df 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -40,11 +40,7 @@
android:screenOrientation="fullSensor"
tools:ignore="DiscouragedApi" />
-
+
+ const val TAG = "=============="
const val AD_INIT_ACTION = "on_success_action"
var initSDK = false
- }
+ }
+ private val APPId="h66978895679a9"
+ private val APPKey="00c254f2caba04948f14c41014ac5f33"
+ private val debug_key="fe06c76b794f95216f98e5982ae8f335fc558956"
override fun onCreate() {
super.onCreate()
app = this
@@ -106,23 +114,25 @@ class MyApp : Application() {
private fun initSDK() {
-// UnityAds.initialize(this, UnityAdManager.unityGameID, UnityAdManager.testMode, object :
-// IUnityAdsInitializationListener {
-// override fun onInitializationComplete() {
-// LocalBroadcastManager.getInstance(this@MyApp).sendBroadcast(Intent(AD_INIT_ACTION))
-// initSDK = true
-// UnityAdManager.loadAllAdNew()
-//
-// }
-//
-// override fun onInitializationFailed(
-// error: UnityAds.UnityAdsInitializationError?,
-// message: String?
-// ) {
-// initSDK = false
-// }
-//
-// });
+ ATSDK.checkIsEuTraffic(this, object : NetTrafficeCallback {
+ override fun onResultCallback(isEU: Boolean) {
+ Log.e(TAG, "onResultCallback:$isEU")
+ if (isEU && ATSDK.getGDPRDataLevel(this@MyApp) == ATSDK.UNKNOWN) {
+ ATSDK.showGdprAuth(this@MyApp)
+ }
+ }
+
+ override fun onErrorCallback(p0: String?) {
+ Log.e(TAG, "onErrorCallback:${p0}")
+ }
+
+ })
+
+
+ ATSDK.init( this, APPId, APPKey)
+ AdManager.loadAllAd()
+ //测试工具
+// ATDebuggerUITest.showDebuggerUI(this,debug_key)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt
index 2ee87c5..58d6f35 100644
--- a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryAbility.kt
@@ -205,12 +205,9 @@ class CategoryAbility : AppCompatActivity() {
fun toPreview(pos: Data) {
-// if (pos < 0 || pos >= mList.size) {
-// return
-// }
val listBean = CategoryPreviewBean()
listBean.list = mList
- CategoryPreviewAbility.start(this, pos)
+ PreviewAbility.start(this, pos)
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt
index f6ac69d..d0fbdd3 100644
--- a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPage.kt
@@ -11,6 +11,7 @@ import com.cute.girl.hd.pink.img.wallpaper.adapter.CategoryAdapter
import com.cute.girl.hd.pink.img.wallpaper.databinding.PageRecentBinding
import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryData
import com.cute.girl.hd.pink.img.wallpaper.entity.GCategory
+import com.cute.girl.hd.pink.img.wallpaper.topon.AdManager
//import com.cute.girl.hd.pink.img.wallpaper.net.base.BaseListener
//import com.cute.girl.hd.pink.img.wallpaper.net.base.ServiceImage
//import com.cute.girl.hd.pink.img.wallpaper.net.response.ResponseCategory
@@ -126,11 +127,20 @@ class CategoryPage : Fragment() {
fun toDetail(pos: CategoryData) {
-// if (pos < 0 || pos >= mList.size) {
-// return
-// }
if (activity != null) {
- CategoryAbility.start(requireActivity(), pos)
+ showTopOn{
+ CategoryAbility.start(requireActivity(), pos)
+ }
+
+ }
+ }
+
+ private fun showTopOn(action: () -> Unit) {
+ AdManager.showAD(requireActivity()) { integer: Int ->
+ if (integer == AdManager.type_show_close || integer == AdManager.type_no_cache || integer == AdManager.type_show_fail) {
+ action.invoke()
+ }
+
}
}
}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt
deleted file mode 100644
index 174525c..0000000
--- a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/CategoryPreviewAbility.kt
+++ /dev/null
@@ -1,352 +0,0 @@
-package com.cute.girl.hd.pink.img.wallpaper.page
-
-import android.app.WallpaperManager
-import android.content.Context
-import android.content.Intent
-import android.os.Build
-import android.os.Bundle
-import android.view.View
-import android.view.WindowManager
-import android.widget.Toast
-import androidx.appcompat.app.AppCompatActivity
-import androidx.lifecycle.lifecycleScope
-import androidx.viewpager2.widget.ViewPager2
-import com.cute.girl.hd.pink.img.wallpaper.R
-import com.cute.girl.hd.pink.img.wallpaper.adapter.CategoryPagerAdapter
-import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityPreviewBinding
-import com.cute.girl.hd.pink.img.wallpaper.entity.CategoryPreviewBean
-import com.cute.girl.hd.pink.img.wallpaper.entity.Data
-import com.cute.girl.hd.pink.img.wallpaper.entity.GCategoryDetail
-import com.cute.girl.hd.pink.img.wallpaper.entity.IntentConstants
-import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil
-import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.getString
-import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide
-import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.onMain
-import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.show
-import com.cute.girl.hd.pink.img.wallpaper.utils.MediaUtil
-import com.cute.girl.hd.pink.img.wallpaper.utils.PermissionUtil
-import com.cute.girl.hd.pink.img.wallpaper.view.SetAsDialog
-import com.liulishuo.filedownloader.BaseDownloadTask
-import com.liulishuo.filedownloader.FileDownloadListener
-import com.liulishuo.filedownloader.FileDownloader
-import kotlinx.coroutines.launch
-import pub.devrel.easypermissions.EasyPermissions
-import java.io.File
-
-class CategoryPreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks {
- private lateinit var binding: AbilityPreviewBinding
- private var mList: MutableList = mutableListOf()
- private var mCurPos: Int = 0
- private var mImagePagerAdapter: CategoryPagerAdapter? = null
- private var mSetAsDialog: SetAsDialog? = null
- private var mAction = 0//0设置壁纸 1下载壁纸
-
- companion object {
- fun start(context: Context,bean: Data) {
- val intent = Intent(context, CategoryPreviewAbility::class.java)
- intent.putExtra(IntentConstants.KEY_LIST, bean)
-// intent.putExtra(IntentConstants.KEY_POS, pos)
- context.startActivity(intent)
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
- binding = AbilityPreviewBinding.inflate(layoutInflater)
- setContentView(binding.root)
- setupViews()
- }
-
- private fun setupViews() {
- //隐藏状态栏和底部导航栏
- window.addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN)
- window.decorView.systemUiVisibility =
- View.SYSTEM_UI_FLAG_HIDE_NAVIGATION or View.SYSTEM_UI_FLAG_FULLSCREEN
-
- initData()
- setUpView()
- }
-
- private fun initData() {
- var listBean: Data? = null
- if (intent.hasExtra(IntentConstants.KEY_LIST)) {
- listBean = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
- intent.getSerializableExtra(IntentConstants.KEY_LIST, Data::class.java)
- } else {
- intent.getSerializableExtra(IntentConstants.KEY_LIST) as Data?
- }
- }
- if (listBean == null) {
- finish()
- return
- }
- mList.clear()
- mList.add(listBean)
-
- if (mList.size == 0) {
- finish()
- return
- }
-
- mCurPos = intent.getIntExtra(IntentConstants.KEY_POS, 0)
-
- if (mCurPos < 0 || mCurPos >= mList.size) {
- finish()
- return
- }
- }
-
- private fun setUpView() {
- mImagePagerAdapter = CategoryPagerAdapter(this, mList)
- mImagePagerAdapter?.setOnItemClickListener(object :
- CategoryPagerAdapter.OnItemClickListener {
- override fun onItemClick(pos: Int) {
-
- }
- })
- binding.viewPager.adapter = mImagePagerAdapter!!
- binding.viewPager.setCurrentItem(mCurPos, false)
- binding.viewPager.registerOnPageChangeCallback(object :
- ViewPager2.OnPageChangeCallback() {
- override fun onPageSelected(position: Int) {
- mCurPos = position
- }
-
- })
-
- binding.ivBack.setOnClickListener {
- onBackPressed()
- }
-
- binding.tvSet.setOnClickListener {
- mAction = 0
- if (isExist()) {
- set4KWallpaper()
- } else {
- startDownload()
- }
- }
-
- binding.tvDownload.setOnClickListener {
- doSave()
- }
- }
-
-
- override fun onDestroy() {
- super.onDestroy()
- mSetAsDialog?.dismiss()
- }
-
- private fun isExist(): Boolean {
- return DownloadUtil.isExist(
- mList[mCurPos].sourceURl,
- mList[mCurPos].getTag()
- )
- }
-
- private fun set4KWallpaper() {
- val image = mList[mCurPos]
- val path =
- DownloadUtil.getFilePath(
- image.getTag()
- )
- val file = File(path)
- if (!file.exists()) {
- return
- }
- val wallpaperManager = WallpaperManager.getInstance(this)
- if (mSetAsDialog == null) {
- mSetAsDialog = SetAsDialog(this) {
- onClickHomeScreen = {
- lifecycleScope.launch {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- wallpaperManager.setStream(
- file.inputStream(),
- null,
- true,
- WallpaperManager.FLAG_SYSTEM
- )
- }else{
- wallpaperManager.setStream(file.inputStream())
- }
- onMain {
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.set_success.getString(),
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- }
-
- onClickLockScreen = {
- lifecycleScope.launch {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
- wallpaperManager.setStream(
- file.inputStream(),
- null,
- true,
- WallpaperManager.FLAG_LOCK
- )
- }else{
- wallpaperManager.setStream(file.inputStream())
- }
- onMain {
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.set_success.getString(),
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- }
-
- onClickBoth = {
- lifecycleScope.launch {
- wallpaperManager.setStream(file.inputStream())//FLAG_SYSTEM | FLAG_LOCK)
- onMain {
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.set_success.getString(),
- Toast.LENGTH_SHORT
- ).show()
- }
- }
- }
- }
- }
- mSetAsDialog?.show()
- }
-
- private fun doSave() {
- if (!PermissionUtil.hasStoragePermission(this)) {
- PermissionUtil.requestStoragePermission(this)
- return
- }
- clickSave()
- }
-
- private fun clickSave() {
- mAction = 1
- if (isExist()) {
- saveWallpaper()
- } else {
- startDownload()
- }
- }
-
- private fun startDownload() {
- if (isFinishing) {
- return
- }
- binding.flDownload.show()
- FileDownloader.getImpl().create(mList[mCurPos].sourceURl)
- .setPath(DownloadUtil.getFilePath( mList[mCurPos].getTag()))
- .setCallbackProgressTimes(300)
- .setMinIntervalUpdateSpeed(400)
- .setListener(object : FileDownloadListener() {
- override fun pending(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
-
- }
-
- override fun progress(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
- if (!isFinishing) {
- binding.pbb.show()
- }
- }
-
- override fun completed(task: BaseDownloadTask?) {
- if (!isFinishing) {
- binding.flDownload.hide()
- mImagePagerAdapter?.notifyItemChanged(mCurPos)
- if (mAction == 0) {
- set4KWallpaper()
- } else {
- saveWallpaper()
- }
- }
- }
-
- override fun paused(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
- if (!isFinishing) {
- binding.flDownload.hide()
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.download_failed,
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- override fun error(task: BaseDownloadTask?, e: Throwable?) {
- if (!isFinishing) {
- binding.flDownload.hide()
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.download_failed,
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- override fun warn(task: BaseDownloadTask?) {
- if (!isFinishing) {
- binding.flDownload.hide()
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.download_failed,
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- }).start()
- }
-
- private fun saveWallpaper() {
- val image = mList[mCurPos]
- val path =
- DownloadUtil.getFilePath(
- image.getTag()
- )
- val saved = MediaUtil.saveImageToSystemAlbum(path, this@CategoryPreviewAbility)
- if (!isFinishing) {
- if (saved) {
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.saved_to_album,
- Toast.LENGTH_SHORT
- ).show()
- } else {
- Toast.makeText(
- this@CategoryPreviewAbility,
- R.string.save_failed,
- Toast.LENGTH_SHORT
- ).show()
- }
- }
-
- }
-
-
- override fun onRequestPermissionsResult(
- requestCode: Int,
- permissions: Array,
- grantResults: IntArray
- ) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults)
- EasyPermissions.onRequestPermissionsResult(requestCode, permissions, grantResults, this)
- }
-
- override fun onPermissionsGranted(requestCode: Int, perms: MutableList) {
- if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) {
- doSave()
- }
- }
-
- override fun onPermissionsDenied(requestCode: Int, perms: MutableList) {
- if (requestCode == PermissionUtil.REQUEST_CODE_PERMISSION_STORAGE) {
- }
- }
-}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt
index c273f50..b8ef136 100644
--- a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/PreviewAbility.kt
@@ -12,11 +12,13 @@ import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.lifecycle.lifecycleScope
import androidx.viewpager2.widget.ViewPager2
+import com.cute.girl.hd.pink.img.wallpaper.MyApp
import com.cute.girl.hd.pink.img.wallpaper.R
import com.cute.girl.hd.pink.img.wallpaper.adapter.ImagePagerAdapter
import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityPreviewBinding
import com.cute.girl.hd.pink.img.wallpaper.entity.Data
import com.cute.girl.hd.pink.img.wallpaper.entity.IntentConstants
+import com.cute.girl.hd.pink.img.wallpaper.topon.AdManager
import com.cute.girl.hd.pink.img.wallpaper.utils.DownloadUtil
import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.getString
import com.cute.girl.hd.pink.img.wallpaper.utils.GlobalExt.hide
@@ -55,9 +57,13 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
setupViews()
}
- private fun showMyMAx(action: () -> Unit) {
- // TODO:
- action.invoke()
+ private fun showTopOn(action: () -> Unit) {
+ AdManager.showAD(this@PreviewAbility) { integer: Int ->
+ if (integer == AdManager.type_show_close || integer == AdManager.type_no_cache || integer == AdManager.type_show_fail) {
+ action.invoke()
+ }
+
+ }
}
private fun setupViews() {
@@ -131,10 +137,7 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
}
binding.tvDownload.setOnClickListener {
- showMyMAx {
doSave()
- }
-
}
}
@@ -167,7 +170,7 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
mSetAsDialog = SetAsDialog(this) {
onClickHomeScreen = {
- showMyMAx {
+ showTopOn {
lifecycleScope.launch {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
wallpaperManager.setStream(file.inputStream())
@@ -193,7 +196,7 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
onClickLockScreen = {
- showMyMAx {
+ showTopOn {
lifecycleScope.launch {
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
wallpaperManager.setStream(file.inputStream())
@@ -218,7 +221,7 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
}
onClickBoth = {
- showMyMAx {
+ showTopOn {
lifecycleScope.launch {
wallpaperManager.setStream(file.inputStream())//FLAG_SYSTEM | FLAG_LOCK)
onMain {
@@ -258,16 +261,16 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
if (isFinishing) {
return
}
- val filePath = DownloadUtil.getFilePath( mList[mCurPos].getTag())
+ val filePath = DownloadUtil.getFilePath(mList[mCurPos].getTag())
Log.d(
"-----------",
"---------startDownload-${mList[mCurPos].sourceURl} filePath=${filePath}"
)
binding.flDownload.show()
- DownloadUtil.downloadFile(mList[mCurPos].sourceURl,filePath){
+ DownloadUtil.downloadFile(mList[mCurPos].sourceURl, filePath) {
runOnUiThread {
binding.flDownload.hide()
- if(it){
+ if (it) {
if (!isFinishing) {
binding.flDownload.hide()
mImagePagerAdapter?.notifyItemChanged(mCurPos)
@@ -277,7 +280,7 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
saveWallpaper()
}
}
- }else{
+ } else {
if (!isFinishing) {
binding.flDownload.hide()
Toast.makeText(
@@ -288,70 +291,8 @@ class PreviewAbility : AppCompatActivity(), EasyPermissions.PermissionCallbacks
}
}
}
- }
+ }
-// FileDownloader.getImpl().create(mList[mCurPos].sourceURl)
-// .setPath(filePath)
-// .setCallbackProgressTimes(300)
-// .setMinIntervalUpdateSpeed(400)
-// .setListener(object : FileDownloadListener() {
-// override fun pending(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
-//
-// }
-//
-// override fun progress(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
-// if (!isFinishing) {
-// binding.pbb.show()
-// }
-// }
-//
-// override fun completed(task: BaseDownloadTask?) {
-// Log.d("-----------", "---------completed")
-// if (!isFinishing) {
-// binding.flDownload.hide()
-// mImagePagerAdapter?.notifyItemChanged(mCurPos)
-// if (mAction == 0) {
-// set4KWallpaper()
-// } else {
-// saveWallpaper()
-// }
-// }
-// }
-//
-// override fun paused(task: BaseDownloadTask?, soFarBytes: Int, totalBytes: Int) {
-// if (!isFinishing) {
-// binding.flDownload.hide()
-// Toast.makeText(
-// this@PreviewAbility,
-// R.string.download_failed,
-// Toast.LENGTH_SHORT
-// ).show()
-// }
-// }
-//
-// override fun error(task: BaseDownloadTask?, e: Throwable?) {
-// if (!isFinishing) {
-// binding.flDownload.hide()
-// Toast.makeText(
-// this@PreviewAbility,
-// R.string.download_failed,
-// Toast.LENGTH_SHORT
-// ).show()
-// }
-// }
-//
-// override fun warn(task: BaseDownloadTask?) {
-// if (!isFinishing) {
-// binding.flDownload.hide()
-// Toast.makeText(
-// this@PreviewAbility,
-// R.string.download_failed,
-// Toast.LENGTH_SHORT
-// ).show()
-// }
-// }
-//
-// }).start()
}
private fun saveWallpaper() {
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt
index 87adf3a..107f653 100644
--- a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/page/StartAbility.kt
@@ -5,23 +5,31 @@ import android.os.Bundle
import android.os.CountDownTimer
import androidx.appcompat.app.AppCompatActivity
import com.cute.girl.hd.pink.img.wallpaper.databinding.AbilityStartBinding
+import com.cute.girl.hd.pink.img.wallpaper.topon.AdManager
class StartAbility : AppCompatActivity() {
private lateinit var binding: AbilityStartBinding
- private var time = 13000L
- private var needShow = true
+ private var time = 11000L
- private lateinit var countDownTimer: CountDownTimer
+
+ private var countDownTimer: CountDownTimer? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = AbilityStartBinding.inflate(layoutInflater)
setContentView(binding.root)
+ countDownTimer = AdManager.showWelcomeAd(this@StartAbility, time) {
+ setupViews()
+ }
- setupViews()
+ countDownTimer?.start()
+ }
+ override fun onDestroy() {
+ super.onDestroy()
+ countDownTimer?.cancel()
}
private fun setupViews() {
@@ -30,5 +38,4 @@ class StartAbility : AppCompatActivity() {
}
-
}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdListener.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdListener.kt
new file mode 100644
index 0000000..3357e2f
--- /dev/null
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdListener.kt
@@ -0,0 +1,9 @@
+package com.cute.girl.hd.pink.img.wallpaper.topon
+
+interface AdListener {
+ fun showSuccess()
+
+ fun showFail()
+
+ fun showClose()
+}
\ No newline at end of file
diff --git a/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdManager.kt b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdManager.kt
new file mode 100644
index 0000000..b2992d2
--- /dev/null
+++ b/app/src/main/java/com/cute/girl/hd/pink/img/wallpaper/topon/AdManager.kt
@@ -0,0 +1,181 @@
+package com.cute.girl.hd.pink.img.wallpaper.topon
+
+import android.app.Activity
+import android.os.CountDownTimer
+import android.util.Log
+import com.anythink.core.api.ATAdInfo
+import com.anythink.core.api.AdError
+import com.anythink.interstitial.api.ATInterstitial
+import com.anythink.interstitial.api.ATInterstitialListener
+import com.cute.girl.hd.pink.img.wallpaper.MyApp
+
+
+object AdManager {
+
+
+ const val type_no_cache = 0
+ const val type_has_cache = 1
+ const val type_show_success = 2
+ const val type_show_close = 3
+ const val type_show_fail = 4
+
+ /***
+ * n66978a7938950
+ * n66978a6a2a132
+ * n66978a40971a3
+ */
+ const val place1Id = "n66978a7938950"
+ const val place2Id = "n66978a6a2a132"
+ const val place3Id = "n66978a40971a3"
+
+ val list = mutableListOf()
+
+
+ @JvmStatic
+ fun loadAllAd() {
+ if (list.size <= 0) {
+ val mInterstitialAd1 = ATInterstitial(MyApp.app, place1Id)
+ val mInterstitialAd2 = ATInterstitial(MyApp.app, place2Id)
+ val mInterstitialAd3 = ATInterstitial(MyApp.app, place3Id)
+ list.add(mInterstitialAd1)
+ list.add(mInterstitialAd2)
+ list.add(mInterstitialAd3)
+ }
+ for (ad in list) {
+ if (!ad.isAdReady) {
+ setCallBack(ad,object : AdListener {
+ override fun showSuccess() {
+
+ }
+
+ override fun showFail() {
+
+ }
+
+ override fun showClose() {
+
+ }
+
+ })
+ ad.load()
+ }
+ }
+
+
+ }
+ @JvmStatic
+ fun getReadyAd(): ATInterstitial? {
+ list.shuffle()
+ for (ad in list) {
+ if (ad.isAdReady) {
+ return ad
+ }
+ }
+ return null
+ }
+
+
+ @JvmStatic
+ fun showWelcomeAd(activity: Activity,totalTim: Long, goMain: () -> Unit): CountDownTimer {
+ var alreadyShow = false
+ var timer = object : CountDownTimer(totalTim, 100) {
+ override fun onTick(millisUntilFinished: Long) {
+ if (!alreadyShow) {
+ showAD(activity) {
+ if (it == type_has_cache) {
+ alreadyShow = true
+ }
+ if (it == type_show_close || it == type_show_fail) {
+ goMain.invoke()
+ }
+
+ }
+ }
+
+ }
+
+ override fun onFinish() {
+ if (!alreadyShow) {
+ showAD(activity) {
+ if (it == type_show_close || it == type_show_fail || it == type_no_cache) {
+ goMain.invoke()
+ }
+ }
+ }
+ }
+
+ }
+ return timer
+ }
+
+ private fun setCallBack(ad: ATInterstitial, listener: AdListener) {
+ ad.setAdListener(object : ATInterstitialListener {
+ override fun onInterstitialAdLoaded() {
+ Log.d(MyApp.TAG, "LoadLoaded ${ad.mPlacementId}")
+ }
+
+ override fun onInterstitialAdLoadFail(p0: AdError?) {
+ Log.d(MyApp.TAG, "LoadFail:${p0?.code} ${p0?.desc}")
+ }
+
+ override fun onInterstitialAdClicked(p0: ATAdInfo?) {
+
+ }
+
+ override fun onInterstitialAdShow(p0: ATAdInfo?) {
+ Log.d(MyApp.TAG, "AdShow ${p0?.showId} ")
+ listener.showSuccess()
+ ad.load()
+ }
+
+ override fun onInterstitialAdClose(p0: ATAdInfo?) {
+ Log.d(MyApp.TAG, "AdClose ${p0?.showId} ")
+ listener.showClose()
+ }
+
+ override fun onInterstitialAdVideoStart(p0: ATAdInfo?) {
+
+ }
+
+ override fun onInterstitialAdVideoEnd(p0: ATAdInfo?) {
+
+ }
+
+ override fun onInterstitialAdVideoError(p0: AdError?) {
+ listener.showFail()
+ }
+
+ })
+ }
+
+
+ @JvmStatic
+ fun showAD(activity: Activity, action: (type: Int) -> Unit) {
+ val readyAd = getReadyAd()
+ if (readyAd!= null) {
+ Log.d(MyApp.TAG, "readyAd ${readyAd.mPlacementId} ")
+ action.invoke(type_has_cache)
+ setCallBack(readyAd,object : AdListener {
+ override fun showSuccess() {
+ action.invoke(type_show_success)
+ }
+
+ override fun showFail() {
+ action.invoke(type_show_fail)
+ }
+
+ override fun showClose() {
+ action.invoke(type_show_close)
+ }
+
+ })
+ readyAd.show(activity)
+ } else {
+ Log.d(MyApp.TAG, "showAD type_no_cache ")
+ action.invoke(type_no_cache)
+
+ }
+ }
+
+
+}
\ No newline at end of file
diff --git a/settings.gradle.kts b/settings.gradle.kts
index 8cc7443..d5bee3b 100644
--- a/settings.gradle.kts
+++ b/settings.gradle.kts
@@ -20,6 +20,14 @@ dependencyResolutionManagement {
jcenter()
mavenCentral()
+ //Anythink(Core)
+ maven ("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
+ //Mintegral
+ maven ("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
+
+ //TopOn集成测试工具
+// maven ( "https://jfrog.anythinktech.com/artifactory/debugger")
+
}
}