《android studio》android接入topon广告平台

2020/12/23 10.38

这里是官网的教程: topon接入文档

关于简介以及说明什么的请在官网查看,能点进来说明已经了解了TopOn是什么

目录

以下是个人理解以及流程

1、进入TopOn SDK的打包系统下载,旋转指定频道的广告,需要和后台对应

2、查看build.gradle,检查自己的 ,laya打包的native 版本可能会很低,这里需要修改正常版本

3、 在APP 路径下 新建 topon_libs 和 topon_res,将 下载的SDK包文件的 libs放入topon_libs,res放入topon_res

4、配置 android Manifest 权限

1、申请权限

2、测试调用是否成功

3、SDK初始化

4、各个广告初始化,下面的广告id都存放在 AdConstant中

4.1、banner广告 新建 bannerAd

         4.2 插屏广告  新建 InterstitialAd

         4.3 信息流广告(这个有两个类要新建 NativeDemoRender 和 NativeInfoAd)

         4.4 开屏广告(开屏广告为了防止开局白屏的情况,我的做法是新建一个界面来显示 开屏广告,等加载完毕后再显示,设置了先加载后显示的模式)

         4.5 视频广告 新建 VideoRewardAd.java

总结:以上就介绍了如何加入Topon的完整步骤,有遗漏部分请留言,博主看到都会及时回复的

 


 

以下是个人理解以及流程

1、进入TopOn SDK的打包系统下载,旋转指定频道的广告,需要和后台对应

《android studio》android接入topon广告平台_第1张图片

下面是下载后的文件

《android studio》android接入topon广告平台_第2张图片

下面开始接入SDK

2、查看build.gradle,检查自己的 ,laya打包的native 版本可能会很低,这里需要修改正常版本

《android studio》android接入topon广告平台_第3张图片

3、 在APP 路径下 新建 topon_libs 和 topon_res,将 下载的SDK包文件的 libs放入topon_libs,res放入topon_res

《android studio》android接入topon广告平台_第4张图片

然后在build.grade中引入自定义的路径

《android studio》android接入topon广告平台_第5张图片

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation(name: 'sdklib', ext: 'aar')
    api fileTree(include: ['*.jar','*.aar'], dir: 'topon_libs') // 引入这个
    testImplementation 'junit:junit:4.12'
    implementation 'com.android.support:appcompat-v7:28.0.0'

    implementation files('libs/oaid_sdk_1.0.23.aar') // 这个是获得oaid的 ,可不配置
//    api 'com.android.support:appcompat-v7:28.0.0'
}

dependencies 按照我提供的这个图配置即可 

4、配置 android Manifest 权限

打开SDK包可看见这些东西

《android studio》android接入topon广告平台_第6张图片

将 权限 user-permission 拷贝至你的项目的 androidManifest中,重复的删除

《android studio》android接入topon广告平台_第7张图片完整拷贝值拷贝至你的项目的 androidManifest中

配置完后要SYNC一下,这样才能读到SDK中的类

 

以上基本配置已完毕,下面是介绍如何使用SDK了

1、申请权限

在mainActivity中添加申请权限代码,这里的  Manifest单词要注意,后面接的权限,100000可以自定义数字,主要是后续可判断玩家是否授权

    public void requestPermission() {
        Log.d("申请权限", "申请权限");
        ActivityCompat.requestPermissions(JSBridge.mMainActivity, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.WRITE_EXTERNAL_STORAGE}, 100000);
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        Log.d("申请权限", "onRequestPermissionsResult: " + requestCode);
        switch (requestCode) {
            case 100000: {
                AdConstant.init(); // topon初始化
                startActivity(new Intent(this, SplashAdShowActivity.class)); // 开屏广告开始加载
                break;
            }
            default:
                break;
        }
    }
 

2、测试调用是否成功

 调用ATSDK.integrationChecking(applicationContext);在下方的 logcat中过滤 anythink的Tag查看日志,显示下图且 status是 success表示成功,其他的缺什么补什么即可

《android studio》android接入topon广告平台_第8张图片

3、SDK初始化

ATSDK.init(getApplicationContext(), TopOnAppID, TopOnAppKey);

    public static void init(){
        ATSDK.init(JSBridge.mMainActivity.getApplicationContext(),AdConstant.APPID,AdConstant.APPKEY);
//        ATSDK.setNetworkLogDebug(true);
//        Log.d("INITAD","申请权限");
//        ActivityCompat.requestPermissions(JSBridge.mMainActivity,new String[]{Manifest.permission.READ_PHONE_STATE,Manifest.permission.WRITE_EXTERNAL_STORAGE},100000);
        // 视频初始化
        VideoRewardAd.getInstance().init();
        // 插屏广告初始化
        InterstitialAd.getInstance().init();
        BannerAd.getInstance().init();
        // 信息流广告初始化
        NativeInfoAd.getInstance().init();
    }

4、各个广告初始化,下面的广告id都存放在 AdConstant中

《android studio》android接入topon广告平台_第9张图片

public class ATAdKeyConst {
    public static  String KEY_USER_ID = "userId";
    public static String KEY_USER_VIDEO_DATA = "user_video_data";
}

4.1、banner广告 新建 bannerAd

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.banner.api.ATBannerView;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;

import demo.JSBridge;

public class BannerAd {

    private static BannerAd _bannerAd = null;
    private  static String TAG = "BannerAd";
    public static BannerAd getInstance() {
        if (BannerAd._bannerAd == null) {
            _bannerAd = new BannerAd();
        }
        return _bannerAd;
    }

    private ATBannerView mBannerView = null;
    private String[] ids = new String[]{
            AdConstant.bannerid_chuanshanjia
    };
    private int curid_index = 0;

    public void init() {
        Log.d("新的", "创建新的banner");
        // 每次调用刷新一下banner内容
        mBannerView = new ATBannerView(JSBridge.mMainActivity);
        mBannerView.setPlacementId(this.ids[this.curid_index]);
//        mBannerView.setUnitId("b5baca45138428");
        mBannerView.setBannerAdListener(new ATBannerListener() {
            @Override
            public void onBannerLoaded() {
                Log.d(TAG, "onBannerLoaded: ");
            }

            @Override
            public void onBannerFailed(AdError adError) {
                Log.d(TAG, "onBannerFailed: ");
            }

            @Override
            public void onBannerClicked(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerClicked: ");
                BannerAd.getInstance().hide();
            }

            @Override
            public void onBannerShow(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerShow: ");
            }

            @Override
            public void onBannerClose(ATAdInfo atAdInfo) {
                Log.d(TAG, "onBannerClose ");
//                if (mBannerView != null && mBannerView.getParent() != null) {
//                    ((ViewGroup) mBannerView.getParent()).removeView(mBannerView);
//                }
                BannerAd.getInstance().hide();
            }

            @Override
            public void onBannerAutoRefreshed(ATAdInfo atAdInfo) {

            }

            @Override
            public void onBannerAutoRefreshFail(AdError adError) {

            }
        });
        mBannerView.loadAd();
    }

    public void show() {
        if (mBannerView == null) {
            this.init();
        }
        int width = JSBridge.mMainActivity.getResources().getDisplayMetrics().widthPixels;//定一个宽度值,比如屏幕宽度
        int height = 250;
        Log.d("banner广告宽度", height + "");
        FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(width, height);
        params.gravity = Gravity.BOTTOM;
        mBannerView.setVisibility(View.VISIBLE);
        if(mBannerView.getParent() == null){
            JSBridge.mMainActivity.addContentView(mBannerView, params);
        }
    }

    public void hide() {
        if (this.mBannerView != null && mBannerView.getParent() != null) {
//            ((ViewGroup)mBannerView.getParent()).removeView(mBannerView);
            mBannerView.setVisibility(View.INVISIBLE);
            mBannerView.loadAd();
        }
    }

    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

4.2 插屏广告  新建 InterstitialAd

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.banner.api.ATBannerView;
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 java.util.HashMap;
import java.util.Map;

import demo.JSBridge;

public class InterstitialAd {
    private static String TAG = "InterstitialAdActivity";

    private static InterstitialAd _instance = null;
    public static InterstitialAd getInstance() {
        if (InterstitialAd._instance == null) {
            _instance = new InterstitialAd();
        }
        return _instance;
    }

    ATInterstitial mInterstitialAd;
    private String[] ids = new String[]{
            AdConstant.interstitial_chuanshanjia
    };
    private int curid_index = 0;

    public void init() {
        mInterstitialAd = new ATInterstitial(JSBridge.mMainActivity, ids[curid_index]);
        addSetting();
        Log.i(TAG, "开始加载插屏广告");
        mInterstitialAd.setAdListener(new ATInterstitialListener() {
            @Override
            public void onInterstitialAdLoaded() {
                Log.i(TAG, "onInterstitialAdLoaded");
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdLoaded", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdLoadFail(AdError adError) {
                Log.i(TAG, "onInterstitialAdLoadFail:\n" + adError.printStackTrace());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdLoadFail:" + adError.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdClicked(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdClicked:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdClicked", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdShow(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdShow:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdShow", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdClose(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdClose:\n" + entity.toString());
                mInterstitialAd.load();
//                InterstitialAd.getInstance().init();
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdClose", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoStart(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdVideoStart:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoStart", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoEnd(ATAdInfo entity) {
                Log.i(TAG, "onInterstitialAdVideoEnd:\n" + entity.toString());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoEnd", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onInterstitialAdVideoError(AdError adError) {
                Log.i(TAG, "onInterstitialAdVideoError:\n" + adError.printStackTrace());
//                Toast.makeText(InterstitialAdActivity.this, "onInterstitialAdVideoError", Toast.LENGTH_SHORT).show();
            }
        });
        mInterstitialAd.load();
    }
    public void show(){
        Log.i(TAG, "显示插屏广告");
        if(mInterstitialAd == null){
            this.init();
        }
        mInterstitialAd.show(JSBridge.mMainActivity);
        mInterstitialAd.load();
    }

    private void addSetting() {

    }
    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

 4.3 信息流广告(这个有两个类要新建 NativeDemoRender 和 NativeInfoAd)

package demo.advertising;

import android.content.Context;
import android.text.TextUtils;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.anythink.nativead.api.ATNativeAdRenderer;
import com.anythink.nativead.api.ATNativeImageView;
import com.anythink.nativead.unitgroup.api.CustomNativeAd;
import com.game.plane.R;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Z on 2020/12/1.
 */

public class NativeDemoRender implements ATNativeAdRenderer {

    Context mContext;
    List mClickView = new ArrayList<>();

    public NativeDemoRender(Context context) {
        mContext = context;
    }

    View mDevelopView;

    int mNetworkType;

    @Override
    public View createView(Context context, int networkType) {
        if (mDevelopView == null) {
            mDevelopView = LayoutInflater.from(context).inflate(R.layout.native_ad_item, null);
        }
        mNetworkType = networkType;
        if (mDevelopView.getParent() != null) {
            ((ViewGroup) mDevelopView.getParent()).removeView(mDevelopView);
        }
        return mDevelopView;
    }

    @Override
    public void renderAdView(View view, CustomNativeAd ad) {
        mClickView.clear();
        TextView titleView = (TextView) view.findViewById(R.id.native_ad_title);
        TextView descView = (TextView) view.findViewById(R.id.native_ad_desc);
        TextView ctaView = (TextView) view.findViewById(R.id.native_ad_install_btn);
        TextView adFromView = (TextView) view.findViewById(R.id.native_ad_from);
        FrameLayout contentArea = (FrameLayout) view.findViewById(R.id.native_ad_content_image_area);
        FrameLayout iconArea = (FrameLayout) view.findViewById(R.id.native_ad_image);
        final ATNativeImageView logoView = (ATNativeImageView) view.findViewById(R.id.native_ad_logo);

        titleView.setText("");
        descView.setText("");
        ctaView.setText("");
        adFromView.setText("");
        titleView.setText("");
        contentArea.removeAllViews();
        iconArea.removeAllViews();
        logoView.setImageDrawable(null);

        View mediaView = ad.getAdMediaView(contentArea, contentArea.getWidth());

        if (ad.isNativeExpress()) {//是 个性化模板
            titleView.setVisibility(View.GONE);
            descView.setVisibility(View.GONE);
            ctaView.setVisibility(View.GONE);
            logoView.setVisibility(View.GONE);
            iconArea.setVisibility(View.GONE);
            if (mediaView.getParent() != null) {
                ((ViewGroup) mediaView.getParent()).removeView(mediaView);
            }

            contentArea.addView(mediaView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));
            return;
        }


        titleView.setVisibility(View.VISIBLE);
        descView.setVisibility(View.VISIBLE);
        ctaView.setVisibility(View.VISIBLE);
        logoView.setVisibility(View.VISIBLE);
        iconArea.setVisibility(View.VISIBLE);


        View adiconView = ad.getAdIconView();


        final ATNativeImageView iconView = new ATNativeImageView(mContext);
        if (adiconView == null) {
            iconArea.addView(iconView);
            iconView.setImage(ad.getIconImageUrl());
            mClickView.add(iconView);
        } else {
            iconArea.addView(adiconView);
        }


        if (!TextUtils.isEmpty(ad.getAdChoiceIconUrl())) {
            logoView.setImage(ad.getAdChoiceIconUrl());
        } else {
//            logoView.setImageResource(R.drawable.ad_logo);
        }


        if (mediaView != null) {
            if (mediaView.getParent() != null) {
                ((ViewGroup) mediaView.getParent()).removeView(mediaView);
            }

            contentArea.addView(mediaView, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.WRAP_CONTENT));

        } else {

            ATNativeImageView imageView = new ATNativeImageView(mContext);
            imageView.setImage(ad.getMainImageUrl());

            ViewGroup.LayoutParams params = new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT);
            imageView.setLayoutParams(params);
            contentArea.addView(imageView, params);

            mClickView.add(imageView);
        }

        titleView.setText(ad.getTitle());
        descView.setText(ad.getDescriptionText());
        ctaView.setText(ad.getCallToActionText());
        if (!TextUtils.isEmpty(ad.getAdFrom())) {
            adFromView.setText(ad.getAdFrom() != null ? ad.getAdFrom() : "");
            adFromView.setVisibility(View.VISIBLE);
        } else {
            adFromView.setVisibility(View.GONE);
        }

        mClickView.add(titleView);
        mClickView.add(descView);
        mClickView.add(ctaView);

    }

    public List getClickView() {
        return mClickView;
    }
}
package demo.advertising;

import android.app.Activity;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.Toast;

import com.anythink.core.api.ATAdConst;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.nativead.api.ATNative;
import com.anythink.nativead.api.ATNativeAdView;
import com.anythink.nativead.api.ATNativeDislikeListener;
import com.anythink.nativead.api.ATNativeEventListener;
import com.anythink.nativead.api.ATNativeNetworkListener;
import com.anythink.nativead.api.NativeAd;

import java.util.HashMap;
import java.util.Map;

import demo.JSBridge;

public class NativeInfoAd {
    // 信息流广告
    public ATNative atNative;
    public ATNativeAdView anyThinkNativeAdView;
    public NativeDemoRender anyThinkRender = null;

    public Activity main;
    public String TAG = "NativeInfoAd";
    public int containerHeight = 0;

    private static NativeInfoAd _instance = null;

    public static NativeInfoAd getInstance() {
        if (NativeInfoAd._instance == null) {
            _instance = new NativeInfoAd();
        }
        return _instance;
    }

    public void init() {
        main = JSBridge.mMainActivity;
        int padding = dip2px(10);
        containerHeight = dip2px(340);
        final int adViewWidth = main.getResources().getDisplayMetrics().widthPixels - 2 * padding;
        final int adViewHeight = containerHeight - 2 * padding;

        anyThinkRender = new NativeDemoRender(main);
        atNative = new ATNative(main, AdConstant.adinfo_chuanshanjia, new ATNativeNetworkListener() {
            @Override
            public void onNativeAdLoaded() {
                Log.d(TAG, "load success");
            }

            @Override
            public void onNativeAdLoadFail(AdError adError) {
                Log.d(TAG, "load fail");
            }
        });

        Map localMap = new HashMap<>();

        // since v5.6.4
        localMap.put(ATAdConst.KEY.AD_WIDTH, adViewWidth);
        localMap.put(ATAdConst.KEY.AD_HEIGHT, adViewHeight);
        atNative.setLocalExtra(localMap);

        if(anyThinkNativeAdView == null){
            anyThinkNativeAdView = new ATNativeAdView(main);
        }

        anyThinkNativeAdView.setPadding(padding,padding,padding,0);
//        anyThinkNativeAdView.setVisibility(View.GONE);
//        main.addContentView(anyThinkNativeAdView,new FrameLayout.LayoutParams(main.getResources().getDisplayMetrics().widthPixels, containerHeight));
        loadNativeAd();
    }

    public void loadNativeAd() {
        if (anyThinkNativeAdView != null && anyThinkNativeAdView.getParent() == null) {
            FrameLayout.LayoutParams param = new FrameLayout.LayoutParams(main.getResources().getDisplayMetrics().widthPixels, containerHeight);
            param.gravity = Gravity.BOTTOM;
            main.addContentView(anyThinkNativeAdView, param);
        }
        atNative.makeAdRequest();
    }

    public void show() {
        NativeAd nativeAd = atNative.getNativeAd();
        if(nativeAd != null){
            nativeAd.setDislikeCallbackListener(new ATNativeDislikeListener() {
                @Override
                public void onAdCloseButtonClick(ATNativeAdView atNativeAdView, ATAdInfo atAdInfo) {
                    Log.i(TAG, "native ad onAdCloseButtonClick");
                    if (atNativeAdView.getParent() != null) {
                        ((ViewGroup) atNativeAdView.getParent()).removeView(atNativeAdView);
                    }
                }
            });
            try {
                nativeAd.renderAdView(anyThinkNativeAdView,anyThinkRender);
            }catch (Exception e){

            }
            anyThinkNativeAdView.setVisibility(View.VISIBLE);
            nativeAd.prepare(anyThinkNativeAdView,anyThinkRender.getClickView(),null);
        }
        this.loadNativeAd();
    }

    public void hide(){
        if(anyThinkNativeAdView != null){
            anyThinkNativeAdView.setVisibility(View.INVISIBLE);
        }
    }

    public int dip2px(float dipValue) {
        float scale = JSBridge.mMainActivity.getResources().getDisplayMetrics().density;
        return (int) (dipValue * scale + 0.5f);
    }
}

4.4 开屏广告(开屏广告为了防止开局白屏的情况,我的做法是新建一个界面来显示 开屏广告,等加载完毕后再显示,设置了先加载后显示的模式)

res/layout下新建  splash_ad_show.xml

《android studio》android接入topon广告平台_第10张图片

内容:





    

    

    

        
        
    

androidManifest.xml中添加如下代码

《android studio》android接入topon广告平台_第11张图片

        

新建 SplashAdShowActivity

package demo.advertising;

import android.content.Intent;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.support.v4.app.FragmentActivity;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.TextView;

import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.ATMediationRequestInfo;
import com.anythink.core.api.AdError;
import com.anythink.splashad.api.ATSplashAd;
import com.anythink.splashad.api.ATSplashAdListener;
import com.game.plane.R;

import demo.JSBridge;
import demo.MainActivity;

public class SplashAdShowActivity extends FragmentActivity implements ATSplashAdListener {
    ATSplashAd splashAd;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_ad_show);
        String unitId = AdConstant.splash_chuanshanjia;
        FrameLayout container = findViewById(R.id.splash_ad_container);
        ViewGroup.LayoutParams layoutParams = container.getLayoutParams();
        layoutParams.width = getResources().getDisplayMetrics().widthPixels;
        layoutParams.height = (int) (getResources().getDisplayMetrics().heightPixels);
        ATMediationRequestInfo atMediationRequestInfo = null;
        splashAd = new ATSplashAd(this, container, unitId, atMediationRequestInfo, this);

        Intent intent = new Intent(this, MainActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);    // 跳转到 mainActivity
    }

    @Override
    public void onAdLoaded() {
        Log.d("SplashAdShowActivity", "onAdLoaded---------");
        Intent intent = new Intent(JSBridge.mMainActivity, SplashAdShowActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
        startActivity(intent);
    }

    @Override
    public void onNoAdError(AdError adError) {
        Log.i("SplashAdShowActivity", "onNoAdError---------:" + adError.printStackTrace());
        jumpToMainActivity();
    }

    @Override
    public void onAdShow(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdShow:\n" + entity.toString());
//        if (entity.getNetworkFirmId() == BaiduATConst.NETWORK_FIRM_ID) {
//            /**
//             * Only for Baidu:
//             * The display time and the skipped advertising style can be configured through the Baidu's backstage(Recommend)
//             * , and can be customized and modified in your application.
//             */
//            skipViewSetting(); //If setting skipview by Baidu's backstage, you should not run this method.
//        }
    }

    private void skipViewSetting() {
        final TextView skipView = findViewById(R.id.splash_ad_skip);
        CountDownTimer countDownTimer = new CountDownTimer(5000L, 1000L) {
            @Override
            public void onTick(long millisUntilFinished) {
                skipView.setText((millisUntilFinished / 1000) + " | 跳过");
            }

            @Override
            public void onFinish() {
                jumpToMainActivity();
            }
        };

        countDownTimer.start();
        skipView.setVisibility(View.VISIBLE);

        skipView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                jumpToMainActivity();
            }
        });
    }

    @Override
    public void onAdClick(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdClick:\n" + entity.toString());
    }

    @Override
    public void onAdDismiss(ATAdInfo entity) {
        Log.i("SplashAdShowActivity", "onAdDismiss:\n" + entity.toString());
        jumpToMainActivity();
    }

    @Override
    public void onAdTick(long millisUtilFinished) {
        Log.i("SplashAdShowActivity", "onAdTick---------:" + millisUtilFinished);
    }

    boolean hasHandleJump = false;

    public void jumpToMainActivity() {
        if (!hasHandleJump) {
            hasHandleJump = true;
            finish();
//            Toast.makeText(this, "start your MainActivity.", Toast.LENGTH_SHORT).show();
        }

    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (splashAd != null) {
            splashAd.onDestory();
        }

    }
}

4.5 视频广告 新建 VideoRewardAd.java

package demo.advertising;


import android.util.Log;
import android.view.Gravity;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.anythink.banner.api.ATBannerListener;
import com.anythink.core.api.ATAdInfo;
import com.anythink.core.api.AdError;
import com.anythink.rewardvideo.api.ATRewardVideoAd;
import com.anythink.rewardvideo.api.ATRewardVideoListener;
import com.qq.e.ads.nativ.MediaView;

import java.util.HashMap;
import java.util.Map;

import demo.JSBridge;
import demo.message.MessageManager;
import demo.message.NetCmd;
import demo.message.bean.MessageData;

public class VideoRewardAd {

    private static VideoRewardAd _bannerAd = null;
    private String TAG = "VideoRewardAd";

    public static VideoRewardAd getInstance() {
        if (VideoRewardAd._bannerAd == null) {
            _bannerAd = new VideoRewardAd();
        }
        return _bannerAd;
    }

    private ATRewardVideoAd mRewardVideoAd = null;
    private String[] ids = new String[]{
            AdConstant.reward_videoid_chuanshanjia
    };
    private int curid_index = 0;

    private MessageData cur_data = null;

    public void init(){
        Log.d(TAG, "创建新的视频");
        // 每次调用刷新一下banner内容
        mRewardVideoAd = new ATRewardVideoAd(JSBridge.mMainActivity,ids[curid_index]);
        Map localMap = new HashMap<>();
//        String userid = "test_userid_001";
//        String userdata = "test_userdata_001";
//        localMap.put(ATAdKeyConst.KEY_USER_ID,userid);
//        localMap.put(ATAdKeyConst.KEY_USER_VIDEO_DATA,userdata);
//        mRewardVideoAd.setLocalExtra(localMap);

        mRewardVideoAd.setAdListener(new ATRewardVideoListener() {
            @Override
            public void onRewardedVideoAdLoaded() {
                Log.i(TAG, "onRewardedVideoAdLoaded");
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdFailed(AdError errorCode) {
                Log.i(TAG, "onRewardedVideoAdFailed error:" + errorCode.printStackTrace());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdFailed:" + errorCode.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayStart(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayStart:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayStart", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayEnd(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayEnd:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayEnd", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayFailed(AdError errorCode, ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayFailed error:" + errorCode.printStackTrace());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayFailed:" + errorCode.printStackTrace(), Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdClosed(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdClosed:\n" + entity.toString() );
                if(cur_data != null){
                    MessageData data = new MessageData(NetCmd.MSG_SHOW_VIDEO,1,cur_data.param);
                    data.param.code = 1;
                    MessageManager.getInstance().sendTojs(data);
                }
                mRewardVideoAd.load();
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdClosed", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onRewardedVideoAdPlayClicked(ATAdInfo entity) {
                Log.i(TAG, "onRewardedVideoAdPlayClicked:\n" + entity.toString());
//                Toast.makeText(RewardVideoAdActivity.this, "onRewardedVideoAdPlayClicked", Toast.LENGTH_SHORT).show();
            }

            @Override
            public void onReward(ATAdInfo entity) {
                Log.e(TAG, "onReward:\n" + entity.toString() );

            }
        });
        mRewardVideoAd.load();
    }
    public void show(MessageData data) {
        if (mRewardVideoAd.isAdReady()){
            this.cur_data = data;
            mRewardVideoAd.show(JSBridge.mMainActivity,ids[this.curid_index]);
            mRewardVideoAd.load();
        } else {
            mRewardVideoAd.load();
//            mRewardVideoAd.show(JSBridge.mMainActivity);
        }
    }

    /**
     * 跳到下一个bannerId
     */
    private void jumpToNextBannerId() {
        this.curid_index++;
        if (this.curid_index >= this.ids.length) {
            this.curid_index = 0;
        }
    }
}

 

总结:以上就介绍了如何加入Topon的完整步骤,有遗漏部分请留言,博主看到都会及时回复的

 

 

 

 

 

 

 

你可能感兴趣的:(android,studio,android)