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

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

下载解压后:

 

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

 

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

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

                                                                                            

注册清单全部内容:

<?xml version="1.0" encoding="utf-8"?>                                                                                                                                                                                                                                            

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

在中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

 

更多相关文章

  1. [Android]权限处理
  2. Android(安卓)packageManagerService如何添加安装权限白名单
  3. Android(安卓)运行时权限处理(from jianshu)
  4. Android(安卓)安全机制
  5. Android(安卓)sharedUserId数据权限
  6. Android(安卓)NullPointerException解决方法(空指针异常)
  7. Android(安卓)目录操作
  8. Android之Service
  9. Android(安卓)permission 权限类及中英文说明

随机推荐

  1. linux下sqlite3可视化工具
  2. linux下安装redis和启动redis
  3. redis 在 Linux下的安装
  4. centos 6.5安装的UEFI-GPT回退为MBR引导
  5. linux中awk数组应用域替换
  6. Shell系列—Shell简介
  7. Linux基础-常用命令
  8. Linux下共享内存相关函数
  9. wdcp/wdlinux一键包的php5.3版本添加Zend
  10. 使用nasm和ld汇编/链接问题