Android穿山甲SDK激励视频

Android接入穿山甲激励视频:老规矩文章底部放上DEMO,官网得脉编译会出现错误,

首先到穿山甲官网:穿山甲官网 下载,说明文档,demo,sdk包等

Android穿山甲SDK激励视频_第1张图片

下载解压后:

Android穿山甲SDK激励视频_第2张图片

 

自己新建一个工程,然后将open_ad_sdk.aar包放入Lib,并引用

Android穿山甲SDK激励视频_第3张图片

 

 引用:implementation files('libs/open_ad_sdk.aar')

在注册清单中manifest必须要添加的权限:


    

    
    

    
    
    
    
    
    
    
    
    

    
    

    
    
    

    
    
    
    

    
    

注册清单全部内容:



    
    

    
    

    
    
    
    
    
    
    
    
    

    
    

    
    
    

    
    
    
    

    
    

    
        
            
                

                
            
        
        

        
            
        
        
        

        

    

 如有不知道代码干嘛用的,参照开发文档:

在中Application中进行始化:

public class DemoApplication extends Application {


    @Override
    protected void attachBaseContext(Context base) {
        super.attachBaseContext(base);
//        MultiDex.install(base);
    }

    @Override
    public void onCreate() {
        super.onCreate();
        //穿山甲SDK初始化
        //强烈建议在应用对应的Application#onCreate()方法中调用,避免出现content为null的异常
        TTAdManagerHolder.init(this);
        //如果明确某个进程不会使用到广告SDK,可以只针对特定进程初始化广告SDK的content
        //if (PROCESS_NAME_XXXX.equals(processName)) {
        //   TTAdManagerHolder.init(this)
        //}
    }

}

初始化的内容:

public class TTAdManagerHolder {
    private static boolean sInit;

    public static TTAdManager get() {
        if (!sInit) {
            throw new RuntimeException("TTAdSdk is not init, please check.");
        }
        return TTAdSdk.getAdManager();
    }

    public static void init(Context context) {
        doInit(context);
    }

    //step1:接入网盟广告sdk的初始化操作,详情见接入文档和穿山甲平台说明
    private static void doInit(Context context) {
        if (!sInit) {
            TTAdSdk.init(context, buildConfig(context));
            sInit = true;
        }
    }

    private static TTAdConfig buildConfig(Context context) {
        return new TTAdConfig.Builder()
                .appId("5001121")  
                .useTextureView(true) //使用TextureView控件播放视频,默认为SurfaceView,当有SurfaceView冲突的场景,可以使用TextureView
                .appName("APP应用名")
                .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
                .allowShowNotify(true) //是否允许sdk展示通知栏提示
                .allowShowPageWhenScreenLock(true) //是否在锁屏场景支持展示广告落地页
                .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
                .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI, TTAdConstant.NETWORK_STATE_3G) //允许直接下载的网络状态集合
                .supportMultiProcess(false)//是否支持多进程
//                .httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
                .build();
    }
}

这里是核心内,激励视频类容直接上代码:



public class MainActivity extends AppCompatActivity {
    String TAG = "LZ--";
    private Button mLoadAd;
    private Button mLoadAdVertical;
    private Button mShowAd;
    Context mContext;
    //    private TTAdNative mTTAdNative;
//    private TTRewardVideoAd mttRewardVideoAd;
    private String mHorizontalCodeId;
    private String mVerticalCodeId;
    private boolean mIsExpress = false; //是否请求模板广告
    private boolean mIsLoaded = false; //视频是否加载完成


    //广告接口持有者
    private TTAdNative mTTAdNative;

    //视频播放持有者
    private TTRewardVideoAd mttRewardVideoAd;


    //是否加载完成
    private boolean mHasShowDownloadActive = false;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mContext = MainActivity.this;
        mLoadAd = (Button) findViewById(R.id.btn_reward_load);
        mLoadAdVertical = (Button) findViewById(R.id.btn_reward_load_vertical);
        mShowAd = (Button) findViewById(R.id.btn_reward_show);

        Init();
        initClickEvent();

        TTAdManagerHolder.init(this);
    }


    private void getExtraInfo() {

        mHorizontalCodeId = "945398480";
        mVerticalCodeId = "945401310";
        mIsExpress = true;


    }

    private void initClickEvent() {
        mLoadAd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                loadAd(mHorizontalCodeId, TTAdConstant.HORIZONTAL);
                LoadHorizontalAD();//横向广告
            }
        });
        mLoadAdVertical.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
//                loadAd(mVerticalCodeId, TTAdConstant.VERTICAL);
                LoadVerticalAD();//竖屏广告
            }
        });
        mShowAd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ShowVedio();//展示广告
            }
        });
    }


    //初始化广告配置
    public void Init() {
        //step1:初始化sdk
        TTAdManager ttAdManager = TTAdManagerHolder.get();
        //step2:(可选,强烈建议在合适的时机调用):申请部分权限,如read_phone_state,防止获取不了imei时候,下载类广告没有填充的问题。
        TTAdManagerHolder.get().requestPermissionIfNecessary(this);
        //step3:创建TTAdNative对象,用于调用广告请求接口
        mTTAdNative = ttAdManager.createAdNative(getApplicationContext());

    }

    //加载横条广告
    public void LoadHorizontalAD() {
        loadAd("901121430", TTAdConstant.HORIZONTAL);
//        loadAd("945398480", TTAdConstant.HORIZONTAL);
    }

    //加载竖条广告
    public void LoadVerticalAD() {

        loadAd("901121365", TTAdConstant.VERTICAL);
//        loadAd("945401310", TTAdConstant.VERTICAL);
    }

    //加载完成,显示广告内容
    public void ShowVedio() {
        //在Android的UI线程显示
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                if (mttRewardVideoAd != null) {
                    //step6:在获取到广告后展示
                    TToast(MainActivity.this, "加载成功显示");
                    mttRewardVideoAd.showRewardVideoAd(MainActivity.this);
                    TToast(MainActivity.this, "显示调用完成");
                    mttRewardVideoAd = null;
                } else {
                    TToast(MainActivity.this, "请先加载广告");
                }
            }
        });
    }

    //TToast显示信息
    public void TToast(final Context context, final String msg) {
        //在Android的UI线程显示
        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                Toast.makeText(context, msg, Toast.LENGTH_SHORT).show();
            }
        });
    }

    //配置广告配置,请求广告。
    private void loadAd(String codeId, int orientation) {
        //step4:创建广告请求参数AdSlot,具体参数含义参考文档
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId(codeId)
                .setSupportDeepLink(true)
                .setImageAcceptedSize(1080, 1920)
                .setRewardName("金币") //奖励的名称
                .setRewardAmount(3)  //奖励的数量
                .setUserID("user123")//用户id,必传参数
                .setMediaExtra("media_extra") //附加参数,可选
                .setOrientation(orientation) //必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL
                .build();
        //step5:请求广告
        mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() {
            @Override
            public void onError(int code, String message) {
                Log.e("LZ----错误信息:", message);
                TToast(MainActivity.this, message);
            }

            //视频广告加载后,视频资源缓存到本地的回调,在此回调后,播放本地视频,流畅不阻塞。
            @Override
            public void onRewardVideoCached() {
                TToast(MainActivity.this, "rewardVideoAd video cached");
            }

            //视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。
            @Override
            public void onRewardVideoAdLoad(TTRewardVideoAd ad) {
                Log.e(TAG, "Callback --> onRewardVideoAdLoad");

                TToast.show(MainActivity.this, "rewardVideoAd loaded 广告类型:");
                mIsLoaded = false;
                mttRewardVideoAd = ad;
                mttRewardVideoAd.setRewardAdInteractionListener(new TTRewardVideoAd.RewardAdInteractionListener() {

                    @Override
                    public void onAdShow() {
                        Log.d(TAG, "Callback --> rewardVideoAd show");
                        TToast.show(MainActivity.this, "rewardVideoAd show");
                    }

                    @Override
                    public void onAdVideoBarClick() {
                        Log.d(TAG, "Callback --> rewardVideoAd bar click");
                        TToast.show(MainActivity.this, "rewardVideoAd bar click");
                    }

                    @Override
                    public void onAdClose() {
                        Log.d(TAG, "Callback --> rewardVideoAd close");
                        TToast.show(MainActivity.this, "rewardVideoAd close");
                    }

                    //视频播放完成回调
                    @Override
                    public void onVideoComplete() {
                        Log.d(TAG, "Callback --> rewardVideoAd complete");
                        TToast.show(MainActivity.this, "rewardVideoAd complete");
                    }

                    @Override
                    public void onVideoError() {
                        Log.e(TAG, "Callback --> rewardVideoAd error");
                        TToast.show(MainActivity.this, "rewardVideoAd error");
                    }

                    //视频播放完成后,奖励验证回调,rewardVerify:是否有效,rewardAmount:奖励梳理,rewardName:奖励名称
                    @Override
                    public void onRewardVerify(boolean rewardVerify, int rewardAmount, String rewardName) {
                        String logString = "verify:" + rewardVerify + " amount:" + rewardAmount +
                                " name:" + rewardName;
                        Log.e(TAG, "Callback --> " + logString);
                        TToast.show(MainActivity.this, logString);
                    }

                    @Override
                    public void onSkippedVideo() {
                        Log.e(TAG, "Callback --> rewardVideoAd has onSkippedVideo");
                        TToast.show(MainActivity.this, "rewardVideoAd has onSkippedVideo");
                    }
                });
                mttRewardVideoAd.setDownloadListener(new TTAppDownloadListener() {
                    @Override
                    public void onIdle() {
                        mHasShowDownloadActive = false;
                    }

                    @Override
                    public void onDownloadActive(long totalBytes, long currBytes, String fileName, String appName) {
                        if (!mHasShowDownloadActive) {
                            mHasShowDownloadActive = true;
                            TToast(MainActivity.this, "下载中,点击下载区域暂停");
                        }
                    }

                    @Override
                    public void onDownloadPaused(long totalBytes, long currBytes, String fileName, String appName) {
                        TToast(MainActivity.this, "下载暂停,点击下载区域继续");
                    }

                    @Override
                    public void onDownloadFailed(long totalBytes, long currBytes, String fileName, String appName) {
                        TToast(MainActivity.this, "下载失败,点击下载区域重新下载");
                    }

                    @Override
                    public void onDownloadFinished(long totalBytes, String fileName, String appName) {
                        TToast(MainActivity.this, "下载完成,点击下载区域重新下载");
                    }

                    @Override
                    public void onInstalled(String fileName, String appName) {
                        TToast(MainActivity.this, "安装完成,点击下载区域打开");
                    }
                });
            }
        });
    }

}

 

注意:目前测试,在华为系统android8会出现连接失败问题,AndroidQ是没有问题,建议使用androidQ测试,目前不知原因,待查。

附:下载

 

                                                                                                                                                                                         -END

 

你可能感兴趣的:(Android,android,安卓,移动开发)