删掉max集成

This commit is contained in:
litingting 2024-07-18 14:45:59 +08:00
parent cd287e1228
commit 3789b03f6b
20 changed files with 45 additions and 424 deletions

6
.idea/compiler.xml generated
View File

@ -1,6 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="CompilerConfiguration">
<bytecodeTargetLevel target="17" />
</component>
</project>

19
.idea/gradle.xml generated
View File

@ -1,19 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="#GRADLE_LOCAL_JAVA_HOME" />
<option name="modules">
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/app" />
</set>
</option>
<option name="resolveExternalAnnotations" value="false" />
</GradleProjectSettings>
</option>
</component>
</project>

9
.idea/misc.xml generated
View File

@ -1,9 +0,0 @@
<project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" default="true" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
<option name="id" value="Android" />
</component>
</project>

View File

@ -1,14 +1,13 @@
import java.util.Date
import java.text.SimpleDateFormat
plugins { plugins {
id 'com.android.application' id 'com.android.application'
id 'org.jetbrains.kotlin.android' id 'org.jetbrains.kotlin.android'
id 'applovin-quality-service'
id 'com.google.gms.google-services' id 'com.google.gms.google-services'
id 'com.google.firebase.crashlytics' id 'com.google.firebase.crashlytics'
} }
applovin { String timestamp = new SimpleDateFormat("MM_dd_HH_mm").format(new Date())
apiKey = "BoZtE6LMU2QaUEowq3SoQFO_HqwztZQdgF3VZGmNRR17TGv0XhXSwlT6LiaRllitI7yAsCkSGo_pfE0yfipADf"
}
android { android {
namespace 'com.keyboard.journey' namespace 'com.keyboard.journey'
@ -20,7 +19,7 @@ android {
targetSdk 34 targetSdk 34
versionCode 5 versionCode 5
versionName "1.0.5" versionName "1.0.5"
setProperty("archivesBaseName", "Keyboard Journey_V" + versionName + "(${versionCode})_$timestamp")
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
} }
@ -72,12 +71,8 @@ dependencies {
//7z //7z
implementation 'com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.02' implementation 'com.github.omicronapps:7-Zip-JBinding-4Android:Release-16.02-2.02'
implementation 'com.applovin:applovin-sdk:12.1.0'
implementation 'com.applovin.mediation:vungle-adapter:6.12.0.0'
implementation 'com.applovin.mediation:mintegral-adapter:16.2.31.0'
implementation 'androidx.recyclerview:recyclerview:1.3.2'
// implementation 'com.applovin.mediation:bytedance-adapter:4.7.0.8.0'
implementation 'com.applovin.mediation:unityads-adapter:4.4.1.0'
implementation(platform("com.google.firebase:firebase-bom:32.2.2")) implementation(platform("com.google.firebase:firebase-bom:32.2.2"))
implementation("com.google.firebase:firebase-analytics-ktx") implementation("com.google.firebase:firebase-analytics-ktx")
implementation("com.google.firebase:firebase-crashlytics-ktx") implementation("com.google.firebase:firebase-crashlytics-ktx")

View File

@ -16,10 +16,6 @@
android:theme="@style/Theme.KeyboardJourney" android:theme="@style/Theme.KeyboardJourney"
tools:targetApi="31"> tools:targetApi="31">
<meta-data android:name="applovin.sdk.key"
android:value="wt2KAZMCf_SkV_coMIB7GWtaOQtCd2ZFRK8hFAQo7zbXpIGpG5iI0fZ0sMJr5n_cCO3LEVU66gpxe099OFXXvv"/>
<activity <activity
android:name=".JourneyStartActivity" android:name=".JourneyStartActivity"
android:exported="true"> android:exported="true">

View File

@ -1,18 +1,16 @@
package com.keyboard.journey package com.keyboard.journey
import android.app.Application import android.app.Application
import com.applovin.sdk.AppLovinSdk
import com.applovin.sdk.AppLovinSdkConfiguration
class JourneyApp : Application() { class JourneyApp : Application() {
companion object { companion object {
lateinit var app: JourneyApp lateinit var app: JourneyApp
const val TAG = "----------"
} }
override fun onCreate() { override fun onCreate() {
super.onCreate() super.onCreate()
app = this app = this
AppLovinSdk.getInstance(this).mediationProvider = "max"
AppLovinSdk.getInstance(this).initializeSdk()
} }
} }

View File

@ -6,7 +6,6 @@ import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
import com.keyboard.journey.ad.MaxAdsInsUtil
import com.keyboard.journey.adapter.CategoryDetailsDataAdapter import com.keyboard.journey.adapter.CategoryDetailsDataAdapter
import com.keyboard.journey.bean.CategoryDataBean import com.keyboard.journey.bean.CategoryDataBean
import com.keyboard.journey.bean.ItemDataBean import com.keyboard.journey.bean.ItemDataBean
@ -36,7 +35,7 @@ class JourneyCategoryDetailsActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = JourneyCategoryDetailsActivityBinding.inflate(layoutInflater) binding = JourneyCategoryDetailsActivityBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
MaxAdsInsUtil.showAdRandomMode(this) // TODO: showAd
bean = intent.getSerializableExtra(CATEGORY_DETAILS_BEAN_KEY) as MainDataBean? bean = intent.getSerializableExtra(CATEGORY_DETAILS_BEAN_KEY) as MainDataBean?
if (bean == null) { if (bean == null) {
finish() finish()
@ -45,7 +44,7 @@ class JourneyCategoryDetailsActivity : AppCompatActivity() {
initView() initView()
initData() initData()
MaxAdsInsUtil.loadAllAdIsNotCached(this)
} }
private fun initBar() { private fun initBar() {

View File

@ -4,9 +4,7 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import android.view.View import android.view.View
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.bumptech.glide.Glide
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
import com.keyboard.journey.ad.MaxAdsInsUtil
import com.keyboard.journey.bean.DetailsBean import com.keyboard.journey.bean.DetailsBean
import com.keyboard.journey.bean.ItemDataBean import com.keyboard.journey.bean.ItemDataBean
import com.keyboard.journey.databinding.JourneyDetailsActivityBinding import com.keyboard.journey.databinding.JourneyDetailsActivityBinding
@ -33,12 +31,12 @@ class JourneyDetailsActivity : AppCompatActivity(), OnDownloadListener {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = JourneyDetailsActivityBinding.inflate(layoutInflater) binding = JourneyDetailsActivityBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
MaxAdsInsUtil.showAdRandomMode(this) // TODO: showAd
bean = intent.getSerializableExtra(KEY_JOURNEY_DETAILS_BEAN) as ItemDataBean? bean = intent.getSerializableExtra(KEY_JOURNEY_DETAILS_BEAN) as ItemDataBean?
initBar() initBar()
initView() initView()
initData() initData()
MaxAdsInsUtil.loadAllAdIsNotCached(this)
} }
private fun initBar() { private fun initBar() {

View File

@ -6,6 +6,7 @@ import android.graphics.Color
import android.net.Uri import android.net.Uri
import android.os.Bundle import android.os.Bundle
import android.provider.Settings import android.provider.Settings
import android.util.Log
import android.view.View import android.view.View
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import android.widget.Toast import android.widget.Toast
@ -14,7 +15,6 @@ import androidx.core.view.GravityCompat
import androidx.drawerlayout.widget.DrawerLayout import androidx.drawerlayout.widget.DrawerLayout
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
import com.keyboard.journey.ad.MaxAdsInsUtil
import com.keyboard.journey.adapter.BannerImgAdapter import com.keyboard.journey.adapter.BannerImgAdapter
import com.keyboard.journey.adapter.MainDataAdapter import com.keyboard.journey.adapter.MainDataAdapter
import com.keyboard.journey.bean.CategoryDataBean import com.keyboard.journey.bean.CategoryDataBean
@ -25,7 +25,6 @@ import com.keyboard.journey.util.NetworkUtil
import com.keyboard.journey.util.getRandomInt import com.keyboard.journey.util.getRandomInt
import com.keyboard.journey.util.isMyInputMethodDefault import com.keyboard.journey.util.isMyInputMethodDefault
import com.keyboard.journey.util.isMyInputMethodEnabled import com.keyboard.journey.util.isMyInputMethodEnabled
import com.keyboard.journey.util.openPrivacyPolicy
import com.keyboard.journey.util.shareAppInfo import com.keyboard.journey.util.shareAppInfo
import com.youth.banner.listener.OnPageChangeListener import com.youth.banner.listener.OnPageChangeListener
import kotlinx.coroutines.DelicateCoroutinesApi import kotlinx.coroutines.DelicateCoroutinesApi
@ -35,15 +34,9 @@ import kotlinx.coroutines.async
import kotlinx.coroutines.awaitAll import kotlinx.coroutines.awaitAll
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import kotlinx.coroutines.suspendCancellableCoroutine import kotlinx.coroutines.suspendCancellableCoroutine
import kotlinx.coroutines.sync.withLock
import kotlinx.coroutines.withContext import kotlinx.coroutines.withContext
import okhttp3.Call
import okhttp3.Callback
import okhttp3.Response
import org.libpag.PAGFile import org.libpag.PAGFile
import java.io.IOException
import kotlin.coroutines.resume import kotlin.coroutines.resume
import kotlin.coroutines.resumeWithException
class JourneyMActivity : AppCompatActivity() { class JourneyMActivity : AppCompatActivity() {
@ -54,21 +47,21 @@ class JourneyMActivity : AppCompatActivity() {
private var backPressedOnce = false private var backPressedOnce = false
private var currentBannerType = 0 private var currentBannerType = 0
private lateinit var bannerStr0: String
private lateinit var bannerStr1: String
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = JourneyActivityMainBinding.inflate(layoutInflater) binding = JourneyActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
bannerStr0 = getString(R.string.recommend)
bannerStr1 = getString(R.string.cool)
initBar() initBar()
initView() initView()
initData() initData()
} }
override fun onResume() {
super.onResume()
MaxAdsInsUtil.loadAllAdIsNotCached(this)
}
private suspend fun getFetchCategory( private suspend fun getFetchCategory(
key: String, key: String,
offset: Int, offset: Int,
@ -102,9 +95,6 @@ class JourneyMActivity : AppCompatActivity() {
override fun onSuccess(data: List<MainDataBean>) { override fun onSuccess(data: List<MainDataBean>) {
GlobalScope.launch(Dispatchers.IO) { GlobalScope.launch(Dispatchers.IO) {
val jobs = data.map { bean -> val jobs = data.map { bean ->
if (bean.title == "For You") {
bean.title = "Recommend"
}
GlobalScope.async(Dispatchers.IO) { GlobalScope.async(Dispatchers.IO) {
val resultCategory = getFetchCategory( val resultCategory = getFetchCategory(
bean.key, getRandomInt(1, 15), bean.key, getRandomInt(1, 15),
@ -118,6 +108,7 @@ class JourneyMActivity : AppCompatActivity() {
withContext(Dispatchers.Main) { withContext(Dispatchers.Main) {
dataList.clear() dataList.clear()
dataList.addAll(list) dataList.addAll(list)
Log.d(JourneyApp.TAG, "--------------dataList=${dataList.size}")
mainAdapter?.notifyDataSetChanged() mainAdapter?.notifyDataSetChanged()
loadingClose() loadingClose()
} }
@ -161,14 +152,21 @@ class JourneyMActivity : AppCompatActivity() {
} }
} }
binding.bannerBtn.setOnClickListener { binding.bannerBtn.setOnClickListener {
for (data in dataList) {
val recommend = dataList.filter { it.title == "Recommend" } Log.d(JourneyApp.TAG, "---------- data=${data.title}")
val cool = dataList.filter { it.title == "Cool" } }
val recommend = dataList.filter { it.title.contains("For You") }
val cool = dataList.filter { it.title.contains(bannerStr1) }
if (currentBannerType == 0) { if (currentBannerType == 0) {
Log.d(JourneyApp.TAG, "----------0 recommend.size=${recommend.size}")
val intent = Intent(this, JourneyCategoryDetailsActivity::class.java) val intent = Intent(this, JourneyCategoryDetailsActivity::class.java)
intent.putExtra(JourneyCategoryDetailsActivity.CATEGORY_DETAILS_BEAN_KEY, recommend[0]) intent.putExtra(
JourneyCategoryDetailsActivity.CATEGORY_DETAILS_BEAN_KEY,
recommend[0]
)
startActivity(intent) startActivity(intent)
} else if (currentBannerType == 1) { } else if (currentBannerType == 1) {
Log.d(JourneyApp.TAG, "----------1 cool.size=${cool.size}")
val intent = Intent(this, JourneyCategoryDetailsActivity::class.java) val intent = Intent(this, JourneyCategoryDetailsActivity::class.java)
intent.putExtra(JourneyCategoryDetailsActivity.CATEGORY_DETAILS_BEAN_KEY, cool[0]) intent.putExtra(JourneyCategoryDetailsActivity.CATEGORY_DETAILS_BEAN_KEY, cool[0])
startActivity(intent) startActivity(intent)
@ -180,7 +178,11 @@ class JourneyMActivity : AppCompatActivity() {
if (enabled && default) { if (enabled && default) {
binding.dialogStepLayout.visibility = View.GONE binding.dialogStepLayout.visibility = View.GONE
Toast.makeText(this,"The keyboard has been set up successfully!",Toast.LENGTH_SHORT).show() Toast.makeText(
this,
"The keyboard has been set up successfully!",
Toast.LENGTH_SHORT
).show()
} else { } else {
binding.dialogStepLayout.visibility = View.VISIBLE binding.dialogStepLayout.visibility = View.VISIBLE
updateSetMyInputMethod() updateSetMyInputMethod()
@ -252,7 +254,7 @@ class JourneyMActivity : AppCompatActivity() {
currentBannerType = 0 currentBannerType = 0
binding.indicatorLayout.setBackgroundColor(getColor(R.color.banner_indicator_one_bg)) binding.indicatorLayout.setBackgroundColor(getColor(R.color.banner_indicator_one_bg))
binding.indicatorImg.setImageResource(R.mipmap.top_banner_one_img) binding.indicatorImg.setImageResource(R.mipmap.top_banner_one_img)
binding.indicatorTxt.text = getString(R.string.recommend) binding.indicatorTxt.text = bannerStr0
binding.indicatorGoBg.setCardBackgroundColor(getColor(R.color.banner_indicator_one_go_bg_color)) binding.indicatorGoBg.setCardBackgroundColor(getColor(R.color.banner_indicator_one_go_bg_color))
binding.indicatorLineOneBg.setBackgroundColor(getColor(R.color.banner_indicator_one_go_bg_color)) binding.indicatorLineOneBg.setBackgroundColor(getColor(R.color.banner_indicator_one_go_bg_color))
binding.indicatorLineTowBg.setBackgroundColor(getColor(R.color.black_10)) binding.indicatorLineTowBg.setBackgroundColor(getColor(R.color.black_10))
@ -262,7 +264,7 @@ class JourneyMActivity : AppCompatActivity() {
currentBannerType = 1 currentBannerType = 1
binding.indicatorLayout.setBackgroundColor(getColor(R.color.banner_indicator_tow_bg)) binding.indicatorLayout.setBackgroundColor(getColor(R.color.banner_indicator_tow_bg))
binding.indicatorImg.setImageResource(R.mipmap.top_banner_tow_img) binding.indicatorImg.setImageResource(R.mipmap.top_banner_tow_img)
binding.indicatorTxt.text = getString(R.string.cool) binding.indicatorTxt.text = bannerStr1
binding.indicatorGoBg.setCardBackgroundColor(getColor(R.color.banner_indicator_tow_go_bg_color)) binding.indicatorGoBg.setCardBackgroundColor(getColor(R.color.banner_indicator_tow_go_bg_color))
binding.indicatorLineOneBg.setBackgroundColor(getColor(R.color.black_10)) binding.indicatorLineOneBg.setBackgroundColor(getColor(R.color.black_10))
binding.indicatorLineTowBg.setBackgroundColor(getColor(R.color.banner_indicator_tow_go_bg_color)) binding.indicatorLineTowBg.setBackgroundColor(getColor(R.color.banner_indicator_tow_go_bg_color))

View File

@ -3,16 +3,9 @@ package com.keyboard.journey
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.applovin.mediation.MaxError
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
import com.keyboard.journey.ad.AdLoadListener
import com.keyboard.journey.ad.AdShowFailed
import com.keyboard.journey.ad.AdShowListener
import com.keyboard.journey.ad.MaxAdsInsUtil
import com.keyboard.journey.databinding.JourneyStartActivityBinding import com.keyboard.journey.databinding.JourneyStartActivityBinding
import org.libpag.PAGFile import org.libpag.PAGFile
import java.util.Timer
import java.util.TimerTask
class JourneyStartActivity : AppCompatActivity() { class JourneyStartActivity : AppCompatActivity() {
companion object { companion object {
@ -20,7 +13,7 @@ class JourneyStartActivity : AppCompatActivity() {
} }
private lateinit var binding: JourneyStartActivityBinding private lateinit var binding: JourneyStartActivityBinding
private var timer: DelayTimer? = null // 可变变量,初始化为 null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
@ -30,61 +23,11 @@ class JourneyStartActivity : AppCompatActivity() {
fullScreen(true) fullScreen(true)
statusBarDarkFont(false) statusBarDarkFont(false)
} }
timer = DelayTimer(SPLASH_TIME_OUT, callback = {
LogUtil.logMsgD("loaded ing")
if (adCanShow()) {
timer?.stop()
showAd()
}
}, com = {
startMain()
})
loadAd()
if (timer != null) {
timer?.start()
}
loadingPlay() loadingPlay()
}
private fun loadAd() {
MaxAdsInsUtil.loadMaxAd(
this,
MaxAdsInsUtil.Placement.SPLASH_AD_ID, object : AdLoadListener {
override fun loaded() {
LogUtil.logMsgD("loaded")
}
override fun loadFailed(error: MaxError?) {
LogUtil.logMsgD(error.toString())
startMain()
timer?.stop()
}
})
MaxAdsInsUtil.loadSplashAllAd(this)
}
private fun adCanShow(): Boolean {
return MaxAdsInsUtil.canShowAd(MaxAdsInsUtil.Placement.SPLASH_AD_ID)
}
private fun showAd() {
MaxAdsInsUtil.showMaxAd(
this,
MaxAdsInsUtil.Placement.SPLASH_AD_ID,
object : AdShowListener {
override fun onAdShown() {
}
override fun onAdShowFailed(error: AdShowFailed?) {
startMain() startMain()
} }
override fun onAdClosed() {
startMain()
}
})
}
private fun startMain() { private fun startMain() {
val intent = Intent(this, JourneyMActivity::class.java) val intent = Intent(this, JourneyMActivity::class.java)
@ -109,32 +52,5 @@ class JourneyStartActivity : AppCompatActivity() {
super.onDestroy() super.onDestroy()
loadingClose() loadingClose()
} }
}
class DelayTimer(
private val totalDelayInMillis: Long,
private val callback: () -> Unit,
private val com: () -> Unit
) {
private val timer = Timer()
private var elapsedTime: Long = 0
fun start() {
timer.scheduleAtFixedRate(object : TimerTask() {
override fun run() {
if (elapsedTime < totalDelayInMillis) {
callback.invoke()
elapsedTime += 1000 // 每秒钟递增
} else {
com.invoke()
stop()
}
}
}, 0, 1000) // 每秒钟执行一次
}
fun stop() {
timer.cancel()
}
} }

View File

@ -13,7 +13,6 @@ import android.view.View
import android.view.inputmethod.InputMethodManager import android.view.inputmethod.InputMethodManager
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.gyf.immersionbar.ktx.immersionBar import com.gyf.immersionbar.ktx.immersionBar
import com.keyboard.journey.ad.MaxAdsInsUtil
import com.keyboard.journey.databinding.JourneyPreviewActivityBinding import com.keyboard.journey.databinding.JourneyPreviewActivityBinding
import com.keyboard.journey.util.currentlyThemeUFileString import com.keyboard.journey.util.currentlyThemeUFileString
import com.keyboard.journey.util.getBitmapXXDrawable import com.keyboard.journey.util.getBitmapXXDrawable
@ -34,7 +33,7 @@ class PreviewActivity : AppCompatActivity() {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = JourneyPreviewActivityBinding.inflate(layoutInflater) binding = JourneyPreviewActivityBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
MaxAdsInsUtil.loadAllAdIsNotCached(this)
initBar() initBar()
themeUrl = intent.getStringExtra(KEY_PREVIEW_URL).toString() themeUrl = intent.getStringExtra(KEY_PREVIEW_URL).toString()
registerReceiver() registerReceiver()
@ -54,8 +53,8 @@ class PreviewActivity : AppCompatActivity() {
} }
override fun onBackPressed() { override fun onBackPressed() {
MaxAdsInsUtil.showAdRandomMode(this)
super.onBackPressed() super.onBackPressed()
// TODO: showAd
} }
private fun initView() { private fun initView() {

View File

@ -1,8 +0,0 @@
package com.keyboard.journey.ad
import com.applovin.mediation.MaxError
interface AdLoadListener {
fun loadFailed(error: MaxError?) {}
fun loaded() {}
}

View File

@ -1,5 +0,0 @@
package com.keyboard.journey.ad
data class AdShowFailed(
val msg: String = "",
)

View File

@ -1,7 +0,0 @@
package com.keyboard.journey.ad
interface AdShowListener {
fun onAdShown() {}
fun onAdShowFailed(error: AdShowFailed?) {}
fun onAdClosed() {}
}

View File

@ -1,21 +0,0 @@
package com.keyboard.journey.ad
import com.applovin.mediation.ads.MaxInterstitialAd
class InstAdCacheManager {
private val mMaxAdCacheDict: MutableMap<String, MaxInterstitialAd> = mutableMapOf()
companion object {
val instance: InstAdCacheManager by lazy(mode = LazyThreadSafetyMode.SYNCHRONIZED) {
InstAdCacheManager()
}
}
fun setAdCache(place: String, adCache: MaxInterstitialAd) {
mMaxAdCacheDict[place] = adCache
}
fun getAdCache(place: String): MaxInterstitialAd? {
return mMaxAdCacheDict[place]
}
}

View File

@ -1,59 +0,0 @@
package com.keyboard.journey.ad
import android.app.Activity
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
import com.applovin.mediation.ads.MaxInterstitialAd
class MaxAdInstLoad {
private var mPlace: String
private var adLoadListener: AdLoadListener? = null
private var activity: Activity? = null
constructor(activity: Activity, place: String, listener: AdLoadListener?) {
this.mPlace = place
this.adLoadListener = listener
this.activity = activity
init()
}
constructor(place: String, listener: AdLoadListener?) {
this.mPlace = place
this.adLoadListener = listener
init()
}
private fun init() {
val interstitialAd = MaxInterstitialAd(mPlace, activity)
interstitialAd.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
// Handle ad loaded event
InstAdCacheManager.instance.setAdCache(mPlace, interstitialAd)
adLoadListener?.loaded()
}
override fun onAdDisplayed(p0: MaxAd) {
// Handle ad displayed event
}
override fun onAdHidden(p0: MaxAd) {
// Handle ad hidden event
}
override fun onAdClicked(p0: MaxAd) {
// Handle ad clicked event
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
// Handle ad load failure event
adLoadListener?.loadFailed(p1)
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
// Handle ad display failure event
}
})
interstitialAd.loadAd()
}
}

View File

@ -1,58 +0,0 @@
package com.keyboard.journey.ad
import android.app.Activity
import com.applovin.mediation.MaxAd
import com.applovin.mediation.MaxAdListener
import com.applovin.mediation.MaxError
class MaxAdInstShower {
private var mPlace: String
private var showListener: AdShowListener? = null
private var activity: Activity? = null
constructor(activity: Activity, place: String, showListener: AdShowListener?) {
this.mPlace = place
this.showListener = showListener
this.activity = activity
init()
}
constructor(place: String, showListener: AdShowListener?) {
this.mPlace = place
this.showListener = showListener
init()
}
private fun init() {
val interstitialAd = InstAdCacheManager.instance.getAdCache(mPlace)
interstitialAd?.setListener(object : MaxAdListener {
override fun onAdLoaded(p0: MaxAd) {
// Handle ad loaded event
}
override fun onAdDisplayed(p0: MaxAd) {
// Handle ad displayed event
showListener?.onAdShown()
}
override fun onAdHidden(p0: MaxAd) {
// Handle ad hidden event
showListener?.onAdClosed()
}
override fun onAdClicked(p0: MaxAd) {
// Handle ad clicked event
}
override fun onAdLoadFailed(p0: String, p1: MaxError) {
// Handle ad load failure event
showListener?.onAdShowFailed(AdShowFailed(p1.message))
}
override fun onAdDisplayFailed(p0: MaxAd, p1: MaxError) {
// Handle ad display failure event
}
})
interstitialAd?.showAd()
}
}

View File

@ -1,82 +0,0 @@
package com.keyboard.journey.ad
import android.app.Activity
import java.util.Random
object MaxAdsInsUtil {
object Placement {
const val SPLASH_AD_ID = "f17d90b8ffcd8c43"
const val MAX_AD_ID_ONE = "b940838b4e632b48"
const val MAX_AD_ID_TOW = "872bcabcd258447b"
val adPlaceAllList = listOf(
SPLASH_AD_ID,
MAX_AD_ID_ONE,
MAX_AD_ID_TOW
)
}
fun loadSplashAllAd(act: Activity) {
Placement.adPlaceAllList.drop(1).forEach { placement ->
loadAdIfNotCached(act, placement)
}
}
fun loadAllAdIsNotCached(act: Activity) {
Placement.adPlaceAllList.forEach { placement ->
loadAdIfNotCached(act, placement)
}
}
fun loadAdIfNotCached(act: Activity, placement: String, listener: AdLoadListener? = null) {
if (act.isFinishing || canShowAd(placement)) return
loadMaxAd(act, placement, listener)
}
fun showAdRandomMode(act: Activity) {
val adPlace: MutableList<String> = ArrayList()
Placement.adPlaceAllList.forEach { placement ->
if (canShowAd(placement)) {
adPlace.add(placement)
}
}
if (adPlace.isNotEmpty()) {
val placeId = Random().nextInt(adPlace.size)
val place = adPlace[placeId]
showAdIfCached(act, place)
}
}
fun showAdIfCached(act: Activity, placement: String, listener: AdShowListener? = null) {
if (act.isFinishing || !canShowAd(placement)) {
listener?.onAdShowFailed(AdShowFailed("No cache for ads"))
} else {
showMaxAd(act, placement, listener)
}
}
fun loadMaxAd(
act: Activity,
adID: String,
loadListener: AdLoadListener?
): MaxAdInstLoad {
return MaxAdInstLoad(act, adID, loadListener)
}
fun showMaxAd(
act: Activity,
adID: String,
listener: AdShowListener?
): MaxAdInstShower {
return MaxAdInstShower(act, adID, listener)
}
fun canShowAd(adID: String): Boolean {
InstAdCacheManager.instance.getAdCache(adID)?.let {
return it.isReady
} ?: let {
return false
}
}
}

View File

@ -1,9 +1,5 @@
// Top-level build file where you can add configuration options common to all sub-projects/modules. // Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
dependencies {
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.0.7")
}
}
plugins { plugins {
id 'com.android.application' version '8.0.1' apply false id 'com.android.application' version '8.0.1' apply false
id 'com.android.library' version '8.0.1' apply false id 'com.android.library' version '8.0.1' apply false

View File

@ -4,7 +4,6 @@ pluginManagement {
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
maven { url 'https://artifacts.applovin.com/android' }
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
@ -12,12 +11,9 @@ dependencyResolutionManagement {
repositories { repositories {
google() google()
mavenCentral() mavenCentral()
maven { url 'https://jitpack.io' } maven { url 'https://jitpack.io' }
maven { url 'https://artifacts.applovin.com/android' }
maven { url "https://s01.oss.sonatype.org/content/groups/public" }
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
// maven { url "https://artifact.bytedance.com/repository/pangle" }
} }
} }