TopOn集成(mintegral、unityads、liftoff(vungle)、Bigo)V1.2(3)

This commit is contained in:
litingting 2024-07-17 18:16:24 +08:00
parent a161dda6c0
commit 29bdb87355
17 changed files with 580 additions and 277 deletions

View File

@ -1,30 +1,31 @@
import java.util.Date
import java.text.SimpleDateFormat
plugins {
id("com.android.application")
id("org.jetbrains.kotlin.android")
id("com.google.gms.google-services")
id("applovin-quality-service")
}
applovin {
apiKey = "HiXscdwWaEIFC16qq8xh13TwCnN5Jrs_b0ANd1EtqbPEQX_KegZ5CxV47OaffUbNouMT1l31b3ND3kKEbthqWZ"
id("com.google.firebase.crashlytics")
}
val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date())
android {
namespace = "com.prankapp.fartsounds.airhorn"
compileSdk = 33
compileSdk = 34
defaultConfig {
applicationId = "com.prankapp.fartsounds.airhorn"
minSdk = 21
targetSdk = 33
versionCode = 2
versionName = "1.1"
minSdk = 23
targetSdk = 34
versionCode = 3
versionName = "1.2"
setProperty("archivesBaseName", "Prank App_V" + versionName + "(${versionCode})_$timestamp")
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
}
//prank01 prank prank123
buildTypes {
release {
isMinifyEnabled = false
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
@ -48,26 +49,69 @@ dependencies {
androidTestImplementation("androidx.test.ext:junit:1.1.5")
androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1")
implementation ("com.google.code.gson:gson:2.8.6")
implementation("com.google.code.gson:gson:2.8.6")
implementation ("com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.47")
implementation("com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.47")
implementation ("com.github.bumptech.glide:glide:4.16.0")
implementation ("me.drakeet.materialdialog:library:1.3.1")
implementation("com.github.bumptech.glide:glide:4.16.0")
implementation("me.drakeet.materialdialog:library:1.3.1")
annotationProcessor ("com.github.bumptech.glide:compiler:4.16.0")
implementation ("com.github.ForgetAll:LoadingDialog:v1.1.2")
annotationProcessor("com.github.bumptech.glide:compiler:4.16.0")
implementation("com.github.ForgetAll:LoadingDialog:v1.1.2")
implementation ("com.alibaba:fastjson:1.2.70")
implementation(platform("com.google.firebase:firebase-bom:33.0.0"))
implementation("com.alibaba:fastjson:1.2.70")
implementation(platform("com.google.firebase:firebase-bom:33.1.1"))
implementation("com.google.firebase:firebase-crashlytics")
implementation("com.google.firebase:firebase-analytics")
implementation("com.applovin:applovin-sdk:12.5.0")
implementation("com.applovin.mediation:adcolony-adapter:4.8.0.4")
implementation("com.applovin.mediation:ironsource-adapter:8.1.0.0.0")
implementation("com.applovin.mediation:vungle-adapter:7.3.2.1")
implementation("com.applovin.mediation:facebook-adapter:6.17.0.0")
implementation("com.applovin.mediation:bytedance-adapter:5.9.0.6.0")
implementation("com.applovin.mediation:unityads-adapter:4.12.0.0")
//-----------------------------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")
}

View File

@ -1,13 +1,13 @@
{
"project_info": {
"project_number": "545114132353",
"project_id": "prank-app-funny-sounds-air-hor",
"storage_bucket": "prank-app-funny-sounds-air-hor.appspot.com"
"project_number": "890674306096",
"project_id": "prank-app-funny-sound-air-horn",
"storage_bucket": "prank-app-funny-sound-air-horn.appspot.com"
},
"client": [
{
"client_info": {
"mobilesdk_app_id": "1:545114132353:android:2f3713b50c726900a2a280",
"mobilesdk_app_id": "1:890674306096:android:1ea832c0b755fe7fd161f5",
"android_client_info": {
"package_name": "com.prankapp.fartsounds.airhorn"
}
@ -15,7 +15,7 @@
"oauth_client": [],
"api_key": [
{
"current_key": "AIzaSyCkBnu8PFLZmPPBEEv1o27iTAYBVZpBdec"
"current_key": "AIzaSyB5GQ6DOpqiXmY6EBGCJy4yrV3OyRvt2F8"
}
],
"services": {

5
app/keyinfo Normal file
View File

@ -0,0 +1,5 @@
keyfile:prankapp.jks
key store psd prankapp
aliasprank
key psdprankapp123

View File

@ -1,10 +0,0 @@
{\rtf1\ansi\ansicpg936\cocoartf2761
\cocoatextscaling0\cocoaplatform0{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
{\colortbl;\red255\green255\blue255;}
{\*\expandedcolortbl;;}
\paperw11900\paperh16840\margl1440\margr1440\vieww11520\viewh8400\viewkind0
\pard\tx720\tx1440\tx2160\tx2880\tx3600\tx4320\tx5040\tx5760\tx6480\tx7200\tx7920\tx8640\pardirnatural\partightenfactor0
\f0\fs24 \cf0 key store psd \uc0\u65306 prank123\
alias\uc0\u65306 prank\
key psd\uc0\u65306 prank123123}

107
app/proguard-rules.pro vendored
View File

@ -18,4 +18,109 @@
# If you keep the line number information, uncomment this to
# hide the original source file name.
#-renamesourcefileattribute SourceFile
#-renamesourcefileattribute SourceFile
#---------------------------------TopOn 聚合
# Vungle
-dontwarn com.vungle.ads.**
-keepclassmembers class com.vungle.ads.** {
*;
}
# Google
-keep class com.google.android.gms.** { *; }
-dontwarn com.google.android.gms.**
# 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 聚合
-dontwarn java.awt.Color
-dontwarn java.awt.Font
-dontwarn java.awt.Point
-dontwarn java.awt.Rectangle
-dontwarn javax.money.CurrencyUnit
-dontwarn javax.money.Monetary
-dontwarn javax.ws.rs.Consumes
-dontwarn javax.ws.rs.Produces
-dontwarn javax.ws.rs.core.Response
-dontwarn javax.ws.rs.core.StreamingOutput
-dontwarn javax.ws.rs.ext.MessageBodyReader
-dontwarn javax.ws.rs.ext.MessageBodyWriter
-dontwarn javax.ws.rs.ext.Provider
-dontwarn org.glassfish.jersey.internal.spi.AutoDiscoverable
-dontwarn org.javamoney.moneta.Money
-dontwarn org.joda.time.DateTime
-dontwarn org.joda.time.DateTimeZone
-dontwarn org.joda.time.Duration
-dontwarn org.joda.time.Instant
-dontwarn org.joda.time.LocalDate
-dontwarn org.joda.time.LocalDateTime
-dontwarn org.joda.time.LocalTime
-dontwarn org.joda.time.Period
-dontwarn org.joda.time.ReadablePartial
-dontwarn org.joda.time.format.DateTimeFormat
-dontwarn org.joda.time.format.DateTimeFormatter
-dontwarn springfox.documentation.spring.web.json.Json

View File

@ -3,8 +3,8 @@
xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<!-- 基本所有广告平台SDK的必要权限-->
<uses-permission android:name="com.google.android.gms.permission.AD_ID" />
<application
android:name=".app.Application__"
android:allowBackup="true"
@ -16,6 +16,10 @@
android:supportsRtl="true"
android:theme="@style/prank01"
tools:targetApi="31">
<!-- Android 9以上适配 -->
<uses-library android:name="org.apache.http.legacy" android:required="false"/>
<activity
android:name=".splash_prank.SplashActivity"
android:theme="@style/splashprank"

View File

@ -1,69 +0,0 @@
package com.prankapp.fartsounds.airhorn.ad_util;
import android.app.Activity;
import android.content.Context;
import android.util.Log;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.ProcessLifecycleOwner;
import com.applovin.mediation.MaxAd;
import com.applovin.mediation.MaxAdListener;
import com.applovin.mediation.MaxError;
import com.applovin.mediation.ads.MaxAppOpenAd;
import com.applovin.mediation.ads.MaxInterstitialAd;
public class MaxPrankAdManager implements LifecycleObserver, MaxAdListener {
private MaxInterstitialAd appOpenAd;
private Context context;
AdPrankListener adListener;
public MaxPrankAdManager(Context context, String id, AdPrankListener adLoadedListener) {
ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
this.adListener = adLoadedListener;
this.context = context;
appOpenAd = new MaxInterstitialAd(id, context);
appOpenAd.setListener(this);
appOpenAd.loadAd();
}
@OnLifecycleEvent(Lifecycle.Event.ON_START)
public void onStart() {
//showAdIfReady();
}
@Override
public void onAdLoaded(final MaxAd ad) {
Log.e("prank","onAdLoaded");
adListener.adPrankShow();
appOpenAd.showAd();
}
@Override
public void onAdLoadFailed(final String adUnitId, final MaxError error) {
Log.e("prank","onAdLoadFailed");
}
@Override
public void onAdDisplayed(final MaxAd ad) {
Log.e("prank","onAdDisplayed");
}
@Override
public void onAdClicked(final MaxAd ad) {
Log.e("prank","onAdClicked");
}
@Override
public void onAdHidden(final MaxAd ad) {
adListener.adPrankClose();
// appOpenAd.loadAd();
Log.e("prank","onAdHidden");
}
@Override
public void onAdDisplayFailed(final MaxAd ad, final MaxError error) {
appOpenAd.loadAd();
}
}

View File

@ -1,13 +1,56 @@
package com.prankapp.fartsounds.airhorn.app;
import android.app.Application;
import android.util.Log;
import com.anythink.core.api.ATSDK;
import com.anythink.core.api.NetTrafficeCallback;
import com.prankapp.fartsounds.airhorn.openmediation.AdManager;
import com.prankapp.fartsounds.airhorn.utilsfff.Utils;
public class Application__ extends Application {
private static String AppKey = "a706b17d04ce19de26cb3adb5b6c330ca";
private static String APPId = "h6697383c8175b";
private static String debug_KEy="a8dd4a3f1c38a5a3cadb4f39385fb682af63df07";
public static String TAG = "----------tt";
@Override
public void onCreate() {
super.onCreate();
Utils.init(this);
setTopOnGDPR();
initTopOnSDk();
}
private void initTopOnSDk(){
ATSDK.init( this, APPId, AppKey);
// ATDebuggerUITest.showDebuggerUI(this,debug_KEy);
AdManager.loadAllAd();
}
private void setTopOnGDPR(){
// ATSDK.PERSONALIZED //设备数据允许上报
// ATSDK.NONPERSONALIZED //设备数据不允许上报
// ATSDK.UNKNOWN //未知等级只能通过getGDPRDataLevel方法获取不能用setGDPRUploadDataLevel方法设置
// ATSDK.setGDPRUploadDataLevel(this, ATSDK.PERSONALIZED);
ATSDK.checkIsEuTraffic(this, new NetTrafficeCallback() {
@Override
public void onResultCallback(boolean isEU) {
Log.e(TAG, "onResultCallback:" + isEU);
if (isEU && ATSDK.getGDPRDataLevel(Application__.this) == ATSDK.UNKNOWN) {
ATSDK.showGdprAuth(Application__.this);
}
}
@Override
public void onErrorCallback(String errorMsg) {
Log.e(TAG, "onErrorCallback:" + errorMsg);
}
});
}
}

View File

@ -0,0 +1,9 @@
package com.prankapp.fartsounds.airhorn.openmediation
interface AdListener {
fun showSuccess()
fun showFail()
fun showClose()
}

View File

@ -0,0 +1,175 @@
package com.prankapp.fartsounds.airhorn.openmediation
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.prankapp.fartsounds.airhorn.app.Application__
import com.prankapp.fartsounds.airhorn.utilsfff.Utils
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
const val place1Id = "n669738b37f8f2"
const val place2Id = "n1fon1upfbrc2p"
const val place3Id = "n669738b37f8f2"
val list = mutableListOf<ATInterstitial>()
@JvmStatic
fun loadAllAd() {
if (list.size <= 0) {
val mInterstitialAd1 = ATInterstitial(Utils.context, place1Id)
val mInterstitialAd2 = ATInterstitial(Utils.context, place2Id)
val mInterstitialAd3 = ATInterstitial(Utils.context, 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(Application__.TAG, "LoadLoaded ${ad.mPlacementId}")
}
override fun onInterstitialAdLoadFail(p0: AdError?) {
Log.d(Application__.TAG, "LoadFail:${p0?.code} ${p0?.desc}")
}
override fun onInterstitialAdClicked(p0: ATAdInfo?) {
}
override fun onInterstitialAdShow(p0: ATAdInfo?) {
Log.d(Application__.TAG, "AdShow ${p0?.showId} ")
listener.showSuccess()
ad.load()
}
override fun onInterstitialAdClose(p0: ATAdInfo?) {
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(Application__.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 {
action.invoke(type_no_cache)
}
}
}

View File

@ -2,90 +2,52 @@ package com.prankapp.fartsounds.airhorn.splash_prank;
import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.os.Handler;
import android.util.Log;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AppCompatActivity;
import com.applovin.sdk.AppLovinMediationProvider;
import com.applovin.sdk.AppLovinSdk;
import com.applovin.sdk.AppLovinSdkConfiguration;
import com.applovin.sdk.AppLovinSdkInitializationConfiguration;
import com.prankapp.fartsounds.airhorn.MainActivity;
import com.prankapp.fartsounds.airhorn.ad_util.AdPrankListener;
import com.prankapp.fartsounds.airhorn.ad_util.MaxPrankAdManager;
import com.prankapp.fartsounds.airhorn.utilsfff.Constant;
import com.prankapp.fartsounds.airhorn.R;
import com.prankapp.fartsounds.airhorn.openmediation.AdManager;
import kotlin.Unit;
import kotlin.jvm.functions.Function0;
public class SplashActivity extends AppCompatActivity {
Handler handlerdfdsf = new Handler();
private Runnable runnablegfdg;
private boolean isShowedPrankAd = false;
private Long totalTim = 11000L;
private CountDownTimer countDownTimer;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
runnablegfdg = new Runnable() {
int count = 15;
setContentView(R.layout.splash_activity);
countDownTimer = AdManager.showWelcomeAd(SplashActivity.this,totalTim, new Function0<Unit>() {
@Override
public void run() {
if (count > 0) {
if (isShowedPrankAd) {
handlerdfdsf.removeCallbacks(runnablegfdg);
return;
}
count--;
handlerdfdsf.postDelayed(this, 1000);
} else {
finish();
startActivity(new Intent(SplashActivity.this, MainActivity.class));
}
public Unit invoke() {
go();
return null;
}
};
handlerdfdsf.postDelayed(runnablegfdg, 0);
AppLovinSdkInitializationConfiguration initConfig = AppLovinSdkInitializationConfiguration.builder( "yuB4fQEc6yE5384qm7dKkZU6eOJDHwLmJfxUZ8s7A7nDa5nUlrG85VwVgJCl3X_EQWhiRZTyyVhiJWlmorVRxi", this )
.setMediationProvider( AppLovinMediationProvider.MAX )
.build();
// Initialize the SDK with the configuration
AppLovinSdk.getInstance( this ).initialize( initConfig, new AppLovinSdk.SdkInitializationListener()
{
@Override
public void onSdkInitialized(final AppLovinSdkConfiguration sdkConfig)
{
Log.e("hhh", "sdk初始化成功");
MaxPrankAdManager maxAdManager = new MaxPrankAdManager(SplashActivity.this, Constant.adIdpPrankSplash, new AdPrankListener() {
@Override
public void adPrankShow() {
isShowedPrankAd = true;
}
@Override
public void adPrankClose() {
finish();
startActivity(new Intent(SplashActivity.this, MainActivity.class));
}
});
}
} );
});
countDownTimer.start();
}
private void go() {
finish();
startActivity(new Intent(SplashActivity.this, MainActivity.class));
}
@Override
protected void onDestroy() {
super.onDestroy();
handlerdfdsf.removeCallbacks(runnablegfdg);
countDownTimer.cancel();
}

View File

@ -17,8 +17,8 @@ import com.bumptech.glide.Glide;
import com.google.gson.Gson;
import com.prankapp.fartsounds.airhorn.R;
import com.prankapp.fartsounds.airhorn.ad_util.AdPrankListener;
import com.prankapp.fartsounds.airhorn.ad_util.MaxPrankAdManager;
import com.prankapp.fartsounds.airhorn.model.PrankListModel;
import com.prankapp.fartsounds.airhorn.openmediation.AdManager;
import com.prankapp.fartsounds.airhorn.utilsfff.Constant;
import com.prankapp.fartsounds.airhorn.utilsfff.ImmUtils;
import com.prankapp.fartsounds.airhorn.utilsfff.SPUtils;
@ -30,6 +30,9 @@ import java.util.ArrayList;
import java.util.List;
import java.util.Objects;
import kotlin.Unit;
import kotlin.jvm.functions.Function1;
public class PrankDetailsActivity extends AppCompatActivity {
ImageView iv_back;
@ -49,6 +52,7 @@ public class PrankDetailsActivity extends AppCompatActivity {
ObjectAnimator animator;
boolean isPlayAd = false;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
@ -59,7 +63,7 @@ public class PrankDetailsActivity extends AppCompatActivity {
.setSuccessText("Success")
.setInterceptBack(true)
.show();
ImmUtils.setStatusBar(this,false,false);
ImmUtils.setStatusBar(this, false, false);
iv_back = findViewById(R.id.iv_back);
tv_shake_tips = findViewById(R.id.tv_shake_tips);
@ -70,17 +74,16 @@ public class PrankDetailsActivity extends AppCompatActivity {
iv_back.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
AdManager.showAD(PrankDetailsActivity.this, new Function1<Integer, Unit>() {
@Override
public Unit invoke(Integer integer) {
if (integer == AdManager.type_show_close || integer == AdManager.type_no_cache || integer == AdManager.type_show_fail) {
finish();
}
return null;
}
});
new MaxPrankAdManager(PrankDetailsActivity.this, Constant.adIdPrankSee, new AdPrankListener() {
@Override
public void adPrankShow() {
}
@Override
public void adPrankClose() {
}
});
@ -93,7 +96,7 @@ public class PrankDetailsActivity extends AppCompatActivity {
for (int i = 0; i < Constant.prankListModel.size(); i++) {
if (Constant.prankListModel.get(i).getCategoryId().equals(id)) {
jj = i ;
jj = i;
listBeans.addAll(Constant.prankListModel.get(i).getList());
}
}
@ -103,16 +106,16 @@ public class PrankDetailsActivity extends AppCompatActivity {
iv_shoucang.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(isShoucah(id)){
if (isShoucah(id)) {
pankList.remove(getIndex(id));
Gson gson = new Gson();
String json = gson.toJson(pankList);
SPUtils.getInstance().put(Constant.shouCang,json);
}else{
SPUtils.getInstance().put(Constant.shouCang, json);
} else {
pankList.add(Constant.prankListModel.get(jj));
Gson gson = new Gson();
String json = gson.toJson(pankList);
SPUtils.getInstance().put(Constant.shouCang,json);
SPUtils.getInstance().put(Constant.shouCang, json);
}
isShoucah(id);
@ -120,7 +123,7 @@ public class PrankDetailsActivity extends AppCompatActivity {
}
});
if (mShakeUtils==null){
if (mShakeUtils == null) {
mShakeUtils = new ShakeUtils(this);
@ -145,15 +148,15 @@ public class PrankDetailsActivity extends AppCompatActivity {
}
});
if(id.equals("625f83491fea07887e61906a") || id.equals("636b8e5415831ec42fc7d80a")){//左右摇晃
if (id.equals("625f83491fea07887e61906a") || id.equals("636b8e5415831ec42fc7d80a")) {//左右摇晃
// 设置动画的初始位置0表示当前位置
animator = ObjectAnimator.ofFloat(ivContent, "translationX", -20f,20f);//上下摇晃
}else if(id.equals("625f83491fea07887e61906b") || id.equals("62be51cc4d4edd56b588d54e") || id.equals("62be51f84d4edd56b588d54f")|| id.equals("625f83491fea07887e619065")|| id.equals("64b617f06d7b94ebbe2a20fa")) {
animator = ObjectAnimator.ofFloat(ivContent, "translationX", -20f, 20f);//上下摇晃
} else if (id.equals("625f83491fea07887e61906b") || id.equals("62be51cc4d4edd56b588d54e") || id.equals("62be51f84d4edd56b588d54f") || id.equals("625f83491fea07887e619065") || id.equals("64b617f06d7b94ebbe2a20fa")) {
tv_shake_tips.setVisibility(View.VISIBLE);
iv_bofang.setVisibility(View.INVISIBLE);
animator = ObjectAnimator.ofFloat(ivContent, "translationY", 0f, 20f, -20f, 20f, -20f, 20f, 0f);
}else {
animator = ObjectAnimator.ofFloat(ivContent, "translationY", 0f,0f);
} else {
animator = ObjectAnimator.ofFloat(ivContent, "translationY", 0f, 0f);
}
// 动画时长
@ -177,8 +180,8 @@ public class PrankDetailsActivity extends AppCompatActivity {
mShakeUtils.setOnShakeListener(new ShakeUtils.OnShakeListener() {
@Override
public void onShake() {
if(id.equals("625f83491fea07887e61906b") || id.equals("62be51cc4d4edd56b588d54e") || id.equals("62be51f84d4edd56b588d54f")|| id.equals("625f83491fea07887e619065")|| id.equals("64b617f06d7b94ebbe2a20fa")) {
Log.e("666","摇晃了");
if (id.equals("625f83491fea07887e61906b") || id.equals("62be51cc4d4edd56b588d54e") || id.equals("62be51f84d4edd56b588d54f") || id.equals("625f83491fea07887e619065") || id.equals("64b617f06d7b94ebbe2a20fa")) {
Log.e("666", "摇晃了");
playYaoHuangSingle();
}
}
@ -188,50 +191,45 @@ public class PrankDetailsActivity extends AppCompatActivity {
@Override
public void onClick(View v) {
if(!isPlayAd){
new MaxPrankAdManager(PrankDetailsActivity.this, Constant.adIdPrankUse, new AdPrankListener() {
if (!isPlayAd) {
isPlayAd = true;
if (!isPrepare) {
return;
}
AdManager.showAD(PrankDetailsActivity.this, new Function1<Integer, Unit>() {
@Override
public void adPrankShow() {
}
@Override
public void adPrankClose() {
isPlayAd = true;
if(!isPrepare){
return;
}
if (isBoFang){
isBoFang =false;
Constant.mediaPlayer.pause();
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_bofang1));
animator.cancel();
}else {
Constant.mediaPlayer.start();
isBoFang =true;
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_zanting1));
/* if(id.equals("625f83491fea07887e61906b")){
public Unit invoke(Integer integer) {
if (integer == AdManager.type_show_close || integer == AdManager.type_no_cache || integer == AdManager.type_show_fail) {
if (isBoFang) {
isBoFang = false;
Constant.mediaPlayer.pause();
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_bofang1));
animator.cancel();
} else {
Constant.mediaPlayer.start();
isBoFang = true;
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_zanting1));
animator.start();
}*/
animator.start();
}
}
return null;
}
});
}else {
} else {
if(!isPrepare){
if (!isPrepare) {
return;
}
if (isBoFang){
isBoFang =false;
if (isBoFang) {
isBoFang = false;
Constant.mediaPlayer.pause();
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_bofang1));
animator.cancel();
}else {
} else {
Constant.mediaPlayer.start();
isBoFang =true;
isBoFang = true;
iv_bofang.setImageDrawable(getDrawable(R.mipmap.ic_zanting1));
/* if(id.equals("625f83491fea07887e61906b")){
animator.start();
@ -245,79 +243,82 @@ public class PrankDetailsActivity extends AppCompatActivity {
});
}
public void playYaoHuangSingle(){
public void playYaoHuangSingle() {
if(!isPlayAd){
new MaxPrankAdManager(PrankDetailsActivity.this, Constant.adIdPrankUse, new AdPrankListener() {
if (!isPlayAd) {
isPlayAd = true;
if (!isPrepare) {
return;
}
AdManager.showAD(PrankDetailsActivity.this, new Function1<Integer, Unit>() {
@Override
public void adPrankShow() {
}
public Unit invoke(Integer integer) {
if (integer == AdManager.type_show_close || integer == AdManager.type_no_cache || integer == AdManager.type_show_fail) {
if (isYaoHuangBoFang) {
isYaoHuangBoFang = false;
Constant.mediaPlayer.pause();
animator.cancel();
} else {
Constant.mediaPlayer.start();
isYaoHuangBoFang = true;
animator.start();
}
}
@Override
public void adPrankClose() {
isPlayAd = true;
if(!isPrepare){
return;
}
if (isYaoHuangBoFang){
isYaoHuangBoFang =false;
Constant.mediaPlayer.pause();
animator.cancel();
}else {
Constant.mediaPlayer.start();
isYaoHuangBoFang =true;
animator.start();
}
return null;
}
});
}else {
if(!isPrepare){
} else {
if (!isPrepare) {
return;
}
if (isYaoHuangBoFang){
isYaoHuangBoFang =false;
if (isYaoHuangBoFang) {
isYaoHuangBoFang = false;
Constant.mediaPlayer.pause();
animator.cancel();
}else {
} else {
Constant.mediaPlayer.start();
isYaoHuangBoFang =true;
isYaoHuangBoFang = true;
animator.start();
}
}
}
public void playLoop(){
public void playLoop() {
}
@Override
protected void onDestroy() {
super.onDestroy();
if (isBoFang || isYaoHuangBoFang){
if (isBoFang || isYaoHuangBoFang) {
Constant.mediaPlayer.stop();
}
}
protected void onResume() {
super.onResume();
if (mShakeUtils!=null){
if (mShakeUtils != null) {
mShakeUtils.onResume();
}
}
protected void onPause() {
super.onPause();
if (mShakeUtils!=null){
mShakeUtils.onPause( );
if (mShakeUtils != null) {
mShakeUtils.onPause();
}
}
public boolean isShoucah(String id){
public boolean isShoucah(String id) {
iv_shoucang.setImageDrawable(getResources().getDrawable(R.mipmap.xihuan2));
String shouCang = SPUtils.getInstance().getString(Constant.shouCang);
pankList = new ArrayList<>();
if(!shouCang.isEmpty()){
if (!shouCang.isEmpty()) {
JSONArray jsonArray = JSONArray.parseArray(shouCang);
for (int i = 0; i < jsonArray.size(); i++) {
PrankListModel prankListModel = JSON.parseObject(jsonArray.get(i).toString(), PrankListModel.class);
@ -325,28 +326,38 @@ public class PrankDetailsActivity extends AppCompatActivity {
}
}
boolean sss= false;
boolean sss = false;
for (int i = 0; i < pankList.size(); i++) {
if(Objects.equals(pankList.get(i).getCategoryId(), id)){
if (Objects.equals(pankList.get(i).getCategoryId(), id)) {
sss = true;
iv_shoucang.setImageDrawable(getResources().getDrawable(R.mipmap.xihuan1));
}
}
return sss;
return sss;
}
public int getIndex(String id){
int reti = 0;
public int getIndex(String id) {
int reti = 0;
for (int i = 0; i < pankList.size(); i++) {
if(Objects.equals(pankList.get(i).getCategoryId(), id)){
reti = i;
if (Objects.equals(pankList.get(i).getCategoryId(), id)) {
reti = i;
}
}
return reti;
return reti;
}
@Override
public void onBackPressed() {
super.onBackPressed();
AdManager.showAD(PrankDetailsActivity.this, new Function1<Integer, Unit>() {
@Override
public Unit invoke(Integer integer) {
return null;
}
});
}
}

View File

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ProgressBar
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_marginBottom="38dp"
android:indeterminateTint="@color/black"
android:layout_marginTop="60dp"
android:layout_centerHorizontal="true" />
</RelativeLayout>

BIN
app/testPrankApp.jks Normal file

Binary file not shown.

View File

@ -2,13 +2,14 @@ plugins {
id("com.android.application") version "8.1.0" apply false
id("org.jetbrains.kotlin.android") version "1.8.0" apply false
id("com.google.gms.google-services") version "4.4.1" apply false
id ("com.google.firebase.crashlytics") version "2.9.2" apply false
}
buildscript {
repositories {
maven { url = uri("https://artifacts.applovin.com/android") }
}
dependencies {
classpath ("com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.2.6")
}
}

View File

@ -1,5 +1,5 @@
[versions]
agp = "8.1.0"
agp = "8.1.3"
junit = "4.13.2"
androidx-test-ext-junit = "1.1.5"
espresso-core = "3.5.1"

View File

@ -3,9 +3,7 @@ pluginManagement {
google()
mavenCentral()
gradlePluginPortal()
maven { url = uri("https://android-sdk.is.com") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
}
}
dependencyResolutionManagement {
@ -14,12 +12,19 @@ dependencyResolutionManagement {
google()
mavenCentral()
maven { url = uri("https://jitpack.io") }
maven { url = uri("https://android-sdk.is.com") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
//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")
}
}
rootProject.name = "prink01"
rootProject.name = "Prank App"
include(":app")