Commit 00ba1ba0 authored by xujialang's avatar xujialang

加入topon广告源,接入开屏和插屏广告

parent 11141f96
...@@ -7,7 +7,7 @@ ...@@ -7,7 +7,7 @@
<option name="testRunner" value="GRADLE" /> <option name="testRunner" value="GRADLE" />
<option name="distributionType" value="DEFAULT_WRAPPED" /> <option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" /> <option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="gradleJvm" value="17" /> <option name="gradleJvm" value="jbr-17" />
<option name="modules"> <option name="modules">
<set> <set>
<option value="$PROJECT_DIR$" /> <option value="$PROJECT_DIR$" />
......
<project version="4"> <project version="4">
<component name="ExternalStorageConfigurationManager" enabled="true" /> <component name="ExternalStorageConfigurationManager" enabled="true" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK"> <component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="jbr-17" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" /> <output url="file://$PROJECT_DIR$/build/classes" />
</component> </component>
<component name="ProjectType"> <component name="ProjectType">
......
...@@ -103,9 +103,46 @@ dependencies { ...@@ -103,9 +103,46 @@ dependencies {
// Add the dependency for the Analytics library // Add the dependency for the Analytics library
// When using the BoM, you don't specify versions in Firebase library dependencies // When using the BoM, you don't specify versions in Firebase library dependencies
// implementation("com.google.firebase:firebase-analytics") // implementation("com.google.firebase:firebase-analytics")
implementation 'com.google.android.gms:play-services-ads:22.5.0' // implementation 'com.google.android.gms:play-services-ads:22.5.0'
implementation 'com.google.guava:guava:27.0.1-android' implementation 'com.google.guava:guava:27.0.1-android'
//facebook //facebook
implementation 'com.facebook.android:facebook-android-sdk:latest.release' implementation 'com.facebook.android:facebook-android-sdk:latest.release'
//Androidx
api "androidx.browser:browser:1.4.0"
api "androidx.recyclerview:recyclerview:1.1.0"
//Anythink
api "com.anythink.sdk:core:6.2.79"
api "com.anythink.sdk:nativead:6.2.79"
api "com.anythink.sdk:banner:6.2.79"
api "com.anythink.sdk:interstitial:6.2.79"
api "com.anythink.sdk:rewardedvideo:6.2.79"
api "com.anythink.sdk:splash:6.2.79"
//Pangle
api "com.anythink.sdk:adapter-pangle-nonchina:6.2.79"
api "com.pangle.global:ads-sdk:5.5.0.4"
api "com.google.android.gms:play-services-ads-identifier:18.0.1"
//AppLovin
api "com.anythink.sdk:adapter-applovin:6.2.79"
api "com.applovin:applovin-sdk:11.11.3"
//Mintegral
api "com.anythink.sdk:adapter-mintegral-nonchina:6.2.79"
api "com.mbridge.msdk.oversea:reward:16.5.21"
api "com.mbridge.msdk.oversea:newinterstitial:16.5.21"
api "com.mbridge.msdk.oversea:mbnative:16.5.21"
api "com.mbridge.msdk.oversea:mbnativeadvanced:16.5.21"
api "com.mbridge.msdk.oversea:mbsplash:16.5.21"
api "com.mbridge.msdk.oversea:mbbanner:16.5.21"
api "com.mbridge.msdk.oversea:mbbid:16.5.21"
//Vungle
api "com.anythink.sdk:adapter-vungle:6.2.79"
api "com.vungle:vungle-ads:7.0.0"
api "com.google.android.gms:play-services-basement:18.1.0"
api "com.google.android.gms:play-services-ads-identifier:18.0.1"
} }
\ No newline at end of file
package com.ads.cal.picturetranslate; //package com.ads.cal.picturetranslate;
//
import android.app.Activity; //import android.app.Activity;
//
import androidx.annotation.NonNull; //import androidx.annotation.NonNull;
//
import com.google.android.gms.ads.AdError; //import com.google.android.gms.ads.AdError;
import com.google.android.gms.ads.AdRequest; //import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.FullScreenContentCallback; //import com.google.android.gms.ads.FullScreenContentCallback;
import com.google.android.gms.ads.LoadAdError; //import com.google.android.gms.ads.LoadAdError;
import com.google.android.gms.ads.appopen.AppOpenAd; //import com.google.android.gms.ads.appopen.AppOpenAd;
//
import java.util.Date; //import java.util.Date;
//
//
public class AppOpenAdManager { //public class AppOpenAdManager {
// ////
private static final String LOG_TAG = "AppOpenAdManager"; // private static final String LOG_TAG = "AppOpenAdManager";
private static final String AD_UNIT_ID = "ca-app-pub-9356757350640102/9428372261"; // private static final String AD_UNIT_ID = "ca-app-pub-9356757350640102/9428372261";
//
private AppOpenAd appOpenAd = null; // private AppOpenAd appOpenAd = null;
private boolean isLoadingAd = false; // private boolean isLoadingAd = false;
private boolean isShowingAd = false; // private boolean isShowingAd = false;
//
private OnLoadAdCompleteListener onLoadAdCompleteListener; // private OnLoadAdCompleteListener onLoadAdCompleteListener;
private OnShowAdCompleteListener onShowAdCompleteListener; // private OnShowAdCompleteListener onShowAdCompleteListener;
//
public boolean isShowingAd() { // public boolean isShowingAd() {
return isShowingAd; // return isShowingAd;
} // }
//
/** // /**
* Keep track of the time an app open ad is loaded to ensure you don't show an expired ad. // * Keep track of the time an app open ad is loaded to ensure you don't show an expired ad.
*/ // */
private long loadTime = 0; // private long loadTime = 0;
//
/** // /**
* Constructor. // * Constructor.
*/ // */
public AppOpenAdManager() { // public AppOpenAdManager() {
} // }
//
private static final class AppOpenAdManagerHolder { // private static final class AppOpenAdManagerHolder {
static final AppOpenAdManager appOpenAdManager = new AppOpenAdManager(); // static final AppOpenAdManager appOpenAdManager = new AppOpenAdManager();
} // }
//
public static AppOpenAdManager getInstance() { // public static AppOpenAdManager getInstance() {
return AppOpenAdManagerHolder.appOpenAdManager; // return AppOpenAdManagerHolder.appOpenAdManager;
} // }
//
//
/** // /**
* Load an ad. // * Load an ad.
* // *
*/ // */
public void loadAd() { // public void loadAd() {
// Do not load ad if there is an unused ad or one is already loading. // // Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) { // if (isLoadingAd || isAdAvailable()) {
return; // return;
} // }
//
isLoadingAd = true; // isLoadingAd = true;
AdRequest request = new AdRequest.Builder().build(); // AdRequest request = new AdRequest.Builder().build();
AppOpenAd.load( // AppOpenAd.load(
PictureApplication.getApplication(), // PictureApplication.getApplication(),
AD_UNIT_ID, // AD_UNIT_ID,
request, // request,
new AppOpenAd.AppOpenAdLoadCallback() { // new AppOpenAd.AppOpenAdLoadCallback() {
/** // /**
* Called when an app open ad has loaded. // * Called when an app open ad has loaded.
* // *
* @param ad the loaded app open ad. // * @param ad the loaded app open ad.
*/ // */
@Override // @Override
public void onAdLoaded(AppOpenAd ad) { // public void onAdLoaded(AppOpenAd ad) {
appOpenAd = ad; // appOpenAd = ad;
isLoadingAd = false; // isLoadingAd = false;
loadTime = (new Date()).getTime(); // loadTime = (new Date()).getTime();
if (null != onLoadAdCompleteListener) { // if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdComplete(); // onLoadAdCompleteListener.onLoadAdComplete();
onLoadAdCompleteListener = null; // onLoadAdCompleteListener = null;
} // }
//
LogUtils.d(LOG_TAG, "onAdLoaded."); // LogUtils.d(LOG_TAG, "onAdLoaded.");
// FireBaseAnalyticsUtils.init().send(AD_OPEN_LOAD_SUCCESS); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_LOAD_SUCCESS);
} // }
//
/** // /**
* Called when an app open ad has failed to load. // * Called when an app open ad has failed to load.
* // *
* @param loadAdError the error. // * @param loadAdError the error.
*/ // */
@Override // @Override
public void onAdFailedToLoad(LoadAdError loadAdError) { // public void onAdFailedToLoad(LoadAdError loadAdError) {
isLoadingAd = false; // isLoadingAd = false;
if (null != onLoadAdCompleteListener) { // if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdFailed(loadAdError.getMessage()); // onLoadAdCompleteListener.onLoadAdFailed(loadAdError.getMessage());
onLoadAdCompleteListener = null; // onLoadAdCompleteListener = null;
} // }
LogUtils.d(LOG_TAG, "onAdFailedToLoad: " + loadAdError.getMessage()); // LogUtils.d(LOG_TAG, "onAdFailedToLoad: " + loadAdError.getMessage());
// FireBaseAnalyticsUtils.init().send(AD_OPEN_LOAD_FAILED); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_LOAD_FAILED);
} // }
}); // });
// FireBaseAnalyticsUtils.init().send(AD_OPEN_START_LOAD); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_START_LOAD);
} // }
//
/** // /**
* Check if ad was loaded more than n hours ago. // * Check if ad was loaded more than n hours ago.
*/ // */
private boolean wasLoadTimeLessThanNHoursAgo(long numHours) { // private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
long dateDifference = (new Date()).getTime() - loadTime; // long dateDifference = (new Date()).getTime() - loadTime;
long numMilliSecondsPerHour = 3600000; // long numMilliSecondsPerHour = 3600000;
return (dateDifference < (numMilliSecondsPerHour * numHours)); // return (dateDifference < (numMilliSecondsPerHour * numHours));
} // }
//
/** // /**
* Check if ad exists and can be shown. // * Check if ad exists and can be shown.
*/ // */
public boolean isAdAvailable() { // public boolean isAdAvailable() {
// Ad references in the app open beta will time out after four hours, but this time limit // // Ad references in the app open beta will time out after four hours, but this time limit
// may change in future beta versions. For details, see: // // may change in future beta versions. For details, see:
// https://support.google.com/admob/answer/9341964?hl=en // // https://support.google.com/admob/answer/9341964?hl=en
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4); // return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
} // }
//
//
//
/** // /**
* Show the ad if one isn't already showing. // * Show the ad if one isn't already showing.
* // *
* @param activity the activity that shows the app open ad // * @param activity the activity that shows the app open ad
*/ // */
public boolean showAdIfAvailable( // public boolean showAdIfAvailable(
@NonNull Activity activity) { // @NonNull Activity activity) {
// If the app open ad is already showing, do not show the ad again. // // If the app open ad is already showing, do not show the ad again.
if (isShowingAd) { // if (isShowingAd) {
LogUtils.d(LOG_TAG, "The app open ad is already showing."); // LogUtils.d(LOG_TAG, "The app open ad is already showing.");
return false; // return false;
} // }
//
// If the app open ad is not available yet, invoke the callback then load the ad. // // If the app open ad is not available yet, invoke the callback then load the ad.
if (!isAdAvailable()) { // if (!isAdAvailable()) {
LogUtils.d(LOG_TAG, "The app open ad is not ready yet."); // LogUtils.d(LOG_TAG, "The app open ad is not ready yet.");
loadAd(); // loadAd();
return false; // return false;
} // }
//
LogUtils.d(LOG_TAG, "Will show ad."); // LogUtils.d(LOG_TAG, "Will show ad.");
//
appOpenAd.setFullScreenContentCallback( // appOpenAd.setFullScreenContentCallback(
new FullScreenContentCallback() { // new FullScreenContentCallback() {
/** Called when full screen content is dismissed. */ // /** Called when full screen content is dismissed. */
@Override // @Override
public void onAdDismissedFullScreenContent() { // public void onAdDismissedFullScreenContent() {
// Set the reference to null so isAdAvailable() returns false. // // Set the reference to null so isAdAvailable() returns false.
appOpenAd = null; // appOpenAd = null;
isShowingAd = false; // isShowingAd = false;
//
LogUtils.d(LOG_TAG, "onAdDismissedFullScreenContent."); // LogUtils.d(LOG_TAG, "onAdDismissedFullScreenContent.");
if (null != onShowAdCompleteListener) { // if (null != onShowAdCompleteListener) {
onShowAdCompleteListener.onShowAdComplete(); // onShowAdCompleteListener.onShowAdComplete();
onShowAdCompleteListener = null; // onShowAdCompleteListener = null;
} // }
loadAd(); // loadAd();
// FireBaseAnalyticsUtils.init().send(AD_OPEN_CLOSE); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_CLOSE);
} // }
//
/** Called when fullscreen content failed to show. */ // /** Called when fullscreen content failed to show. */
@Override // @Override
public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) { // public void onAdFailedToShowFullScreenContent(@NonNull AdError adError) {
appOpenAd = null; // appOpenAd = null;
isShowingAd = false; // isShowingAd = false;
//
LogUtils.d(LOG_TAG, "onAdFailedToShowFullScreenContent: " + adError.getMessage()); // LogUtils.d(LOG_TAG, "onAdFailedToShowFullScreenContent: " + adError.getMessage());
if (null != onShowAdCompleteListener) { // if (null != onShowAdCompleteListener) {
onShowAdCompleteListener.onShowAdFailed(adError.getMessage()); // onShowAdCompleteListener.onShowAdFailed(adError.getMessage());
onShowAdCompleteListener = null; // onShowAdCompleteListener = null;
} // }
loadAd(); // loadAd();
// FireBaseAnalyticsUtils.init().send(AD_OPEN_SHOW_FAILED); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_SHOW_FAILED);
} // }
//
/** Called when fullscreen content is shown. */ // /** Called when fullscreen content is shown. */
@Override // @Override
public void onAdShowedFullScreenContent() { // public void onAdShowedFullScreenContent() {
LogUtils.d(LOG_TAG, "onAdShowedFullScreenContent."); // LogUtils.d(LOG_TAG, "onAdShowedFullScreenContent.");
} // }
//
@Override // @Override
public void onAdImpression() { // public void onAdImpression() {
super.onAdImpression(); // super.onAdImpression();
LogUtils.d(LOG_TAG, "onAdImpression."); // LogUtils.d(LOG_TAG, "onAdImpression.");
// FireBaseAnalyticsUtils.init().send(AD_OPEN_EXP); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_EXP);
} // }
//
@Override // @Override
public void onAdClicked() { // public void onAdClicked() {
super.onAdClicked(); // super.onAdClicked();
// FireBaseAnalyticsUtils.init().send(AD_OPEN_CLK); //// FireBaseAnalyticsUtils.init().send(AD_OPEN_CLK);
} // }
}); // });
//
isShowingAd = true; // isShowingAd = true;
appOpenAd.show(activity); // appOpenAd.show(activity);
return true; // return true;
} // }
//
public interface OnShowAdCompleteListener { // public interface OnShowAdCompleteListener {
void onShowAdComplete(); // void onShowAdComplete();
//
void onShowAdFailed(String errorMsg); // void onShowAdFailed(String errorMsg);
} // }
//
public interface OnLoadAdCompleteListener { // public interface OnLoadAdCompleteListener {
void onLoadAdComplete(); // void onLoadAdComplete();
//
void onLoadAdFailed(String errorMsg); // void onLoadAdFailed(String errorMsg);
} // }
//
public void setOnLoadAdCompleteListener(OnLoadAdCompleteListener onLoadAdCompleteListener) { // public void setOnLoadAdCompleteListener(OnLoadAdCompleteListener onLoadAdCompleteListener) {
this.onLoadAdCompleteListener = onLoadAdCompleteListener; // this.onLoadAdCompleteListener = onLoadAdCompleteListener;
} // }
//
public void setOnShowAdCompleteListener(OnShowAdCompleteListener onShowAdCompleteListener) { // public void setOnShowAdCompleteListener(OnShowAdCompleteListener onShowAdCompleteListener) {
this.onShowAdCompleteListener = onShowAdCompleteListener; // this.onShowAdCompleteListener = onShowAdCompleteListener;
} // }
} //}
...@@ -12,9 +12,9 @@ import androidx.lifecycle.OnLifecycleEvent; ...@@ -12,9 +12,9 @@ import androidx.lifecycle.OnLifecycleEvent;
import androidx.lifecycle.ProcessLifecycleOwner; import androidx.lifecycle.ProcessLifecycleOwner;
import com.ads.cal.picturetranslate.db.DataBaseManager; import com.ads.cal.picturetranslate.db.DataBaseManager;
import com.google.android.gms.ads.MobileAds; //import com.google.android.gms.ads.MobileAds;
import com.google.android.gms.ads.initialization.InitializationStatus; //import com.google.android.gms.ads.initialization.InitializationStatus;
import com.google.android.gms.ads.initialization.OnInitializationCompleteListener; //import com.google.android.gms.ads.initialization.OnInitializationCompleteListener;
public class PictureApplication extends Application implements Application.ActivityLifecycleCallbacks, LifecycleObserver { public class PictureApplication extends Application implements Application.ActivityLifecycleCallbacks, LifecycleObserver {
...@@ -26,23 +26,27 @@ public class PictureApplication extends Application implements Application.Activ ...@@ -26,23 +26,27 @@ public class PictureApplication extends Application implements Application.Activ
super.onCreate(); super.onCreate();
this.registerActivityLifecycleCallbacks(this); this.registerActivityLifecycleCallbacks(this);
application = this; application = this;
MobileAds.initialize(this, new OnInitializationCompleteListener() { // MobileAds.initialize(this, new OnInitializationCompleteListener() {
@Override // @Override
public void onInitializationComplete(@NonNull InitializationStatus initializationStatus) { // public void onInitializationComplete(@NonNull InitializationStatus initializationStatus) {
LogUtils.d("PictureApplication", "initializationStatus "+initializationStatus.toString()); // LogUtils.d("PictureApplication", "initializationStatus " + initializationStatus.toString());
} // }
}); // });
ProcessLifecycleOwner.get().getLifecycle().addObserver(this); ProcessLifecycleOwner.get().getLifecycle().addObserver(this);
new Thread(() -> { new Thread(() -> {
PictureTranslateUtils.init(); PictureTranslateUtils.init();
}); });
initDB(); initDB();
TopOnManager.get().initSDK(this);
} }
@OnLifecycleEvent(Lifecycle.Event.ON_START) @OnLifecycleEvent(Lifecycle.Event.ON_START)
protected void onMoveToForeground() { protected void onMoveToForeground() {
// Show the ad (if available) when the app moves to foreground. // Show the ad (if available) when the app moves to foreground.
AppOpenAdManager.getInstance().showAdIfAvailable(currentActivity); // TopOnAppOpenAdManager.getInstance().showAdIfAvailable(currentActivity);
} }
...@@ -68,7 +72,7 @@ public class PictureApplication extends Application implements Application.Activ ...@@ -68,7 +72,7 @@ public class PictureApplication extends Application implements Application.Activ
@Override @Override
public void onActivityStarted(@NonNull Activity activity) { public void onActivityStarted(@NonNull Activity activity) {
if (!AppOpenAdManager.getInstance().isShowingAd()) { if (!TopOnAppOpenAdManager.getInstance().isShowingAd()) {
currentActivity = activity; currentActivity = activity;
} }
} }
......
package com.ads.cal.picturetranslate;
import android.app.Activity;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
import com.anythink.core.api.ATAdInfo;
import com.anythink.splashad.api.ATSplashAd;
import com.anythink.splashad.api.ATSplashAdExtraInfo;
import com.anythink.splashad.api.ATSplashAdListener;
import java.util.Date;
public class TopOnAppOpenAdManager {
//
private static final String LOG_TAG = "TopOnAppOpenAdManager";
private static final String AD_UNIT_ID = "b1f138leh1o4gp";
private ATSplashAd appOpenAd = null;
private boolean isLoadingAd = false;
private boolean isShowingAd = false;
private OnLoadAdCompleteListener onLoadAdCompleteListener;
private OnShowAdCompleteListener onShowAdCompleteListener;
public boolean isShowingAd() {
return isShowingAd;
}
/**
* Keep track of the time an app open ad is loaded to ensure you don't show an expired ad.
*/
private long loadTime = 0;
/**
* Constructor.
*/
public TopOnAppOpenAdManager() {
}
private static final class AppOpenAdManagerHolder {
static final TopOnAppOpenAdManager appOpenAdManager = new TopOnAppOpenAdManager();
}
public static TopOnAppOpenAdManager getInstance() {
return AppOpenAdManagerHolder.appOpenAdManager;
}
/**
* Load an ad.
*/
public void loadAd() {
// Do not load ad if there is an unused ad or one is already loading.
if (isLoadingAd || isAdAvailable()) {
return;
}
isLoadingAd = true;
appOpenAd = new ATSplashAd(PictureApplication.getApplication(), AD_UNIT_ID, null);
appOpenAd.setAdListener(new ATSplashAdListener() {
@Override
public void onAdLoaded(boolean b) {
LogUtils.d(LOG_TAG, "onAdLoaded.");
isLoadingAd = false;
loadTime = (new Date()).getTime();
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdComplete();
onLoadAdCompleteListener = null;
}
}
@Override
public void onAdLoadTimeout() {
isLoadingAd = false;
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdFailed("time out");
onLoadAdCompleteListener = null;
}
LogUtils.d(LOG_TAG, "onAdFailedToLoad: time out");
}
@Override
public void onNoAdError(com.anythink.core.api.AdError adError) {
isLoadingAd = false;
if (null != onLoadAdCompleteListener) {
onLoadAdCompleteListener.onLoadAdFailed(adError.getPlatformMSG());
onLoadAdCompleteListener = null;
}
LogUtils.d(LOG_TAG, "onAdFailedToLoad: " + adError.getPlatformMSG());
}
@Override
public void onAdShow(ATAdInfo atAdInfo) {
}
@Override
public void onAdClick(ATAdInfo atAdInfo) {
}
@Override
public void onAdDismiss(ATAdInfo atAdInfo, ATSplashAdExtraInfo atSplashAdExtraInfo) {
appOpenAd = null;
isShowingAd = false;
LogUtils.d(LOG_TAG, "onAdDismissedFullScreenContent.");
if (null != onShowAdCompleteListener) {
onShowAdCompleteListener.onShowAdComplete();
onShowAdCompleteListener = null;
}
loadAd();
}
});
appOpenAd.loadAd();
}
/**
* Check if ad was loaded more than n hours ago.
*/
private boolean wasLoadTimeLessThanNHoursAgo(long numHours) {
long dateDifference = (new Date()).getTime() - loadTime;
long numMilliSecondsPerHour = 3600000;
return (dateDifference < (numMilliSecondsPerHour * numHours));
}
/**
* Check if ad exists and can be shown.
*/
public boolean isAdAvailable() {
return appOpenAd != null && wasLoadTimeLessThanNHoursAgo(4);
}
/**
* Show the ad if one isn't already showing.
*
* @param activity the activity that shows the app open ad
*/
public boolean showAdIfAvailable(@NonNull Activity activity, @NonNull ViewGroup viewGroup) {
if (isShowingAd) {
LogUtils.d(LOG_TAG, "The app open ad is already showing.");
return false;
}
if (!isAdAvailable()) {
LogUtils.d(LOG_TAG, "The app open ad is not ready yet.");
loadAd();
return false;
}
LogUtils.d(LOG_TAG, "Will show ad.");
isShowingAd = true;
appOpenAd.show(activity, viewGroup);
return true;
}
public interface OnShowAdCompleteListener {
void onShowAdComplete();
void onShowAdFailed(String errorMsg);
}
public interface OnLoadAdCompleteListener {
void onLoadAdComplete();
void onLoadAdFailed(String errorMsg);
}
public void setOnLoadAdCompleteListener(OnLoadAdCompleteListener onLoadAdCompleteListener) {
this.onLoadAdCompleteListener = onLoadAdCompleteListener;
}
public void setOnShowAdCompleteListener(OnShowAdCompleteListener onShowAdCompleteListener) {
this.onShowAdCompleteListener = onShowAdCompleteListener;
}
}
package com.ads.cal.picturetranslate;
import android.app.Activity;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.interstitial.api.ATInterstitial;
import com.anythink.interstitial.api.ATInterstitialListener;
public class TopOnItAdManager {
private static final String IT_AD_UNIT_ID = "b6509805ed0208";
private static ATInterstitial itAd = null;
private static OnItAdListener listener = null;
public static void loadItAd() {
if (itAd != null) {
itAd.load();
return;
}
itAd = new ATInterstitial(PictureApplication.getApplication(), IT_AD_UNIT_ID);
itAd.setAdListener(new ATInterstitialListener() {
@Override
public void onInterstitialAdLoaded() {
}
@Override
public void onInterstitialAdLoadFail(AdError adError) {
}
@Override
public void onInterstitialAdClicked(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdShow(ATAdInfo atAdInfo) {
if (listener != null) {
listener.onShow();
}
}
@Override
public void onInterstitialAdClose(ATAdInfo atAdInfo) {
if (listener != null) {
listener.onClose();
}
loadItAd();
}
@Override
public void onInterstitialAdVideoStart(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdVideoEnd(ATAdInfo atAdInfo) {
}
@Override
public void onInterstitialAdVideoError(AdError adError) {
if (listener != null) {
listener.onFail(adError.getPlatformMSG());
}
loadItAd();
}
});
itAd.load();
}
public static void showItAd(Activity activity, OnItAdListener listener) {
LogUtils.d("anythink showItAd");
if (itAd == null) {
loadItAd();
if (listener != null) {
listener.onFail("it ad is null");
}
return;
}
if (!itAd.isAdReady()) {
loadItAd();
if (listener != null) {
listener.onFail("it ad is not ready");
}
return;
}
itAd.show(activity);
}
interface OnItAdListener {
void onShow();
void onClose();
void onFail(String reason);
}
}
package com.ads.cal.picturetranslate;
import android.content.Context;
import com.anythink.core.api.ATSDK;
public class TopOnManager {
private TopOnManager() {
}
private static class Holder {
private static final TopOnManager INSTANCE = new TopOnManager();
}
public static TopOnManager get() {
return Holder.INSTANCE;
}
public static final String TOPON_APP_ID = "a6501757a165c4";
// Field from default config.
public static final String TOPON_APP_KEY = "a53892abacdd1aebf0ea1d927ab0f0d88";
public void initSDK(Context context) {
//SDK日志功能,集成测试阶段建议开启,上线前必须关闭
// ATSDK.setNetworkLogDebug(true);
// //检查广告平台的集成状态,提交审核时需注释此API
// ATSDK.integrationChecking(context);
//
// ATSDK.setDebuggerConfig(
// context,
// "596795a7-b851-4514-bd7e-8561d641a968",
// new ATDebuggerConfig.Builder(Pangle_NETWORK).build());
ATSDK.init(context, TOPON_APP_ID, TOPON_APP_KEY);
//SDK版本
LogUtils.d("TopOn SDK version: " + ATSDK.getSDKVersionName());
//(v5.7.77新增) 打印当前设备的设备信息(IMEI、OAID、GAID、AndroidID等)
// ATSDK.testModeDeviceInfo(context, new DeviceInfoCallback() {
// @Override
// public void deviceInfo(String deviceInfo) {
// Log.i(TAG, "deviceInfo: " + deviceInfo);
// }
// });
}
}
...@@ -35,6 +35,7 @@ import com.ads.cal.picturetranslate.PictureApplication; ...@@ -35,6 +35,7 @@ import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.SharedPreferencesUtil; import com.ads.cal.picturetranslate.SharedPreferencesUtil;
import com.ads.cal.picturetranslate.ThreadUtils; import com.ads.cal.picturetranslate.ThreadUtils;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.adapter.PictureTranslateListAdapter; import com.ads.cal.picturetranslate.adapter.PictureTranslateListAdapter;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
...@@ -75,6 +76,8 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac ...@@ -75,6 +76,8 @@ public class PictureTranslateListMainActivity extends BaseActivity implements Ac
initData(); initData();
requestData(); requestData();
EventBus.getDefault().register(this); EventBus.getDefault().register(this);
TopOnItAdManager.loadItAd();
} }
@Subscribe(threadMode = ThreadMode.MAIN) @Subscribe(threadMode = ThreadMode.MAIN)
......
...@@ -41,6 +41,7 @@ import com.ads.cal.picturetranslate.PictureApplication; ...@@ -41,6 +41,7 @@ import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.PictureTranslateUtils; import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.ThreadUtils; import com.ads.cal.picturetranslate.ThreadUtils;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.Util; import com.ads.cal.picturetranslate.Util;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
...@@ -71,6 +72,8 @@ public class PictureTranslateResultActivity extends BaseActivity { ...@@ -71,6 +72,8 @@ public class PictureTranslateResultActivity extends BaseActivity {
setContentView(R.layout.activity_picture_translate_result); setContentView(R.layout.activity_picture_translate_result);
initView(); initView();
initData(); initData();
TopOnItAdManager.showItAd(this, null);
} }
private void initView() { private void initView() {
......
...@@ -24,6 +24,7 @@ import com.ads.cal.picturetranslate.MessageEvent; ...@@ -24,6 +24,7 @@ import com.ads.cal.picturetranslate.MessageEvent;
import com.ads.cal.picturetranslate.PictureApplication; import com.ads.cal.picturetranslate.PictureApplication;
import com.ads.cal.picturetranslate.PictureTranslateUtils; import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.TopOnItAdManager;
import com.ads.cal.picturetranslate.Util; import com.ads.cal.picturetranslate.Util;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import com.ads.cal.picturetranslate.bean.PictureTranslateBean; import com.ads.cal.picturetranslate.bean.PictureTranslateBean;
......
...@@ -22,16 +22,13 @@ import androidx.camera.core.ExperimentalGetImage; ...@@ -22,16 +22,13 @@ import androidx.camera.core.ExperimentalGetImage;
import androidx.viewpager.widget.PagerAdapter; import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager; import androidx.viewpager.widget.ViewPager;
import com.ads.cal.picturetranslate.AppOpenAdManager;
import com.ads.cal.picturetranslate.PictureTranslateUtils;
import com.ads.cal.picturetranslate.R; import com.ads.cal.picturetranslate.R;
import com.ads.cal.picturetranslate.SharedPreferencesUtil; import com.ads.cal.picturetranslate.SharedPreferencesUtil;
import com.ads.cal.picturetranslate.TopOnAppOpenAdManager;
import com.ads.cal.picturetranslate.base.BaseActivity; import com.ads.cal.picturetranslate.base.BaseActivity;
import java.io.IOException; import java.io.IOException;
import java.lang.ref.WeakReference; import java.lang.ref.WeakReference;
import java.util.Timer;
import java.util.TimerTask;
import pl.droidsonroids.gif.GifDrawable; import pl.droidsonroids.gif.GifDrawable;
import pl.droidsonroids.gif.GifImageView; import pl.droidsonroids.gif.GifImageView;
...@@ -79,7 +76,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -79,7 +76,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
playBanner(); playBanner();
} }
if (AppOpenAdManager.getInstance().isAdAvailable()) { if (TopOnAppOpenAdManager.getInstance().isAdAvailable()) {
showOpenAd(); showOpenAd();
} else { } else {
loadOpenAd(); loadOpenAd();
...@@ -88,7 +85,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -88,7 +85,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
private void showOpenAd() { private void showOpenAd() {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
AppOpenAdManager.getInstance().setOnShowAdCompleteListener(new AppOpenAdManager.OnShowAdCompleteListener() { TopOnAppOpenAdManager.getInstance().setOnShowAdCompleteListener(new TopOnAppOpenAdManager.OnShowAdCompleteListener() {
@Override @Override
public void onShowAdComplete() { public void onShowAdComplete() {
PictureTranslateListMainActivity.PictureTranslateListMainActivityStart(PictureTranslateStartActivity.this); PictureTranslateListMainActivity.PictureTranslateListMainActivityStart(PictureTranslateStartActivity.this);
...@@ -102,11 +99,11 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -102,11 +99,11 @@ public class PictureTranslateStartActivity extends BaseActivity {
} }
}); });
AppOpenAdManager.getInstance().showAdIfAvailable(this); TopOnAppOpenAdManager.getInstance().showAdIfAvailable(this, findViewById(R.id.root_view));
} }
private void loadOpenAd() { private void loadOpenAd() {
AppOpenAdManager.getInstance().setOnLoadAdCompleteListener(new AppOpenAdManager.OnLoadAdCompleteListener() { TopOnAppOpenAdManager.getInstance().setOnLoadAdCompleteListener(new TopOnAppOpenAdManager.OnLoadAdCompleteListener() {
@Override @Override
public void onLoadAdComplete() { public void onLoadAdComplete() {
showOpenAd(); showOpenAd();
...@@ -117,7 +114,7 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -117,7 +114,7 @@ public class PictureTranslateStartActivity extends BaseActivity {
} }
}); });
AppOpenAdManager.getInstance().loadAd(); TopOnAppOpenAdManager.getInstance().loadAd();
} }
public void setProgressBarProgress(int i) { public void setProgressBarProgress(int i) {
...@@ -134,8 +131,8 @@ public class PictureTranslateStartActivity extends BaseActivity { ...@@ -134,8 +131,8 @@ public class PictureTranslateStartActivity extends BaseActivity {
@Override @Override
protected void onDestroy() { protected void onDestroy() {
AppOpenAdManager.getInstance().setOnShowAdCompleteListener(null); TopOnAppOpenAdManager.getInstance().setOnShowAdCompleteListener(null);
AppOpenAdManager.getInstance().setOnLoadAdCompleteListener(null); TopOnAppOpenAdManager.getInstance().setOnLoadAdCompleteListener(null);
super.onDestroy(); super.onDestroy();
if (handler != null) { if (handler != null) {
handler.removeCallbacksAndMessages(null); handler.removeCallbacksAndMessages(null);
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:id="@+id/root_view"
android:layout_height="match_parent"> android:layout_height="match_parent">
<pl.droidsonroids.gif.GifImageView <pl.droidsonroids.gif.GifImageView
......
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript { buildscript {
repositories { repositories {
mavenCentral() mavenCentral()
mavenLocal() mavenLocal()
google() google()
} }
dependencies { dependencies {
classpath 'com.android.tools.build:gradle:7.4.2' classpath 'com.android.tools.build:gradle:7.4.2'
classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20' classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.7.20'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
} }
} }
...@@ -23,4 +18,5 @@ plugins { ...@@ -23,4 +18,5 @@ plugins {
task clean(type: Delete) { task clean(type: Delete) {
delete rootProject.buildDir delete rootProject.buildDir
} }
\ No newline at end of file
...@@ -3,6 +3,17 @@ pluginManagement { ...@@ -3,6 +3,17 @@ pluginManagement {
google() google()
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url "https://jfrog.anythinktech.com/artifactory/overseas_sdk" }
//applovin
maven { url 'https://artifacts.applovin.com/android' }
//Pangle
maven { url "https://artifact.bytedance.com/repository/pangle" }
//Mintegral
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
} }
} }
dependencyResolutionManagement { dependencyResolutionManagement {
...@@ -11,6 +22,17 @@ dependencyResolutionManagement { ...@@ -11,6 +22,17 @@ dependencyResolutionManagement {
google() google()
mavenCentral() mavenCentral()
gradlePluginPortal() gradlePluginPortal()
maven { url "https://jfrog.anythinktech.com/artifactory/overseas_sdk" }
//applovin
maven { url 'https://artifacts.applovin.com/android' }
//Pangle
maven { url "https://artifact.bytedance.com/repository/pangle" }
//Mintegral
maven { url "https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea" }
} }
} }
rootProject.name = "PictureTranslate" rootProject.name = "PictureTranslate"
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment