TopOn广告接入

This commit is contained in:
yuqian 2025-12-05 17:11:03 +08:00
parent 976e6c9f64
commit 5be00984bc
20 changed files with 268 additions and 34 deletions

View File

@ -6,6 +6,8 @@ plugins {
id("org.jetbrains.kotlin.android") id("org.jetbrains.kotlin.android")
id("io.objectbox") id("io.objectbox")
kotlin("kapt") kotlin("kapt")
id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
} }
// 生成时间戳(保持原有格式,但后续文件名中不包含特殊字符) // 生成时间戳(保持原有格式,但后续文件名中不包含特殊字符)
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
@ -18,8 +20,8 @@ android {
applicationId = "com.photo.house.wallpapers" applicationId = "com.photo.house.wallpapers"
minSdk = 24 minSdk = 24
targetSdk = 36 targetSdk = 36
versionCode = 2 versionCode = 3
versionName = "1.1" versionName = "3.0"
setProperty("archivesBaseName", "House Wallpapers_V" + versionName + "(${versionCode})_$timestamp") setProperty("archivesBaseName", "House Wallpapers_V" + versionName + "(${versionCode})_$timestamp")
@ -60,5 +62,97 @@ dependencies {
implementation("androidx.test.ext:junit:1.3.0") implementation("androidx.test.ext:junit:1.3.0")
testImplementation("junit:junit:4.13.2") testImplementation("junit:junit:4.13.2")
implementation("jp.wasabeef:glide-transformations:4.3.0") // Glide图片变换库 implementation("jp.wasabeef:glide-transformations:4.3.0") // Glide图片变换库
implementation("com.squareup.okhttp3:okhttp:5.3.1") // implementation("com.squareup.okhttp3:okhttp:5.3.1")
//firebase
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")
//topon和upload
implementation(files("libs/TopOnLibrary_11_06_18_02-release.aar"))
implementation(files("libs/UpLoadLibrary_12_03_15_13-release.aar"))
implementation ("com.squareup.okhttp3:okhttp:4.12.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.12.0")
implementation ("com.google.android.gms:play-services-ads-identifier:18.0.1")
//-----------------------------------------------TopOn(Mintegral、Pangle、UnitAds、Digital Turbine(Fyber)、Chartboost&Helium、Ironsource、Liftoff(Vungle)、Inmobi、Start.io、Bigo)
//TU (Necessary)
implementation("com.thinkup.sdk:core-tpn:6.4.90")
implementation("com.thinkup.sdk:nativead-tpn:6.4.90")
implementation("com.thinkup.sdk:banner-tpn:6.4.90")
implementation("com.thinkup.sdk:interstitial-tpn:6.4.90")
implementation("com.thinkup.sdk:rewardedvideo-tpn:6.4.90")
implementation("com.thinkup.sdk:splash-tpn:6.4.90")
//Androidx (Necessary)
implementation("androidx.appcompat:appcompat:1.6.1")
implementation("androidx.browser:browser:1.4.0")
//StartApp
implementation("com.thinkup.sdk:adapter-tpn-startapp:6.4.90")
implementation("com.startapp:inapp-sdk:5.0.2")
//Vungle
implementation("com.thinkup.sdk:adapter-tpn-vungle:6.4.90")
implementation("com.vungle:vungle-ads:7.5.0")
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.thinkup.sdk:adapter-tpn-unityads:6.4.90")
implementation("com.unity3d.ads:unity-ads:4.14.0")
//Ironsource
implementation("com.thinkup.sdk:adapter-tpn-ironsource:6.4.90")
implementation("com.ironsource.sdk:mediationsdk:8.7.0")
implementation("com.google.android.gms:play-services-appset:16.0.2")
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
implementation("com.google.android.gms:play-services-basement:18.1.0")
//Bigo
implementation("com.thinkup.sdk:adapter-tpn-bigo:6.4.90")
implementation("com.bigossp:bigo-ads:5.3.0")
//Pangle
implementation("com.thinkup.sdk:adapter-tpn-pangle:6.4.90.1")
implementation("com.pangle.global:pag-sdk:7.2.0.6")
implementation("com.google.android.gms:play-services-ads-identifier:18.2.0")
//Inmobi
implementation("com.thinkup.sdk:adapter-tpn-inmobi:6.4.90")
implementation("com.inmobi.monetization:inmobi-ads-kotlin:10.8.2")
//Mintegral
implementation("com.thinkup.sdk:adapter-tpn-mintegral:6.4.90")
implementation("com.mbridge.msdk.oversea:mbridge_android_sdk:16.9.71")
implementation("androidx.recyclerview:recyclerview:1.1.0")
//Chartboost
implementation("com.thinkup.sdk:adapter-tpn-chartboost:6.4.90")
implementation("com.chartboost:chartboost-sdk:9.8.3")
implementation("com.chartboost:chartboost-mediation-sdk:4.9.2")
implementation("com.chartboost:chartboost-mediation-adapter-chartboost:4.9.8.1.0")
implementation("com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:1.0.0")
implementation("com.squareup.okhttp3:logging-interceptor:4.10.0")
implementation("com.squareup.okhttp3:okhttp:4.10.0")
implementation("com.squareup.retrofit2:converter-scalars:2.9.0")
implementation("com.squareup.retrofit2:retrofit:2.9.0")
implementation("org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.1")
implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.5.1")
//Fyber
implementation("com.thinkup.sdk:adapter-tpn-fyber:6.4.90")
implementation("com.fyber:marketplace-sdk:8.3.7")
implementation("com.google.android.gms:play-services-ads-identifier:18.0.1")
//Tramini
implementation("com.thinkup.sdk:tramini-plugin-tpn:6.4.90")
// Debugger UI Tools
implementation("com.anythink.sdk:debugger-ui:1.1.0")
//----------------------------------------------TopOn
} }

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

@ -0,0 +1,29 @@
{
"project_info": {
"project_number": "1099330098288",
"project_id": "housewallpapers-efa90",
"storage_bucket": "housewallpapers-efa90.firebasestorage.app"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:1099330098288:android:ef29ba7d763650d91490b5",
"android_client_info": {
"package_name": "com.photo.house.wallpapers"
}
},
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyB4UKR0DjH3Kp0GORtdvLScYnKo_pYJBj8"
}
],
"services": {
"appinvite_service": {
"other_platform_oauth_client": []
}
}
}
],
"configuration_version": "1"
}

Binary file not shown.

Binary file not shown.

View File

@ -4,6 +4,7 @@
<uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove" /> <uses-permission android:name="android.permission.BLUETOOTH" tools:node="remove" />
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.SET_WALLPAPER" /> <uses-permission android:name="android.permission.SET_WALLPAPER" />
<uses-permission <uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:name="android.permission.WRITE_EXTERNAL_STORAGE"
@ -18,8 +19,18 @@
android:roundIcon="@mipmap/logo1" android:roundIcon="@mipmap/logo1"
android:label="@string/app_name" android:label="@string/app_name"
android:supportsRtl="true" android:supportsRtl="true"
android:networkSecurityConfig="@xml/net"
android:theme="@style/Theme.Wallpaper" android:theme="@style/Theme.Wallpaper"
tools:targetApi="31"> tools:targetApi="31">
<!--start.io-->
<meta-data
android:name="com.startapp.sdk.SPLASH_ENABLED"
android:value="false" />
<!--start.io-->
<meta-data
android:name="com.startapp.sdk.RETURN_ADS_ENABLED"
android:value="false" />
<activity <activity
android:name="com.house.wallpapers.myactivity.MySearchActivity" android:name="com.house.wallpapers.myactivity.MySearchActivity"
android:screenOrientation="portrait" android:screenOrientation="portrait"

View File

@ -5,10 +5,12 @@ import android.content.Context;
import android.graphics.Typeface; import android.graphics.Typeface;
import android.util.Log; import android.util.Log;
import com.ad.toponlibrary.AdManager;
import com.house.wallpapers.mybean.Data; import com.house.wallpapers.mybean.Data;
import com.house.wallpapers.mytool.Comutils; import com.house.wallpapers.mytool.Comutils;
import com.house.wallpapers.mytool.ObectManager; import com.house.wallpapers.mytool.ObectManager;
import com.house.wallpapers.mytool.JsonData; import com.house.wallpapers.mytool.JsonData;
import com.up.uploadlibrary.UpLoadManager;
import java.io.IOException; import java.io.IOException;
import java.io.InputStream; import java.io.InputStream;
@ -23,6 +25,7 @@ public class App extends Application {
public static String TAG = "-------MyApp---------"; public static String TAG = "-------MyApp---------";
public static Typeface defaultFont; public static Typeface defaultFont;
public static App app;
private String animasName = "Animals.json"; private String animasName = "Animals.json";
@ -40,9 +43,15 @@ public class App extends Application {
@Override @Override
public void onCreate() { public void onCreate() {
super.onCreate(); super.onCreate();
app = this;
mAppContext = this; mAppContext = this;
defaultFont = Typeface.createFromAsset(getAssets(), "custfont.ttf"); defaultFont = Typeface.createFromAsset(getAssets(), "custfont.ttf");
UpLoadManager.INSTANCE.init(this,TAG,(k1,k2)-> null);
AdManager.INSTANCE.init(TAG,app,"h69312a043bef5","a2f0c6303ec5c5423fa21b8dd9a7ea477",
"25e138876a3743aa9037e82dff40dcb657df7a6d",
"n69312a30b85ce",
"n69312a314dafe",
"n69312a319da17",false);
ObectManager.init(this); ObectManager.init(this);
executor = Executors.newFixedThreadPool(8); executor = Executors.newFixedThreadPool(8);
String[] names = {wallpaperName, animasName, exName, filmName, natureName, pattName, streetName, travelName}; String[] names = {wallpaperName, animasName, exName, filmName, natureName, pattName, streetName, travelName};

View File

@ -2,6 +2,7 @@ package com.house.wallpapers.myactivity;
import android.content.Intent; import android.content.Intent;
import android.os.Bundle; import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler; import android.os.Handler;
import android.os.Looper; import android.os.Looper;
import android.widget.ProgressBar; import android.widget.ProgressBar;
@ -12,16 +13,23 @@ import androidx.core.graphics.Insets;
import androidx.core.view.ViewCompat; import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat; import androidx.core.view.WindowInsetsCompat;
import com.ad.toponlibrary.AdManager;
import com.google.android.material.color.DynamicColors; import com.google.android.material.color.DynamicColors;
import com.house.wallpapers.R; import com.house.wallpapers.R;
import com.house.wallpapers.mytool.Comutils; import com.house.wallpapers.mytool.Comutils;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
import kotlin.jvm.functions.Function1;
public class FirstActivity extends AppCompatActivity { public class FirstActivity extends AppCompatActivity {
private static final long SPLASH_TIME_OUT = 5000; // 总时长5秒 private static final long SPLASH_TIME_OUT = 13000; // 总时长13
private static final long PROGRESS_INTERVAL = 50; // 进度更新间隔毫秒 private static final long PROGRESS_INTERVAL = 50; // 进度更新间隔毫秒
private ProgressBar progressBar; private ProgressBar progressBar;
private TextView tvProgress; private TextView tvProgress;
private int currentProgress = 0; private int currentProgress = 0;
private CountDownTimer countDownTimer;
private Handler handler; private Handler handler;
@Override @Override
@ -45,21 +53,26 @@ public class FirstActivity extends AppCompatActivity {
} }
private void startProgressUpdate() { private void startProgressUpdate() {
handler.postDelayed(new Runnable() { countDownTimer = AdManager.showWelcomeAd(this, SPLASH_TIME_OUT, new Function1<Long, Unit>() {
@Override @Override
public void run() { public Unit invoke(Long aLong) {
currentProgress++; int progressPercentage = (int) ((100 * aLong) / SPLASH_TIME_OUT);
progressBar.setProgress(currentProgress); int Percentage = 100 - progressPercentage;
tvProgress.setText(currentProgress + "%"); progressBar.setProgress(Percentage);
if (currentProgress < 100) { tvProgress.setText(Percentage + "%");
handler.postDelayed(this, PROGRESS_INTERVAL); return null;
} else { }
Intent intent = new Intent(FirstActivity.this, HomeActivity.class);
startActivity(intent); }, new Function0<Unit>() {
finish(); @Override
} public Unit invoke() {
} Intent intent = new Intent(FirstActivity.this, HomeActivity.class);
}, PROGRESS_INTERVAL); startActivity(intent);
finish();
return null;
}
});
countDownTimer.start();
} }
@Override @Override

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.toponlibrary.AdManager;
import com.house.wallpapers.R; import com.house.wallpapers.R;
import com.house.wallpapers.databinding.ActivityHomeBinding; import com.house.wallpapers.databinding.ActivityHomeBinding;
import com.house.wallpapers.myfragment.FragmentFavorite; import com.house.wallpapers.myfragment.FragmentFavorite;
@ -50,6 +51,7 @@ public class HomeActivity extends AppCompatActivity implements View.OnClickListe
initFragments(); initFragments();
initTabViews(); initTabViews();
initViewPager2(); initViewPager2();
AdManager.loadAllAd();
initSearchClickListener(); initSearchClickListener();
updateTabState(currentTabPosition); updateTabState(currentTabPosition);
updateTitle(currentTabPosition); updateTitle(currentTabPosition);

View File

@ -7,6 +7,8 @@ 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.toponlibrary.AdManager;
import com.ad.toponlibrary.onActionListener;
import com.house.wallpapers.adapter.OnItemclick; import com.house.wallpapers.adapter.OnItemclick;
import com.house.wallpapers.databinding.ActivityMyListBinding; import com.house.wallpapers.databinding.ActivityMyListBinding;
import com.house.wallpapers.mybean.Data; import com.house.wallpapers.mybean.Data;
@ -31,13 +33,10 @@ public class MyListActivity extends AppCompatActivity implements OnItemclick {
Comutils.initFull(this, false); Comutils.initFull(this, false);
categoryName = getIntent().getStringExtra(key_index); categoryName = getIntent().getStringExtra(key_index);
vb.name.setText(categoryName); vb.name.setText(categoryName);
AdManager.loadAllAd();
AdManager.showTopOn(this, () -> {});
initList(); initList();
vb.imageviewBack.setOnClickListener(new View.OnClickListener() { vb.imageviewBack.setOnClickListener(v -> finish());
@Override
public void onClick(View v) {
finish();
}
});
} }
private void initList() { private void initList() {

View File

@ -9,11 +9,14 @@ import android.widget.TextView.OnEditorActionListener
import android.widget.Toast import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.GridLayoutManager
import com.ad.toponlibrary.AdManager.loadAllAd
import com.ad.toponlibrary.AdManager.showTopOn
import com.ad.toponlibrary.onActionListener
import com.house.wallpapers.R import com.house.wallpapers.R
import com.house.wallpapers.adapter.OnItemclick import com.house.wallpapers.adapter.OnItemclick
import com.house.wallpapers.databinding.ActivitySearchBinding import com.house.wallpapers.databinding.ActivitySearchBinding
import com.house.wallpapers.myitem.Itemlist
import com.house.wallpapers.mybean.Data import com.house.wallpapers.mybean.Data
import com.house.wallpapers.myitem.Itemlist
import com.house.wallpapers.mytool.Comutils import com.house.wallpapers.mytool.Comutils
import com.house.wallpapers.mytool.Itemhelper import com.house.wallpapers.mytool.Itemhelper
import com.house.wallpapers.mytool.ObectManager import com.house.wallpapers.mytool.ObectManager
@ -27,6 +30,7 @@ class MySearchActivity : AppCompatActivity() ,
binding = ActivitySearchBinding.inflate(layoutInflater) binding = ActivitySearchBinding.inflate(layoutInflater)
setContentView(binding.root) setContentView(binding.root)
Comutils.initFull(this, false) Comutils.initFull(this, false)
loadAllAd()
initList() initList()
binding.imageviewBack.setOnClickListener { binding.imageviewBack.setOnClickListener {
finish() finish()
@ -49,12 +53,18 @@ class MySearchActivity : AppCompatActivity() ,
binding.et.setOnEditorActionListener(OnEditorActionListener { v, actionId, event -> binding.et.setOnEditorActionListener(OnEditorActionListener { v, actionId, event ->
if (actionId == EditorInfo.IME_ACTION_SEARCH) { if (actionId == EditorInfo.IME_ACTION_SEARCH) {
startSearch() showTopOn(this) {
startSearch()
}
return@OnEditorActionListener true return@OnEditorActionListener true
} }
false false
}) })
binding.btnSearch.setOnClickListener { startSearch() } binding.btnSearch.setOnClickListener {
showTopOn(this) {
startSearch()
}
}
} }
private fun closeKeyboard() { private fun closeKeyboard() {

View File

@ -16,6 +16,7 @@ import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity; import androidx.appcompat.app.AppCompatActivity;
import androidx.core.view.WindowCompat; import androidx.core.view.WindowCompat;
import com.ad.toponlibrary.AdManager;
import com.bumptech.glide.Glide; import com.bumptech.glide.Glide;
import com.bumptech.glide.load.DataSource; import com.bumptech.glide.load.DataSource;
import com.bumptech.glide.load.DecodeFormat; import com.bumptech.glide.load.DecodeFormat;
@ -64,6 +65,7 @@ public class MyWallpaperActivity extends AppCompatActivity implements OnSelectty
vb = ActivityMyWallapperBinding.inflate(getLayoutInflater()); vb = ActivityMyWallapperBinding.inflate(getLayoutInflater());
Comutils.initFull(this, true); Comutils.initFull(this, true);
setContentView(vb.getRoot()); setContentView(vb.getRoot());
AdManager.loadAllAd();
weakReference = new WeakReference<>(this); weakReference = new WeakReference<>(this);
data = (Data) getIntent().getSerializableExtra(Comutils.key_info); data = (Data) getIntent().getSerializableExtra(Comutils.key_info);
if (data == null) { if (data == null) {

View File

@ -30,7 +30,7 @@
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="All kinds of types" android:text="All kinds of types"
android:backgroundTint="#CCFBE4E8" android:backgroundTint="#CCC2B4B0"
android:background="@drawable/glass_button_bg" android:background="@drawable/glass_button_bg"
android:textSize="16sp" android:textSize="16sp"
android:textColor="#FFFFFF" android:textColor="#FFFFFF"
@ -47,8 +47,8 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="House Wallpapers" android:text="House Wallpapers"
android:textStyle="italic" android:textStyle="italic"
android:textSize="24sp" android:textSize="26sp"
android:textColor="#FFFFFF" android:textColor="#CCC2B4B0"
android:layout_below="@id/app_description" android:layout_below="@id/app_description"
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"/> android:layout_marginTop="20dp"/>

View File

@ -13,7 +13,7 @@
<!-- <color name="color_1177f7">#DEEFCA</color>--> <!-- <color name="color_1177f7">#DEEFCA</color>-->
<color name="color_4202cb">#F3C5B7</color> <color name="color_4202cb">#F3C5B7</color>
<color name="color_fad91d">#BAF475</color> <color name="color_fad91d">#BAF475</color>
<color name="gray_100">#E0E0E0</color> <color name="gray_100">#CCB0A4A0</color>
<color name="blue_standard">#2196F3</color> <color name="blue_standard">#2196F3</color>
<color name="yellow_star">#FFC107</color> <color name="yellow_star">#FFC107</color>

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

@ -3,7 +3,8 @@ plugins {
id("com.android.application") version "8.13.1" apply false id("com.android.application") version "8.13.1" apply false
id("org.jetbrains.kotlin.android") version "2.2.21" apply false id("org.jetbrains.kotlin.android") version "2.2.21" apply false
kotlin("kapt") version "1.9.0" kotlin("kapt") version "1.9.0"
id("com.google.gms.google-services") version "4.4.2" apply false
id ("com.google.firebase.crashlytics") version "3.0.2" apply false
} }
buildscript { buildscript {

View File

@ -0,0 +1,37 @@
{
"version": 3,
"artifactType": {
"type": "APK",
"kind": "Directory"
},
"applicationId": "com.photo.house.wallpapers",
"variantName": "release",
"elements": [
{
"type": "SINGLE",
"filters": [],
"attributes": [],
"versionCode": 2,
"versionName": "1.1",
"outputFile": "House Wallpapers_V1.1(2)_12_05_16_33-release.apk"
}
],
"elementType": "File",
"baselineProfiles": [
{
"minApi": 28,
"maxApi": 30,
"baselineProfiles": [
"baselineProfiles/1/House Wallpapers_V1.1(2)_12_05_16_33-release.dm"
]
},
{
"minApi": 31,
"maxApi": 2147483647,
"baselineProfiles": [
"baselineProfiles/0/House Wallpapers_V1.1(2)_12_05_16_33-release.dm"
]
}
],
"minSdkVersionForDexing": 24
}

View File

@ -33,6 +33,27 @@ dependencyResolutionManagement {
// //
// //TopOn集成测试工具 // //TopOn集成测试工具
// maven ( "https://jfrog.anythinktech.com/artifactory/debugger") // maven ( "https://jfrog.anythinktech.com/artifactory/debugger")
flatDir {
dirs("libs")
}
//TU(Core)
maven ("https://jfrog.anythinktech.com/artifactory/overseas_sdk")
//Ironsource
maven ("https://android-sdk.is.com/")
//Pangle
maven("https://artifact.bytedance.com/repository/pangle")
//Mintegral
maven("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea")
//Chartboost
maven("https://cboost.jfrog.io/artifactory/chartboost-ads")
maven("https://cboost.jfrog.io/artifactory/chartboost-mediation")
//TopOn集成测试工具
maven ( "https://jfrog.anythinktech.com/artifactory/debugger")
} }
} }