| | |
| | | package com.weikou.beibeivideo.util.ad; |
| | | |
| | | import android.app.Activity; |
| | | import android.content.Context; |
| | | import android.view.View; |
| | | import android.widget.FrameLayout; |
| | | |
| | | import com.bytedance.sdk.openadsdk.AdSlot; |
| | | import com.bytedance.sdk.openadsdk.TTAdDislike; |
| | | import com.bytedance.sdk.openadsdk.TTAdManager; |
| | | import com.bytedance.sdk.openadsdk.TTAdNative; |
| | | import com.bytedance.sdk.openadsdk.TTFeedAd; |
| | | import com.bytedance.sdk.openadsdk.TTNativeExpressAd; |
| | | 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.comm.util.AdError; |
| | | import com.weikou.beibeivideo.entity.ad.ExpressAdContainer; |
| | | import com.weikou.beibeivideo.util.BeibeiConstant; |
| | |
| | | if (sourceType == SOURCE_CSJ) { |
| | | TTAdManager ttAdManager = TTAdManagerHolder.get(); |
| | | mTTAdNative = ttAdManager.createAdNative(context); |
| | | TTAdManagerHolder.get().requestPermissionIfNecessary(context); |
| | | // TTAdManagerHolder.get().requestPermissionIfNecessary(context); |
| | | } |
| | | } |
| | | |
| | |
| | | */ |
| | | public void loadAd(int widthDP, int heightDP, String pid, int count, final IAdLoadListener adLoadListener) { |
| | | if (sourceType == SOURCE_GDT) { |
| | | loadGDT(pid, count, new IGDTAdLoadListener() { |
| | | loadGDT(pid, widthDP, heightDP, count, new IGDTAdLoadListener() { |
| | | @Override |
| | | public void onSuccess(List<NativeExpressADView> adList) { |
| | | List<ExpressAdContainer> adContainerList = new ArrayList<>(); |
| | | for (NativeExpressADView adView : adList) { |
| | | adContainerList.add(new ExpressAdContainer(adView)); |
| | | } |
| | | if (adList != null) |
| | | for (NativeExpressADView adView : adList) { |
| | | adContainerList.add(new ExpressAdContainer(adView)); |
| | | } |
| | | adLoadListener.onSuccess(adContainerList); |
| | | } |
| | | }, mContext); |
| | | } else if (sourceType == SOURCE_CSJ) { |
| | | loadCSJ(pid, widthDP, heightDP, count, new ICSJAdLoadListener() { |
| | | @Override |
| | | public void onSuccess(List<TTFeedAd> adList) { |
| | | public void onSuccess(List<TTNativeExpressAd> adList) { |
| | | List<ExpressAdContainer> adContainerList = new ArrayList<>(); |
| | | if (adList != null) { |
| | | for (TTFeedAd adView : adList) { |
| | | for (TTNativeExpressAd adView : adList) { |
| | | adContainerList.add(new ExpressAdContainer(adView)); |
| | | } |
| | | } |
| | |
| | | |
| | | /** |
| | | * 加载推荐大图广告 |
| | | * |
| | | * @param adLoadListener |
| | | */ |
| | | public void loadRecommendLargeAd(final IAdLoadListener adLoadListener) { |
| | | //加载大图 |
| | | String pid = null; |
| | | if (sourceType == SOURCE_CSJ) { |
| | | pid = "945375047"; |
| | | pid = "945386135"; |
| | | } else if (sourceType == SOURCE_GDT) { |
| | | pid = BeibeiConstant.GDT_RECOMMAND_NATIVE; |
| | | } |
| | |
| | | int deviceWidth = DimenUtils.getScreenWidth(mContext); |
| | | deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); |
| | | int width = deviceWidth - 20; |
| | | int height = (int) (width * 0.625); |
| | | int height = (int) (width * 0.8); |
| | | loadAd(width, height, pid, 2, adLoadListener); |
| | | } |
| | | |
| | | /** |
| | | * 加载推荐小图广告 |
| | | * |
| | | * @param adLoadListener |
| | | */ |
| | | public void loadRecommendSmallAd(final IAdLoadListener adLoadListener) { |
| | |
| | | int deviceWidth = DimenUtils.getScreenWidth(mContext); |
| | | deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); |
| | | int width = (deviceWidth - 30) / 2; |
| | | int height = (int) (width * 0.625); |
| | | loadAd(640, 320, pid, 1, adLoadListener); |
| | | int height = (int) (width * 0.85); |
| | | loadAd(width, height, pid, 1, adLoadListener); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 加载分类小图 |
| | | * |
| | | * @param adLoadListener |
| | | */ |
| | | public void loadRecommendCategorySmallAd(final IAdLoadListener adLoadListener) { |
| | | //加载大图 |
| | | String pid = null; |
| | | if (sourceType == SOURCE_CSJ) { |
| | | pid = "945375047"; |
| | | } else if (sourceType == SOURCE_GDT) { |
| | | pid = BeibeiConstant.GDT_RECOMMEND_CATEGORY_MIN_NATIVE; |
| | | } |
| | | //获取屏幕的宽 |
| | | int deviceWidth = DimenUtils.getScreenWidth(mContext); |
| | | deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); |
| | | int width = (deviceWidth - 30) / 2; |
| | | int height = (int) (width * 0.85); |
| | | loadAd(width, height, pid, 1, adLoadListener); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 搜索结果页小图 |
| | | * |
| | | * @param adLoadListener |
| | | */ |
| | | public void loadSearchResultSmallAd(int count, final IAdLoadListener adLoadListener) { |
| | | //加载大图 |
| | | String pid = null; |
| | | if (sourceType == SOURCE_CSJ) { |
| | | pid = "945379581"; |
| | | } else if (sourceType == SOURCE_GDT) { |
| | | pid = BeibeiConstant.GDT_SEARCH_RESULT_MIN_NATIVE; |
| | | } |
| | | //获取屏幕的宽 |
| | | int deviceWidth = DimenUtils.getScreenWidth(mContext); |
| | | deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); |
| | | int width = (deviceWidth - 20); |
| | | int height = 75; |
| | | loadAd(width, height, pid, count, adLoadListener); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @param adLoadListener |
| | | * @param context |
| | | */ |
| | | private void loadGDT(String positionId, int count, final IGDTAdLoadListener adLoadListener, Context context) { |
| | | private void loadGDT(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) { |
| | | NativeExpressAD nativeExpressAD = new NativeExpressAD(context, new ADSize(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT), |
| | | positionId, new NativeExpressAD.NativeExpressADListener() { |
| | | |
| | | @Override |
| | | public void onADLoaded(List<NativeExpressADView> list) { |
| | | if (adLoadListener != null) |
| | |
| | | |
| | | @Override |
| | | public void onADExposure(NativeExpressADView nativeExpressADView) { |
| | | |
| | | } |
| | | |
| | | @Override |
| | |
| | | adLoadListener.onSuccess(null); |
| | | } |
| | | }); // 传入Activity |
| | | // 注意:如果您在联盟平台上新建原生模板广告位时,选择了支持视频,那么可以进行个性化设置(可选) |
| | | nativeExpressAD.setVideoOption(new VideoOption.Builder() |
| | | .setAutoPlayPolicy(VideoOption.AutoPlayPolicy.WIFI) // WIFI 环境下可以自动播放视频 |
| | | .setAutoPlayMuted(true) // 自动播放时为静音 |
| | | .build()); // |
| | | nativeExpressAD.setVideoPlayPolicy(VideoOption.VideoPlayPolicy.AUTO); |
| | | nativeExpressAD.loadAD(count); |
| | | } |
| | | |
| | |
| | | AdSlot adSlot = new AdSlot.Builder() |
| | | .setCodeId(codeId) |
| | | .setSupportDeepLink(true) |
| | | .setImageAcceptedSize(width, height) |
| | | .setExpressViewAcceptedSize(width, height) |
| | | .setAdCount(count) //请求广告数量为1到3条 |
| | | .build(); |
| | | mTTAdNative.loadFeedAd(adSlot, new TTAdNative.FeedAdListener() { |
| | | mTTAdNative.loadNativeExpressAd(adSlot, new TTAdNative.NativeExpressAdListener() { |
| | | @Override |
| | | public void onError(int i, String s) { |
| | | adLoadListener.onSuccess(null); |
| | | } |
| | | |
| | | @Override |
| | | public void onFeedAdLoad(List<TTFeedAd> list) { |
| | | public void onNativeExpressAdLoad(List<TTNativeExpressAd> list) { |
| | | adLoadListener.onSuccess(list); |
| | | } |
| | | }); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 渲染模板广告 |
| | | * |
| | | * @param activity |
| | | * @param ad |
| | | * @param fl_ad |
| | | * @param adEventListener |
| | | */ |
| | | public static void render(Activity activity, final ExpressAdContainer ad, final FrameLayout fl_ad, final IAdEventListener adEventListener) { |
| | | fl_ad.removeAllViews(); |
| | | if (ad == null) {//广告为空 |
| | | fl_ad.setVisibility(View.GONE); |
| | | } else { |
| | | fl_ad.setVisibility(View.VISIBLE); |
| | | if (ad.getGdt() != null) { |
| | | // ad.getGdt().setAdEventListener(new AdEventListener() { |
| | | // @Override |
| | | // public void onClick() { |
| | | // |
| | | // } |
| | | // |
| | | // @Override |
| | | // public void onExposed() { |
| | | // |
| | | // } |
| | | // |
| | | // @Override |
| | | // public void onRenderSuccess() { |
| | | // fl_ad.addView(ad.getGdt().getAdView()); |
| | | // } |
| | | // |
| | | // @Override |
| | | // public void onRenderFail() { |
| | | // |
| | | // } |
| | | // |
| | | // @Override |
| | | // public void onAdClosed() { |
| | | // if (adEventListener != null) { |
| | | // adEventListener.closeAd(); |
| | | // } |
| | | // } |
| | | // }); |
| | | ad.getGdt().render(); |
| | | fl_ad.addView(ad.getGdt()); |
| | | |
| | | } else if (ad.getCsj() != null) { |
| | | ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { |
| | | |
| | | @Override |
| | | public void onSelected(int i, String s) { |
| | | if (adEventListener != null) { |
| | | adEventListener.closeAd(); |
| | | } |
| | | } |
| | | |
| | | @Override |
| | | public void onCancel() { |
| | | |
| | | } |
| | | |
| | | @Override |
| | | public void onRefuse() { |
| | | |
| | | } |
| | | }); |
| | | ad.getCsj().render(); |
| | | fl_ad.addView(ad.getCsj().getExpressAdView()); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | interface IGDTAdLoadListener { |
| | | public void onSuccess(List<NativeExpressADView> adList); |
| | | } |
| | | |
| | | interface ICSJAdLoadListener { |
| | | public void onSuccess(List<TTFeedAd> adList); |
| | | public void onSuccess(List<TTNativeExpressAd> adList); |
| | | } |
| | | |
| | | |
| | | public interface IAdLoadListener { |
| | | public void onSuccess(List<ExpressAdContainer> adList); |
| | | } |
| | | |
| | | public interface IAdEventListener { |
| | | public void closeAd(); |
| | | } |
| | | } |