Android穿山甲SDK激励视频
16lz
2022-03-22
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
更多相关文章
- [Android]权限处理
- Android(安卓)packageManagerService如何添加安装权限白名单
- Android(安卓)运行时权限处理(from jianshu)
- Android(安卓)安全机制
- Android(安卓)sharedUserId数据权限
- Android(安卓)NullPointerException解决方法(空指针异常)
- Android(安卓)目录操作
- Android之Service
- Android(安卓)permission 权限类及中英文说明