pda/zhuike/.svn/pristine/e9/e96c86567d467faac128340897c...

238 lines
7.2 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package com.novelbook.android.AD;
import android.app.Activity;
import android.app.Application;
import android.content.ComponentCallbacks2;
import android.content.Intent;
import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import com.google.android.gms.ads.AdListener;
import com.google.android.gms.ads.AdRequest;
import com.google.android.gms.ads.InterstitialAd;
import com.google.android.gms.ads.MobileAds;
import com.novelbook.android.Main2Activity;
import com.novelbook.android.MyApp;
import com.novelbook.android.bean.AdSetting;
import com.novelbook.android.utils.Constants;
import java.util.Date;
import static com.novelbook.android.utils.Constants.AD_TENCENT_QQ;
import static com.novelbook.android.utils.Constants.AD_TOUTIAO;
public class SplashAdManager implements Application.ActivityLifecycleCallbacks, ComponentCallbacks2 {
final static String TAG= SplashAdManager.class.getSimpleName();
private boolean mIsBackground;
private static long lastAd =0;
//private static long interVal = 5000;//Constants.AD_SPLASH_INVTERVAL;
private static int pages =0;
private static InterstitialAd mInterstitialAd ;
/******
* 使用方式在Application中直接构造即可
* @param application
*/
public SplashAdManager(Application application) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
application.registerActivityLifecycleCallbacks(this);
application.registerComponentCallbacks(this);
}
}
/*****
* 解除绑定
*/
public void release(Application application) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
application.unregisterActivityLifecycleCallbacks(this);
application.unregisterComponentCallbacks(this);
}
}
@Override
public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
if(Constants.AD_SETTING.getSplash2() .getSource() == Constants.AD_MOB) {
getAdMob(activity);
}
Log.d(TAG, "onActivityCreated:mInterstitialAd initialized ");
/* if(activity instanceof Main2Activity){
//showAd(activity);
Log.d("zzr", " 启动应用");
}*/
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
if (mIsBackground) {
mIsBackground = false;
showSplashAd(activity);
Log.d(TAG, "从广告页回到前台");
}
}
@Override
public void onActivityPaused(Activity activity) {
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
@Override
public void onTrimMemory(int level) {
//监听应用是否退到后台
if (level == TRIM_MEMORY_UI_HIDDEN) {
mIsBackground = true;
Log.i("zzr", "应用退出到后台");
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
}
@Override
public void onLowMemory() {
}
static void showInterAd(Activity activity){
clearPages();
}
static void showSplashAd(Activity activity){
if(canShowAd()) {
lastAd = new Date().getTime();
if(Constants.AD_SETTING.getSplash2() .getSource() == Constants.AD_MOB){
Log.d(TAG, "showSplashAd:mInterstitialAd.isLoaded() " +mInterstitialAd.isLoaded());
if(mInterstitialAd!=null && mInterstitialAd.isLoaded()) {
SplashAdManager.setSplashTime();
activity.getWindow().getDecorView().setSystemUiVisibility(
View.SYSTEM_UI_FLAG_LAYOUT_STABLE
| View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
| View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
| View.SYSTEM_UI_FLAG_HIDE_NAVIGATION // hide nav bar
| View.SYSTEM_UI_FLAG_FULLSCREEN // hide status bar
| View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
// | View.SYSTEM_UI_FLAG_IMMERSIVE
);
mInterstitialAd.show();
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
return;
}
Intent intent = new Intent(activity, SplashActivity.class);
intent.putExtra(SplashActivity.EXTR_LUNCHER, false);
activity.startActivity(intent);
}
}
static boolean canShowAd(){
if(!Constants.AD_SETTING.isShowAdsense()){
return false;
}
long in = new Date().getTime() -lastAd;
int interVal = Constants.AD_SETTING.getSplash2().getInterval4Display()*10;
Log.d(TAG, "canShowAd: interval is, " +in + ", canshow? "+ (in >interVal));
return in >interVal;
}
public static void setSplashTime(){ lastAd = new Date().getTime(); }
public static void clearPages(){
pages =0;
}
public static void plusPage(Activity activity){
pages++;
int pcnt =Constants.AD_SETTING.getSplash2().getPageCount4Display();;
if(pages > pcnt){
Log.d(TAG, String.format("canShowAd: plusPage pages %s, maxpage %s ", pages,pcnt));
clearPages();
showSplashAd(activity);
}
}
void getAdMob(Activity activity){
mInterstitialAd = new InterstitialAd(activity);
Log.d(TAG, "getAdMob: mIntersititiaAd is null ?" + (mInterstitialAd==null));
if(mInterstitialAd!=null)
mInterstitialAd.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
// Code to be executed when an ad finishes loading.
Log.d(TAG, "onAdLoaded: ");
}
@Override
public void onAdFailedToLoad(int errorCode) {
// Code to be executed when an ad request fails.
Log.d(TAG, "onAdFailedToLoad: ");
}
@Override
public void onAdOpened() {
// Code to be executed when the ad is displayed.
Log.d(TAG, "onAdOpened: ");
}
@Override
public void onAdClicked() {
// Code to be executed when the user clicks on an ad.
Log.d(TAG, "onAdClicked: ");
}
@Override
public void onAdLeftApplication() {
// Code to be executed when the user has left the app.
Log.d(TAG, "onAdLeftApplication: ");
}
@Override
public void onAdClosed() {
// Code to be executed when the interstitial ad is closed.
Log.d(TAG, "onAdClosed: ");
}
});
mInterstitialAd.setAdUnitId( Constants.AD_SETTING.getSplash2().getSlotId(Constants.AD_MOB));
mInterstitialAd.loadAd(new AdRequest.Builder().build());
}
}