This commit is contained in:
litingting 2025-11-28 18:24:48 +08:00
parent 4237f5d3ea
commit c48c58dfe8
14 changed files with 216 additions and 35 deletions

View File

@ -17,8 +17,8 @@ android {
applicationId = "com.app.input.color.board" applicationId = "com.app.input.color.board"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 2 versionCode = 3
versionName = "1.1" versionName = "1.2"
setProperty( setProperty(
"archivesBaseName", "archivesBaseName",
"ColorBoard_V" + versionName + "(${versionCode})_$timestamp" "ColorBoard_V" + versionName + "(${versionCode})_$timestamp"
@ -61,7 +61,6 @@ dependencies {
androidTestImplementation("androidx.test.ext:junit:1.3.0") androidTestImplementation("androidx.test.ext:junit:1.3.0")
androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0") androidTestImplementation("androidx.test.espresso:espresso-core:3.7.0")
implementation("com.squareup.okhttp3:okhttp:5.3.2") implementation("com.squareup.okhttp3:okhttp:5.3.2")
implementation("com.github.bumptech.glide:glide:5.0.5") implementation("com.github.bumptech.glide:glide:5.0.5")
implementation ("jp.wasabeef:glide-transformations:4.3.0") implementation ("jp.wasabeef:glide-transformations:4.3.0")
@ -77,5 +76,89 @@ dependencies {
implementation ("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2") implementation ("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2")
implementation(files("libs/TradPlusLibrary_11_25_15_02-release.aar"))
implementation(files("libs/UpLoadLibrary_11_24_18_30-release.aar"))
implementation ("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
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")
// TradPlus
implementation("com.tradplusad:tradplus:14.5.0.1")
//noinspection GradleCompatible
implementation("androidx.legacy:legacy-support-v4:1.0.0")
implementation("androidx.appcompat:appcompat:1.3.0-alpha02")
// Meta
implementation("com.facebook.android:audience-network-sdk:6.20.0")
implementation("com.tradplusad:tradplus-facebook:1.14.5.0.1")
// Applovin
implementation("com.applovin:applovin-sdk:13.3.1")
implementation("com.tradplusad:tradplus-applovin:9.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:18.2.0")
// Ironsource
implementation("com.ironsource.sdk:mediationsdk:8.10.0")
implementation("com.tradplusad:tradplus-ironsource:10.14.5.0.1")
implementation("com.google.android.gms:play-services-appset:16.0.0")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-basement:17.5.0")
// Adcolony
implementation("com.adcolony:sdk:4.8.0")
implementation("com.tradplusad:tradplus-adcolony:4.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
// Pangle
implementation("com.tradplusad:tradplus-pangle:19.14.5.0.1")
implementation("com.pangle.global:pag-sdk:7.3.0.3")
// UnityAds
implementation("com.tradplusad:tradplus-unity:5.14.5.0.1")
implementation("com.unity3d.ads:unity-ads:4.15.1")
// Chartboost
implementation("com.tradplusad:tradplus-chartboostx:15.14.5.0.1")
implementation("com.chartboost:chartboost-sdk:9.8.3")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// Inmobi
implementation("com.tradplusad:tradplus-inmobix:23.14.5.0.1")
implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.3")
implementation("androidx.core:core-ktx:1.5.0")
implementation("com.inmobi.omsdk:inmobi-omsdk:1.5.2.0")
// Fyber
implementation("com.fyber:marketplace-sdk:8.3.7")
implementation("com.tradplusad:tradplus-fyber:24.14.5.0.1")
implementation("com.google.android.gms:play-services-ads-identifier:17.0.0")
implementation("com.google.android.gms:play-services-base:17.4.0")
// Start.io
implementation("com.startapp:inapp-sdk:5.2.3")
implementation("com.tradplusad:tradplus-startapp:28.14.5.0.1")
// Mintegral
implementation("com.tradplusad:tradplus-mintegralx_overseas:18.14.5.0.1")
implementation("androidx.recyclerview:recyclerview:1.1.0")
implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71")
// Liftoff
implementation("com.tradplusad:tradplus-vunglex:7.14.5.0.1")
implementation("com.vungle:vungle-ads:7.5.0")
// Yandex
implementation("com.yandex.android:mobileads:7.13.0") {
exclude(group = "com.caverock", module = "androidsvg-aar")
}
implementation("com.tradplusad:tradplus-yandex:50.14.6.10.1")
// Bigo
implementation("com.bigossp:bigo-ads:5.4.0")
implementation("com.tradplusad:tradplus-bigo:57.14.5.0.1")
// Cross Promotion
implementation("com.tradplusad:tradplus-crosspromotion:27.14.5.0.1")
// TP Exchange
// 请注意保持与主包版本同步更新
implementation("com.google.code.gson:gson:2.8.6")
implementation("com.tradplusad:tp_exchange:40.14.5.0.1")
// Google UMP
implementation ("com.google.android.ump:user-messaging-platform:3.2.0")
} }

29
app/google-services.json Normal file
View File

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "616573398132",
"project_id": "colorboard-d9d7c",
"storage_bucket": "colorboard-d9d7c.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:616573398132:android:e509e06bdb4e5785cf7521",
"android_client_info": {
"package_name": "com.app.input.color.board"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyDzvYH3BxCh6hbRKA1IpxyapQ-0xtPh7PE"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Binary file not shown.

View File

@ -3,7 +3,7 @@
xmlns:tools="http://schemas.android.com/tools"> xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<application <application
android:name=".App" android:name=".App"
android:allowBackup="true" android:allowBackup="true"
@ -11,6 +11,8 @@
android:label="@string/app_name" android:label="@string/app_name"
android:roundIcon="@mipmap/logo" android:roundIcon="@mipmap/logo"
android:supportsRtl="true" android:supportsRtl="true"
android:networkSecurityConfig="@xml/net"
tools:replace="networkSecurityConfig"
android:theme="@style/MyKeyBoard" android:theme="@style/MyKeyBoard"
tools:targetApi="31"> tools:targetApi="31">
<activity <activity

View File

@ -4,6 +4,7 @@ import android.app.Application
import android.graphics.Typeface import android.graphics.Typeface
import com.app.input.color.board.bean.BeanDetails import com.app.input.color.board.bean.BeanDetails
import com.app.input.color.board.bean.BeanWrapper import com.app.input.color.board.bean.BeanWrapper
import com.up.uploadlibrary.UpLoadManager
//import com.pretty.keyboard.theme.keyboard.helper.ObjectBox //import com.pretty.keyboard.theme.keyboard.helper.ObjectBox
import org.json.JSONArray import org.json.JSONArray
import java.io.BufferedReader import java.io.BufferedReader
@ -29,6 +30,10 @@ class App : Application() {
appInstance = this appInstance = this
defaultFont = Typeface.createFromAsset(assets, "my_font.ttf") defaultFont = Typeface.createFromAsset(assets, "my_font.ttf")
dealFile() dealFile()
UpLoadManager.init(this,TAG){_,_->
}
} }
private fun dealFile() { private fun dealFile() {
val openFile = appInstance.assets.open("res.json") val openFile = appInstance.assets.open("res.json")

View File

@ -12,6 +12,7 @@ import androidx.fragment.app.Fragment;
import androidx.viewpager2.adapter.FragmentStateAdapter; import androidx.viewpager2.adapter.FragmentStateAdapter;
import androidx.viewpager2.widget.ViewPager2; import androidx.viewpager2.widget.ViewPager2;
import com.ad.tradpluslibrary.TPAdManager;
import com.app.input.color.board.R; import com.app.input.color.board.R;
import com.app.input.color.board.databinding.ActivityCategoryBinding; import com.app.input.color.board.databinding.ActivityCategoryBinding;
import com.app.input.color.board.utils.Common; import com.app.input.color.board.utils.Common;
@ -24,6 +25,9 @@ import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
public class CategoryActivity extends AppCompatActivity { public class CategoryActivity extends AppCompatActivity {
private ActivityCategoryBinding vb; private ActivityCategoryBinding vb;
@ -36,6 +40,7 @@ public class CategoryActivity extends AppCompatActivity {
setContentView(vb.getRoot()); setContentView(vb.getRoot());
init(); init();
} }
private void init() { private void init() {

View File

@ -6,6 +6,7 @@ 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.ad.tradpluslibrary.TPAdManager;
import com.app.input.color.board.App; import com.app.input.color.board.App;
import com.app.input.color.board.bean.BeanDetails; import com.app.input.color.board.bean.BeanDetails;
import com.app.input.color.board.bean.BeanWrapper; import com.app.input.color.board.bean.BeanWrapper;
@ -16,11 +17,15 @@ import com.app.input.color.board.utils.ListDecoration;
import java.util.List; import java.util.List;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
public class CategoryListActivity extends AppCompatActivity { public class CategoryListActivity extends AppCompatActivity {
private ActivityCategoryListBinding vb; private ActivityCategoryListBinding vb;
public static final String KEY_NAME ="class_name"; public static final String KEY_NAME = "class_name";
private String name; private String name;
private List<BeanDetails> data; private List<BeanDetails> data;
@Override @Override
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
@ -30,27 +35,41 @@ public class CategoryListActivity extends AppCompatActivity {
name = getIntent().getStringExtra(KEY_NAME); name = getIntent().getStringExtra(KEY_NAME);
initData(); initData();
initClick(); initClick();
TPAdManager.INSTANCE.showTPAD(CategoryListActivity.this, new Function0<Unit>() {
@Override
public Unit invoke() {
return null;
}
});
} }
private void initData(){ private void initData() {
vb.className.setText(name); vb.className.setText(name);
for (BeanWrapper beanWrapper : App.list) { for (BeanWrapper beanWrapper : App.list) {
if(beanWrapper.getParentName().equals(name)){ if (beanWrapper.getParentName().equals(name)) {
data = beanWrapper.getKeyboardList(); data = beanWrapper.getKeyboardList();
} }
} }
ListDecoration listDecoration = new ListDecoration(3, 3, 0); ListDecoration listDecoration = new ListDecoration(3, 3, 0);
HomeChildAdapter adapterMain = new HomeChildAdapter(this,data); HomeChildAdapter adapterMain = new HomeChildAdapter(this, data);
vb.recycler.setLayoutManager(new GridLayoutManager(CategoryListActivity.this,3)); vb.recycler.setLayoutManager(new GridLayoutManager(CategoryListActivity.this, 3));
vb.recycler.setAdapter(adapterMain); vb.recycler.setAdapter(adapterMain);
vb.recycler.addItemDecoration(listDecoration); vb.recycler.addItemDecoration(listDecoration);
} }
private void initClick(){
private void initClick() {
vb.back.setOnClickListener(new View.OnClickListener() { vb.back.setOnClickListener(new View.OnClickListener() {
@Override @Override
public void onClick(View v) { public void onClick(View v) {
finish(); TPAdManager.INSTANCE.showTPAD(CategoryListActivity.this, new Function0<Unit>() {
@Override
public Unit invoke() {
finish();
return null;
}
});
} }
}); });
} }

View File

@ -5,6 +5,8 @@ import android.os.Bundle
import android.os.CountDownTimer import android.os.CountDownTimer
import android.widget.ProgressBar import android.widget.ProgressBar
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.ad.tradpluslibrary.TPAdManager
import com.app.input.color.board.App
import com.app.input.color.board.utils.Common import com.app.input.color.board.utils.Common
import com.app.input.color.board.R import com.app.input.color.board.R
import kotlin.math.roundToInt import kotlin.math.roundToInt
@ -12,7 +14,7 @@ import kotlin.math.roundToInt
class LauncherActivity : AppCompatActivity() { class LauncherActivity : AppCompatActivity() {
private lateinit var progressBar: ProgressBar private lateinit var progressBar: ProgressBar
private var countTime = 1000L private var countTime = 13000L
private lateinit var timer: CountDownTimer private lateinit var timer: CountDownTimer
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -24,22 +26,28 @@ class LauncherActivity : AppCompatActivity() {
} }
private fun init() { private fun init() {
TPAdManager.init(
timer = object : CountDownTimer(countTime, 100) { this,
override fun onTick(millisUntilFinished: Long) { App.TAG,
val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100 "BEFCCABAC4EEBD6C4A4074003AB33A11",
val round = percentage.roundToInt() "483BEF0A3DEEC7AFED651E2505783812",
progressBar.progress = round "D1ECE81FAB4B993526DDDC6755A02A12",
} "8AB3E49B0356A3D5DFFF3C2BF2849112"
) {
override fun onFinish() {
progressBar.progress = 100
toHome()
}
}
timer = TPAdManager.showWelcomeAd(this, countTime, { millisUntilFinished ->
val percentage: Float = 100 - millisUntilFinished.toFloat() / countTime * 100
val round = percentage.roundToInt()
progressBar.progress = round
}) {
progressBar.progress = 100
toHome()
} }
timer.start() timer.start()
} }

View File

@ -15,6 +15,8 @@ import androidx.core.view.isVisible
import androidx.lifecycle.lifecycleScope import androidx.lifecycle.lifecycleScope
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
import com.ad.tradpluslibrary.TPAdManager
import com.app.input.color.board.App import com.app.input.color.board.App
import com.app.input.color.board.R import com.app.input.color.board.R
import com.app.input.color.board.bean.BeanDetails import com.app.input.color.board.bean.BeanDetails
@ -94,6 +96,7 @@ class SetKeyboardActivity : AppCompatActivity() {
displayData() displayData()
setApply() setApply()
onClick() onClick()
TPAdManager.showTPAD(this@SetKeyboardActivity) { }
} }
@ -155,7 +158,7 @@ class SetKeyboardActivity : AppCompatActivity() {
private fun onClick() { private fun onClick() {
imgBack.setOnClickListener { imgBack.setOnClickListener {
finish() finish()
} }
imgLike.setOnClickListener { imgLike.setOnClickListener {
@ -230,13 +233,15 @@ class SetKeyboardActivity : AppCompatActivity() {
private fun setApply() { private fun setApply() {
applyBtn.setOnClickListener { applyBtn.setOnClickListener {
val checkEnable = Common.checkEnable(this) TPAdManager.showTPAD(this@SetKeyboardActivity){
val checkSetDefault = Common.checkSetDefault(this) val checkEnable = Common.checkEnable(this)
if (!checkEnable || !checkSetDefault) { val checkSetDefault = Common.checkSetDefault(this)
showDialog() if (!checkEnable || !checkSetDefault) {
return@setOnClickListener showDialog()
return@showTPAD
}
startDown()
} }
startDown()
} }
} }

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<network-security-config xmlns:tools="http://schemas.android.com/tools">
<domain-config cleartextTrafficPermitted="true">
<domain tools:ignore="NetworkSecurityConfig">mobile-server.lux-ad.com</domain>
</domain-config>
</network-security-config>

View File

@ -2,7 +2,7 @@
plugins { plugins {
id("com.android.application") version "8.9.0" apply false id("com.android.application") version "8.9.0" apply false
id("org.jetbrains.kotlin.android") version "2.2.21" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false
// id("com.google.gms.google-services") version "4.4.2" 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 id ("com.google.firebase.crashlytics") version "3.0.2" apply false
kotlin("kapt") version "2.0.0" kotlin("kapt") version "2.0.0"
} }

View File

@ -6,7 +6,7 @@
# http://www.gradle.org/docs/current/userguide/build_environment.html # http://www.gradle.org/docs/current/userguide/build_environment.html
# Specifies the JVM arguments used for the daemon process. # Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings. # 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. # When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit # This option should only be used with decoupled projects. More details, visit
# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects

View File

@ -12,7 +12,26 @@ dependencyResolutionManagement {
google() google()
mavenCentral() mavenCentral()
maven("https://jitpack.io") maven("https://jitpack.io")
//------------------------- TradPlus
// Ironsource
maven { url = uri("https://android-sdk.is.com/") }
// Pangle
maven {
url = uri("https://artifact.bytedance.com/repository/pangle")
}
// Chartboost
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven {
name = "Chartboost Mediations maven repo"
url = uri("https://cboost.jfrog.io/artifactory/chartboost-mediation")
}
// Mintegral
//Launch GP market application Android X Version
//If you fail to pull the code using gradle, add the maven warehouse configuration to the project root build.gradle file
maven {
url =
uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
}
} }
} }