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 com.novelbook.android.Main2Activity;
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 {
    private boolean mIsBackground;
    private static long lastAd =0;
    //private static long interVal = 5000;//Constants.AD_SPLASH_INVTERVAL;
    private static int pages =0;


    /******
     * 使用方式:在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(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("zzr", "从广告页回到前台");
        }
    }

    @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();
            Intent intent = new Intent(activity, SplashActivity.class);
            intent.putExtra(SplashActivity.EXTR_LUNCHER, false);


         /*   if(Constants.AD_SPLASH_SOURCE ==AD_TENCENT_QQ) {
                intent =   new Intent(activity, com.novelbook.android.AD.qq.SplashActivity.class);
            }else if(Constants.AD_SPLASH_SOURCE ==AD_TOUTIAO){
                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()*1000;
        Log.d("zzr", "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++;
        if(pages >Constants.AD_SETTING.getSplash2().getPageCount4Display()){
            clearPages();
            showSplashAd(activity);

        }
    }
}