| | |
| | | |
| | | import android.app.Activity; |
| | | import android.content.Context; |
| | | import android.os.SystemClock; |
| | | import android.os.Bundle; |
| | | import android.util.Log; |
| | | import android.view.View; |
| | | import android.view.ViewGroup; |
| | | import android.widget.FrameLayout; |
| | | import android.widget.Toast; |
| | | |
| | | import com.bytedance.sdk.openadsdk.AdSlot; |
| | | import com.bytedance.sdk.openadsdk.TTAdConstant; |
| | | import com.bytedance.sdk.openadsdk.TTAdDislike; |
| | | import com.bytedance.sdk.openadsdk.TTAdManager; |
| | | import com.bytedance.sdk.openadsdk.TTAdNative; |
| | | import com.bytedance.sdk.openadsdk.TTNativeExpressAd; |
| | | import com.bytedance.sdk.openadsdk.TTRewardVideoAd; |
| | | import com.qq.e.ads.cfg.VideoOption; |
| | | import com.qq.e.ads.nativ.ADSize; |
| | | import com.qq.e.ads.nativ.NativeExpressAD; |
| | | import com.qq.e.ads.nativ.NativeExpressADView; |
| | | import com.qq.e.ads.nativ.express2.AdEventListener; |
| | | import com.qq.e.ads.nativ.express2.NativeExpressAD2; |
| | | import com.qq.e.ads.nativ.express2.NativeExpressADData2; |
| | | import com.qq.e.ads.nativ.express2.VideoOption2; |
| | | import com.qq.e.ads.rewardvideo.RewardVideoAD; |
| | | import com.qq.e.ads.rewardvideo.RewardVideoADListener; |
| | | import com.qq.e.ads.rewardvideo2.ExpressRewardVideoAD; |
| | | import com.qq.e.ads.rewardvideo2.ExpressRewardVideoAdListener; |
| | | import com.qq.e.comm.util.AdError; |
| | | import com.qq.e.comm.util.VideoAdValidity; |
| | | import com.ut.device.UTDevice; |
| | | import com.weikou.beibeivideo.entity.ad.ExpressAdContainer; |
| | | import com.weikou.beibeivideo.entity.ad.RewardVideoAdContainer; |
| | | import com.weikou.beibeivideo.util.BeibeiConstant; |
| | | import com.weikou.beibeivideo.util.DimenUtils; |
| | | |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | | |
| | | /** |
| | | * 激励视频广告管理 |
| | |
| | | sourceType = adSource; |
| | | this.mContext = context; |
| | | if (sourceType == AdUtil.AD_TYPE.csj) { |
| | | TTAdManager ttAdManager = TTAdManagerHolder.get(); |
| | | mTTAdNative = ttAdManager.createAdNative(context); |
| | | TTAdManager ttAdManager = null; |
| | | try { |
| | | ttAdManager = TTAdManagerHolder.get(); |
| | | mTTAdNative = ttAdManager.createAdNative(context); |
| | | } catch (Exception e) { |
| | | e.printStackTrace(); |
| | | } |
| | | |
| | | } |
| | | } |
| | | |
| | |
| | | adLoadListener.onError(msg); |
| | | } |
| | | }); |
| | | } else if (sourceType == AdUtil.AD_TYPE.gdt2) { |
| | | loadGdt2(pid, new IGDT2AdLoadListener() { |
| | | |
| | | @Override |
| | | public void onSuccess(ExpressRewardVideoAD rewardVideoAD) { |
| | | adLoadListener.onSuccess(new RewardVideoAdContainer(rewardVideoAD)); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(String msg) { |
| | | adLoadListener.onError(msg); |
| | | } |
| | | }, showListener); |
| | | } |
| | | } |
| | | |
| | |
| | | .setExpressViewAcceptedSize(width, height) |
| | | .setOrientation(hrizontal ? TTAdConstant.HORIZONTAL : TTAdConstant.VERTICAL) |
| | | .build(); |
| | | if (mTTAdNative == null) { |
| | | if (adLoadListener != null) |
| | | adLoadListener.onError("mTTAdNative为空"); |
| | | return; |
| | | } |
| | | mTTAdNative.loadRewardVideoAd(adSlot, new TTAdNative.RewardVideoAdListener() { |
| | | //请求广告失败 |
| | | @Override |
| | |
| | | adLoadListener.onSuccess(mTTRewardVideoAd); |
| | | } |
| | | |
| | | @Override |
| | | public void onRewardVideoCached(TTRewardVideoAd ttRewardVideoAd) { |
| | | adLoadListener.onSuccess(mTTRewardVideoAd); |
| | | } |
| | | |
| | | //视频广告的素材加载完毕,比如视频url等,在此回调后,可以播放在线视频,网络不好可能出现加载缓冲,影响体验。 |
| | | @Override |
| | | public void onRewardVideoAdLoad(TTRewardVideoAd ad) { |
| | |
| | | } |
| | | }); |
| | | } |
| | | |
| | | private ExpressRewardVideoAD rewardVideoAD = null; |
| | | |
| | | private void loadGdt2(String pid, IGDT2AdLoadListener adLoadListener, IAdShowListener adShowListener) { |
| | | //广点通 |
| | | rewardVideoAD = new ExpressRewardVideoAD(mContext, pid, new ExpressRewardVideoAdListener() { |
| | | |
| | | @Override |
| | | public void onAdLoaded() { |
| | | Log.i(TAG, "onAdLoaded"); |
| | | } |
| | | |
| | | @Override |
| | | public void onVideoCached() { |
| | | Log.i(TAG, "onVideoCached"); |
| | | adLoadListener.onSuccess(rewardVideoAD); |
| | | } |
| | | |
| | | @Override |
| | | public void onShow() { |
| | | Log.i(TAG, "onShow"); |
| | | adShowListener.onShow(); |
| | | } |
| | | |
| | | @Override |
| | | public void onExpose() { |
| | | Log.i(TAG, "onExpose"); |
| | | } |
| | | |
| | | @Override |
| | | public void onReward(Map<String, Object> map) { |
| | | Log.i(TAG, "onReward"); |
| | | adShowListener.onReward(); |
| | | } |
| | | |
| | | @Override |
| | | public void onClick() { |
| | | Log.i(TAG, "onClick"); |
| | | } |
| | | |
| | | @Override |
| | | public void onVideoComplete() { |
| | | Log.i(TAG, "onVideoComplete"); |
| | | } |
| | | |
| | | @Override |
| | | public void onClose() { |
| | | Log.i(TAG, "onClose"); |
| | | adShowListener.onClose(); |
| | | } |
| | | |
| | | @Override |
| | | public void onError(AdError adError) { |
| | | Log.i(TAG, "onError:" + adError.getErrorMsg()); |
| | | adLoadListener.onError(adError.getErrorMsg()); |
| | | } |
| | | }); |
| | | rewardVideoAD.loadAD(); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 渲染模板和填充广告 |
| | |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onRewardArrived(boolean b, int i, Bundle bundle) { |
| | | |
| | | } |
| | | |
| | | //跳过视频播放回调 |
| | | @Override |
| | | public void onSkippedVideo() { |
| | |
| | | }); |
| | | ad.getCsj().showRewardVideoAd(activity, TTAdConstant.RitScenes.CUSTOMIZE_SCENES, "scenes_test"); |
| | | ad.setCsj(null); |
| | | } else if (ad.getGdt2() != null) { |
| | | // 展示广告 |
| | | VideoAdValidity validity = ad.getGdt2().checkValidity(); |
| | | switch (validity) { |
| | | case SHOWED: |
| | | if (showListener != null) |
| | | showListener.onError("广告已经展示过!"); |
| | | return; |
| | | // 在视频缓存成功后展示,以省去用户的等待时间,提升用户体验 |
| | | case NONE_CACHE: |
| | | if (showListener != null) |
| | | showListener.onError("广告素材未缓存成功!"); |
| | | return; |
| | | case OVERDUE: |
| | | if (showListener != null) |
| | | showListener.onError("广告已经过期!"); |
| | | return; |
| | | case VALID: |
| | | // 有效广告 |
| | | break; |
| | | } |
| | | // 在视频缓存成功后展示,以省去用户的等待时间,提升用户体验 |
| | | ad.getGdt2().showAD(null); |
| | | } |
| | | |
| | | } |
| | |
| | | |
| | | interface IGDTAdLoadListener { |
| | | public void onSuccess(List<NativeExpressADView> adList); |
| | | |
| | | public void onSuccess2(List<NativeExpressADData2> adList); |
| | | } |
| | | |
| | | interface ICSJAdLoadListener { |
| | | public void onSuccess(TTRewardVideoAd ad); |
| | | |
| | | public void onError(String msg); |
| | | } |
| | | |
| | | interface IGDT2AdLoadListener { |
| | | public void onSuccess(ExpressRewardVideoAD rewardVideoAD); |
| | | |
| | | public void onError(String msg); |
| | | } |