From f2d030e1699ddea842ec948a66791469d5f9f0cc Mon Sep 17 00:00:00 2001 From: zhouzhijia Date: Wed, 17 Jul 2024 18:04:05 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8E=A5Max=201.0.1(2)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + app/build.gradle.kts | 73 +++++++--------- app/src/google-services.json | 29 +++++++ app/src/main/AndroidManifest.xml | 1 + .../com/draw/painting/test/Adcallback.java | 8 ++ .../com/draw/painting/test/PaintingApp.java | 44 ++++++---- .../com/draw/painting/test/manager/Utils.java | 86 ++++++++++++++++++- .../painting/test/ui/ALaucherActivity.java | 80 ++++++++++++++--- .../draw/painting/test/ui/CameraActivity.java | 57 +++++++++++- .../draw/painting/test/ui/HomeFragment.java | 1 + .../painting/test/ui/PreViewActivity.java | 40 ++++++++- build.gradle.kts | 5 ++ settings.gradle.kts | 11 +-- 13 files changed, 356 insertions(+), 81 deletions(-) create mode 100644 app/src/google-services.json create mode 100644 app/src/main/java/com/draw/painting/test/Adcallback.java diff --git a/.gitignore b/.gitignore index 080f52d..165bf57 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,5 @@ .cxx local.properties app/src/test/java/com/draw/painting/test/ExampleUnitTest.java +.idea/ +.safedk/ diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 841e530..cade6a8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,12 +1,19 @@ - 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("com.google.firebase.crashlytics") + id("org.jetbrains.kotlin.android") + id("com.google.gms.google-services") + id("com.google.firebase.crashlytics") + id("applovin-quality-service") } + +applovin { + apiKey = + "0pn_nPmNSunNT9Oq6nyqrUVTGfbFsZUoU47_B5ydJsLCvMPzZ8VdNFvemW1bfJfLlQ4WEgrD_fu3M4ep7hS9Ng" +} + val timestamp = SimpleDateFormat("MM_dd_HH_mm").format(Date()) android { namespace = "com.draw.painting.test" @@ -17,9 +24,12 @@ android { applicationId = "com.draw.painting.helper" minSdk = 23 targetSdk = 34 - versionCode = 1 - versionName = "1.0.0" - setProperty("archivesBaseName", "Painting Helper_V" + versionName + "(${versionCode})_$timestamp") + versionCode = 2 + versionName = "1.0.1" + setProperty( + "archivesBaseName", + "Painting Helper_V" + versionName + "(${versionCode})_$timestamp" + ) testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" } @@ -39,7 +49,7 @@ android { kotlinOptions { jvmTarget = "1.8" } - buildFeatures{ + buildFeatures { viewBinding = true } } @@ -55,46 +65,27 @@ dependencies { val camerax_version = "1.1.0-beta01" //noinspection GradleDependency - implementation ("androidx.camera:camera-core:${camerax_version}") + implementation("androidx.camera:camera-core:${camerax_version}") //noinspection GradleDependency - implementation ("androidx.camera:camera-camera2:${camerax_version}") + implementation("androidx.camera:camera-camera2:${camerax_version}") //noinspection GradleDependency - implementation ("androidx.camera:camera-lifecycle:${camerax_version}") + implementation("androidx.camera:camera-lifecycle:${camerax_version}") //noinspection GradleDependency - implementation ("androidx.camera:camera-video:${camerax_version}") + implementation("androidx.camera:camera-video:${camerax_version}") //noinspection GradleDependency - implementation ("androidx.camera:camera-view:${camerax_version}") + implementation("androidx.camera:camera-view:${camerax_version}") //noinspection GradleDependency - implementation ("androidx.camera:camera-extensions:${camerax_version}") + implementation("androidx.camera:camera-extensions:${camerax_version}") -// implementation(platform("com.google.firebase:firebase-bom:33.1.1")) -// implementation("com.google.firebase:firebase-crashlytics") -// implementation("com.google.firebase:firebase-analytics") - - - -// implementation ("com.ironsource.sdk:mediationsdk:8.1.0") -// implementation ("com.ironsource:adqualitysdk:7.20.2") -// -// // Add Vungle Network(Liftoff Moneti) -// implementation ("com.ironsource.adapters:vungleadapter:4.3.24") -// implementation ("com.vungle:vungle-ads:7.3.2") -// -// //Mintegral -// implementation ("com.mbridge.msdk.oversea:mbbid:16.7.71") -// implementation ("com.mbridge.msdk.oversea:reward:16.7.71") -// implementation ("com.mbridge.msdk.oversea:mbbanner:16.7.71") -// implementation ("com.mbridge.msdk.oversea:newinterstitial:16.7.71") -// -// // Add Pangle Network -// implementation ("com.ironsource.adapters:pangleadapter:4.3.26") -// implementation ("com.pangle.global:ads-sdk:5.8.0.8") -// -// // Add UnityAds Network -// implementation ("com.ironsource.adapters:unityadsadapter:4.3.40") -// implementation ("com.unity3d.ads:unity-ads:4.12.0") - + implementation("com.applovin:applovin-sdk:+") + implementation("com.applovin.mediation:vungle-adapter:+") + implementation("com.applovin.mediation:mintegral-adapter:+") + implementation("com.applovin.mediation:bytedance-adapter:+") + implementation("com.applovin.mediation:unityads-adapter:+") + implementation(platform("com.google.firebase:firebase-bom:33.1.1")) + implementation("com.google.firebase:firebase-crashlytics") + implementation("com.google.firebase:firebase-analytics") } \ No newline at end of file diff --git a/app/src/google-services.json b/app/src/google-services.json new file mode 100644 index 0000000..5c51931 --- /dev/null +++ b/app/src/google-services.json @@ -0,0 +1,29 @@ +{ + "project_info": { + "project_number": "21924510593", + "project_id": "painting-helper", + "storage_bucket": "painting-helper.appspot.com" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "1:21924510593:android:6d87dde89c34f4c8bc8680", + "android_client_info": { + "package_name": "com.draw.painting.helper" + } + }, + "oauth_client": [], + "api_key": [ + { + "current_key": "AIzaSyAjY1w9grBlztoWK_xncU7ImRySsoyKtms" + } + ], + "services": { + "appinvite_service": { + "other_platform_oauth_client": [] + } + } + } + ], + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 376bb1a..10bc323 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -17,6 +17,7 @@ adArrayList; + private static final String one_AD = "fd0f2d1eca71b3a1"; + private static final String two_Ad = "f129bbb52cd84647"; + private static final String three_ad = "b42153354e619004"; + + + public static void setCallBcak(MaxInterstitialAd ad, Adcallback adcallback) { + ad.setListener(new MaxAdListener() { + @Override + public void onAdLoaded(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdDisplayed(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdHidden(@NonNull MaxAd maxAd) { + adcallback.onAdHidden(); + } + + @Override + public void onAdClicked(@NonNull MaxAd maxAd) { + + } + + @Override + public void onAdLoadFailed(@NonNull String s, @NonNull MaxError maxError) { + + } + + @Override + public void onAdDisplayFailed(@NonNull MaxAd maxAd, @NonNull MaxError maxError) { + adcallback.onShowFail(maxAd); + } + }); + } + + public static MaxInterstitialAd onCache(List list) { + Collections.shuffle(list); + for (MaxInterstitialAd ad : list) { + if (ad.isReady()) { + return ad; + } + } + return null; + } + + public static List getAllAd() { + if (adArrayList == null) { + adArrayList = new ArrayList<>(); + adArrayList.add(createAd(one_AD, PaintingApp.app)); + adArrayList.add(createAd(two_Ad, PaintingApp.app)); + adArrayList.add(createAd(three_ad, PaintingApp.app)); + } + for (MaxInterstitialAd ad : adArrayList) { + if (!ad.isReady()) { + ad.loadAd(); + } + } + return adArrayList; + } + + private static MaxInterstitialAd createAd(String adUnitId, Context context) { + MaxInterstitialAd ad = new MaxInterstitialAd(adUnitId, context); + return ad; + } + + public static int getRange(Camera camera) { Range exposureCompensationRange = camera.getCameraInfo().getExposureState().getExposureCompensationRange(); Integer upper = exposureCompensationRange.getUpper(); @@ -53,7 +135,8 @@ public class Utils { point.y = height; return point; } - public static boolean checkPermission(Context context,String[] permissions) { + + public static boolean checkPermission(Context context, String[] permissions) { boolean result = true; for (String per : permissions) { if (ActivityCompat.checkSelfPermission(context, per) != PackageManager.PERMISSION_GRANTED) { @@ -63,6 +146,7 @@ public class Utils { return result; } + public static Bitmap loadImageFromAssets(Context context, String fileName) { Bitmap bitmap = null; AssetManager assetManager = context.getAssets(); diff --git a/app/src/main/java/com/draw/painting/test/ui/ALaucherActivity.java b/app/src/main/java/com/draw/painting/test/ui/ALaucherActivity.java index 7142c58..4f970a6 100644 --- a/app/src/main/java/com/draw/painting/test/ui/ALaucherActivity.java +++ b/app/src/main/java/com/draw/painting/test/ui/ALaucherActivity.java @@ -1,23 +1,32 @@ package com.draw.painting.test.ui; import androidx.appcompat.app.AppCompatActivity; +import androidx.localbroadcastmanager.content.LocalBroadcastManager; +import android.content.BroadcastReceiver; +import android.content.Context; import android.content.Intent; +import android.content.IntentFilter; import android.os.Bundle; import android.os.CountDownTimer; +import android.util.Log; -import com.draw.painting.test.R; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; +import com.draw.painting.test.Adcallback; +import com.draw.painting.test.PaintingApp; import com.draw.painting.test.databinding.ActivityAlaucherBinding; import com.draw.painting.test.manager.Utils; -import kotlin.Unit; -import kotlin.jvm.functions.Function0; +import java.util.List; public class ALaucherActivity extends AppCompatActivity { private ActivityAlaucherBinding binding; - private long time = 2000; + private long time = 11000; private CountDownTimer countDownTimer; + private static List adsList; + public static boolean isAlreadyShow = false; @Override protected void onCreate(Bundle savedInstanceState) { @@ -26,28 +35,73 @@ public class ALaucherActivity extends AppCompatActivity { setContentView(binding.getRoot()); Utils.setStatusBarTextColor(this, true); -// countDownTimer = IronSourceAd.showWelComeAd(time, ALaucherActivity.this, IronSourceAd.adPlace1, new Function0() { -// @Override -// public Unit invoke() { -// enterMain(); -// return null; -// } -// }); countDownTimer = new CountDownTimer(time, 200) { @Override public void onTick(long millisUntilFinished) { - + if (!isAlreadyShow) { + showAdOrStartView(false); + } } @Override public void onFinish() { - enterMain(); + if (!isAlreadyShow) { + showAdOrStartView(true); + } + } }; + registerBroadcastReceiver(); + } + + private void showAdOrStartView(boolean go) { + MaxInterstitialAd cachedAd = Utils.onCache(adsList); + if (cachedAd == null) { + isAlreadyShow = false; + if (go) { + enterMain(); + } + } else { + isAlreadyShow = true; + Utils.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + isAlreadyShow = false; + + } + + @Override + public void onAdHidden() { + isAlreadyShow = true; + enterMain(); + } + }); + cachedAd.showAd(); + } + } + + private void registerBroadcastReceiver() { + if (!PaintingApp.initSDK) { + BroadcastReceiver receiver = new BroadcastReceiver() { + @Override + public void onReceive(Context context, Intent intent) { + loadAndStartAd(); + } + }; + + LocalBroadcastManager.getInstance(this).registerReceiver(receiver, new IntentFilter(PaintingApp.AD_BROADCAST)); + } else { + loadAndStartAd(); + } + } + + private void loadAndStartAd() { + adsList = Utils.getAllAd(); countDownTimer.start(); } + private void enterMain() { Intent intent = new Intent(ALaucherActivity.this, HomeActivity.class); startActivity(intent); diff --git a/app/src/main/java/com/draw/painting/test/ui/CameraActivity.java b/app/src/main/java/com/draw/painting/test/ui/CameraActivity.java index ed8b2ec..e80562a 100644 --- a/app/src/main/java/com/draw/painting/test/ui/CameraActivity.java +++ b/app/src/main/java/com/draw/painting/test/ui/CameraActivity.java @@ -32,11 +32,16 @@ import android.widget.ImageView; import android.widget.SeekBar; import android.widget.Toast; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; +import com.draw.painting.test.Adcallback; import com.google.common.util.concurrent.ListenableFuture; import com.draw.painting.test.PaintingApp; import com.draw.painting.test.R; import com.draw.painting.test.manager.Utils; +import java.util.List; + public class CameraActivity extends AppCompatActivity implements View.OnTouchListener, View.OnClickListener { private CameraSelector cameraSelector; private String[] permissions; @@ -66,6 +71,9 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis private String curBitmapPath; private boolean hasPermission = false; + private boolean isMain; + private String ismain; + private static List adsList; private ActivityResultLauncher intentActivityResultLauncher; @Override @@ -73,6 +81,15 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis super.onCreate(savedInstanceState); setContentView(R.layout.activity_camera); Utils.setStatusBarTextColor(this, true); + + adsList = Utils.getAllAd(); + Intent intent = getIntent(); + isMain = intent.getBooleanExtra(PaintingApp.Key_ISMAIN, false); + + + showAd(); + + previewView = findViewById(R.id.preview); imageView = findViewById(R.id.image); imBack = findViewById(R.id.back); @@ -97,6 +114,26 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis initClick(); } + private void showAd() { + MaxInterstitialAd cachedAd = Utils.onCache(adsList); + if (cachedAd == null) { + + } else { + Utils.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + + } + + @Override + public void onAdHidden() { + + } + }); + cachedAd.showAd(this); + } + } + private void onInitIm(float imW, float imH) { Point screen = Utils.getScreen(this); float newX = screen.x / 2f - imW / 2; @@ -164,7 +201,14 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis @Override public void onClick(View v) { if (v.equals(imBack)) { - finish(); + + if (isMain) { + showAd(); + finish(); + } else { + finish(); + } + } else { if (!hasPermission) { showNoPermission(); @@ -294,4 +338,15 @@ public class CameraActivity extends AppCompatActivity implements View.OnTouchLis private void showNoPermission() { Toast.makeText(this, getString(R.string.permission_fail), Toast.LENGTH_SHORT).show(); } + + @Override + public void onBackPressed() { + super.onBackPressed(); + if (isMain) { + showAd(); + finish(); + } else { + finish(); + } + } } \ No newline at end of file diff --git a/app/src/main/java/com/draw/painting/test/ui/HomeFragment.java b/app/src/main/java/com/draw/painting/test/ui/HomeFragment.java index 5a494b2..f6b6b99 100644 --- a/app/src/main/java/com/draw/painting/test/ui/HomeFragment.java +++ b/app/src/main/java/com/draw/painting/test/ui/HomeFragment.java @@ -66,6 +66,7 @@ public class HomeFragment extends Fragment implements onClickListener { }else { intent = new Intent(requireContext(), CameraActivity.class); intent.putExtra(PaintingApp.Key_Camera,dir); + intent.putExtra(PaintingApp.Key_ISMAIN,true); } startActivity(intent); diff --git a/app/src/main/java/com/draw/painting/test/ui/PreViewActivity.java b/app/src/main/java/com/draw/painting/test/ui/PreViewActivity.java index 1158742..63c47d2 100644 --- a/app/src/main/java/com/draw/painting/test/ui/PreViewActivity.java +++ b/app/src/main/java/com/draw/painting/test/ui/PreViewActivity.java @@ -6,6 +6,9 @@ import androidx.recyclerview.widget.GridLayoutManager; import android.os.Bundle; import android.view.View; +import com.applovin.mediation.MaxAd; +import com.applovin.mediation.ads.MaxInterstitialAd; +import com.draw.painting.test.Adcallback; import com.draw.painting.test.PaintingApp; import com.draw.painting.test.adapter.PreViewAdapter; import com.draw.painting.test.databinding.ActivityPreViewBinding; @@ -18,15 +21,19 @@ public class PreViewActivity extends AppCompatActivity { private ActivityPreViewBinding preViewBinding; private String dirStr; + private static List adsList; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); preViewBinding = ActivityPreViewBinding.inflate(getLayoutInflater()); setContentView(preViewBinding.getRoot()); - Utils.setStatusBarTextColor(this,true); + Utils.setStatusBarTextColor(this, true); dirStr = getIntent().getStringExtra(PaintingApp.Key_ViewDir); - preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_")+1)); + preViewBinding.categoryName.setText(dirStr.substring(dirStr.lastIndexOf("_") + 1)); + + adsList = Utils.getAllAd(); + onInitList(); onInitClick(); } @@ -44,9 +51,34 @@ public class PreViewActivity extends AppCompatActivity { preViewBinding.back.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { - - finish(); + showAd(); } }); } + + private void showAd() { + MaxInterstitialAd cachedAd = Utils.onCache(adsList); + if (cachedAd == null) { + finish(); + } else { + Utils.setCallBcak(cachedAd, new Adcallback() { + @Override + public void onShowFail(MaxAd ad) { + finish(); + } + + @Override + public void onAdHidden() { + finish(); + } + }); + cachedAd.showAd(this); + } + } + + @Override + public void onBackPressed() { + super.onBackPressed(); + showAd(); + } } \ No newline at end of file diff --git a/build.gradle.kts b/build.gradle.kts index 0594b97..6257ead 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,4 +4,9 @@ plugins { id("org.jetbrains.kotlin.android") version "1.8.20" apply false id("com.google.gms.google-services") version "4.3.15" apply false id ("com.google.firebase.crashlytics") version "2.9.2" apply false +} +buildscript{ + dependencies{ + classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:+") + } } \ No newline at end of file diff --git a/settings.gradle.kts b/settings.gradle.kts index ac44ef4..1d82dcc 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -3,6 +3,8 @@ pluginManagement { google() mavenCentral() gradlePluginPortal() + + maven { url = uri("https://artifacts.applovin.com/android") } } } dependencyResolutionManagement { @@ -10,11 +12,10 @@ dependencyResolutionManagement { repositories { google() mavenCentral() -// maven ("https://android-sdk.is.com/") -// //Mintegral -// maven ("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") -// //Pangle -// maven ("https://artifact.bytedance.com/repository/pangle") + + maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") } + maven { url = uri("https://artifact.bytedance.com/repository/pangle") } + } }