From b2fc802bf35143ed957a86d95e2de49934ea9ea5 Mon Sep 17 00:00:00 2001 From: admin <weikou2014> Date: 星期三, 14 十月 2020 14:09:51 +0800 Subject: [PATCH] 腾讯X5bug修复 --- BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java | 580 +++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 files changed, 516 insertions(+), 64 deletions(-) diff --git a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java index 8ab99ce..c0af154 100644 --- a/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java +++ b/BuWanVideo/src/com/weikou/beibeivideo/util/ad/ExpressAdManager.java @@ -2,7 +2,9 @@ import android.app.Activity; import android.content.Context; +import android.util.Log; import android.view.View; +import android.view.ViewGroup; import android.widget.FrameLayout; import com.bytedance.sdk.openadsdk.AdSlot; @@ -30,19 +32,20 @@ * 淇℃伅娴佸箍鍛婄鐞� */ public class ExpressAdManager { - public final static int SOURCE_GDT = 1;//骞跨偣閫� - public final static int SOURCE_CSJ = 2;//绌垮北鐢� - int sourceType = SOURCE_GDT; + + final static String TAG = "ExpressAdManager"; + + AdUtil.AD_TYPE sourceType = AdUtil.AD_TYPE.gdt; private TTAdNative mTTAdNative; private Context mContext; - public ExpressAdManager(int adSource, Context context) { + public ExpressAdManager(AdUtil.AD_TYPE adSource, Context context) { sourceType = adSource; this.mContext = context; - if (sourceType == SOURCE_CSJ) { + if (sourceType == AdUtil.AD_TYPE.csj) { TTAdManager ttAdManager = TTAdManagerHolder.get(); mTTAdNative = ttAdManager.createAdNative(context); // TTAdManagerHolder.get().requestPermissionIfNecessary(context); @@ -61,7 +64,7 @@ * @param adLoadListener */ public void loadAd(int widthDP, int heightDP, String pid, int count, final IAdLoadListener adLoadListener) { - if (sourceType == SOURCE_GDT) { + if (sourceType == AdUtil.AD_TYPE.gdt) { loadGDT(pid, widthDP, heightDP, count, new IGDTAdLoadListener() { @Override public void onSuccess(List<NativeExpressADView> adList) { @@ -72,8 +75,31 @@ } adLoadListener.onSuccess(adContainerList); } + + @Override + public void onSuccess2(List<NativeExpressADData2> adList) { + + } }, mContext); - } else if (sourceType == SOURCE_CSJ) { + } else if (sourceType == AdUtil.AD_TYPE.gdt2) { + loadGDT2(pid, widthDP, heightDP, count, new IGDTAdLoadListener() { + @Override + public void onSuccess(List<NativeExpressADView> adList) { + + } + + @Override + public void onSuccess2(List<NativeExpressADData2> adList) { + List<ExpressAdContainer> adContainerList = new ArrayList<>(); + if (adList != null) + for (NativeExpressADData2 ad : adList) { + adContainerList.add(new ExpressAdContainer(ad)); + } + adLoadListener.onSuccess(adContainerList); + } + }, mContext); + + } else if (sourceType == AdUtil.AD_TYPE.csj) { loadCSJ(pid, widthDP, heightDP, count, new ICSJAdLoadListener() { @Override public void onSuccess(List<TTNativeExpressAd> adList) { @@ -97,18 +123,23 @@ */ public void loadRecommendLargeAd(final IAdLoadListener adLoadListener) { //鍔犺浇澶у浘 - String pid = null; - if (sourceType == SOURCE_CSJ) { - 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 width = deviceWidth - 6; int height = (int) (width * 0.8); - loadAd(width, height, pid, 2, adLoadListener); + String pid = null; + if (sourceType == AdUtil.AD_TYPE.csj) { + pid = CSJConstant.RECOMMEND_BIG_IMG_AD; + height = (int) (width * 0.56); + } else if (sourceType == AdUtil.AD_TYPE.gdt) { + pid = BeibeiConstant.GDT_RECOMMAND_NATIVE; + } else if (sourceType == AdUtil.AD_TYPE.gdt2) { + pid = GDTConstant.PID_HOME_RECOMMEND_BIG_IMG; + } + //鑾峰彇灞忓箷鐨勫 + + + loadAd(width, height, pid, 1, adLoadListener); } /** @@ -119,9 +150,9 @@ public void loadRecommendSmallAd(final IAdLoadListener adLoadListener) { //鍔犺浇澶у浘 String pid = null; - if (sourceType == SOURCE_CSJ) { + if (sourceType == AdUtil.AD_TYPE.csj) { pid = "945375047"; - } else if (sourceType == SOURCE_GDT) { + } else if (sourceType == AdUtil.AD_TYPE.gdt) { pid = BeibeiConstant.GDT_RECOMMAND_MIN_NATIVE; } //鑾峰彇灞忓箷鐨勫 @@ -134,6 +165,52 @@ /** + * 瑙嗛鎾斁鍣ㄥ簳閮ㄥ皬骞垮憡 + * + * @param adLoadListener + */ + public void loadVideoDetailPlayerBottomAd(final IAdLoadListener adLoadListener) { + //鍔犺浇澶у浘 + String pid = null; + if (sourceType == AdUtil.AD_TYPE.csj) { + pid = "945375047"; + } else if (sourceType == AdUtil.AD_TYPE.gdt2) { + pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS1; + } + //鑾峰彇灞忓箷鐨勫 + int deviceWidth = DimenUtils.getScreenWidth(mContext); + deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); + int width = (deviceWidth - 20); + int height = 80; + loadAd(width, height, pid, 1, adLoadListener); + } + + + /** + * 鐩稿叧鎺ㄨ崘搴曢儴灏忓箍鍛� + * + * @param adLoadListener + */ + public void loadVideoDetailRelativeVideoBottomAd(final IAdLoadListener adLoadListener) { + //鍔犺浇澶у浘 + String pid = null; + if (sourceType == AdUtil.AD_TYPE.csj) { + pid = "945375047"; + } else if (sourceType == AdUtil.AD_TYPE.gdt2) { + pid = GDTConstant.PID_2_VIDEO_DETAIL_PLAY_EXPRESS2; + } + if (mContext == null) + return; + //鑾峰彇灞忓箷鐨勫 + int deviceWidth = DimenUtils.getScreenWidth(mContext); + deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); + int width = (deviceWidth - 20); + int height = (int) (width * 0.5625); + loadAd(width, height, pid, 1, adLoadListener); + } + + + /** * 鍔犺浇鍒嗙被灏忓浘 * * @param adLoadListener @@ -141,9 +218,9 @@ public void loadRecommendCategorySmallAd(final IAdLoadListener adLoadListener) { //鍔犺浇澶у浘 String pid = null; - if (sourceType == SOURCE_CSJ) { + if (sourceType == AdUtil.AD_TYPE.csj) { pid = "945375047"; - } else if (sourceType == SOURCE_GDT) { + } else if (sourceType == AdUtil.AD_TYPE.gdt) { pid = BeibeiConstant.GDT_RECOMMEND_CATEGORY_MIN_NATIVE; } //鑾峰彇灞忓箷鐨勫 @@ -163,9 +240,9 @@ public void loadSearchResultSmallAd(int count, final IAdLoadListener adLoadListener) { //鍔犺浇澶у浘 String pid = null; - if (sourceType == SOURCE_CSJ) { + if (sourceType == AdUtil.AD_TYPE.csj) { pid = "945379581"; - } else if (sourceType == SOURCE_GDT) { + } else if (sourceType == AdUtil.AD_TYPE.gdt) { pid = BeibeiConstant.GDT_SEARCH_RESULT_MIN_NATIVE; } //鑾峰彇灞忓箷鐨勫 @@ -178,25 +255,64 @@ /** - * 瑙嗛璇︽儏椤典俊鎭祦骞垮憡 + * 鍔犺浇瑙嗛鍒楄〃灏忓箍鍛� + * * @param count + * @param columns * @param adLoadListener */ - public void loadVideoDetailAd(int count, final IAdLoadListener adLoadListener) { + public void loadVideoListSmallAd(int count, int columns, final IAdLoadListener adLoadListener) { + //鍔犺浇澶у浘 String pid = null; - if (sourceType == SOURCE_CSJ) { - pid = "945379581"; - } else if (sourceType == SOURCE_GDT) { - pid = BeibeiConstant.GDT_SEARCH_RESULT_MIN_NATIVE; + if (sourceType == AdUtil.AD_TYPE.csj) { + pid = "945406595"; + } else if (sourceType == AdUtil.AD_TYPE.gdt2) { + if (columns == 3) + pid = GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN3; + else if (columns == 2) + pid = GDTConstant.PID_2_VIDEO_LIST_SMALL_AD_COLUMN2; } //鑾峰彇灞忓箷鐨勫 int deviceWidth = DimenUtils.getScreenWidth(mContext); deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); - int width = (deviceWidth - 20); - int height = 75; + int width = 0; + int height = 0; + + if (columns == 2) { + width = (deviceWidth - 30) / 2; + height = (int) (width * 0.85); + } else if (columns == 3) { + width = (deviceWidth - 20 - 9 * 2) / 3; + height = (int) (width * 1.6); + } + loadAd(width, height, pid, count, adLoadListener); } + + + /** + * 鍔犺浇APP閫�鍑哄箍鍛� + * + * @param adLoadListener + */ + public void loadAppExitAd(final IAdLoadListener adLoadListener) { + //鍔犺浇澶у浘 + String pid = null; + if (sourceType == AdUtil.AD_TYPE.csj) { + pid = CSJConstant.APP_EXIT; + } else if (sourceType == AdUtil.AD_TYPE.gdt) { + pid = BeibeiConstant.GDT_EXIT_DIALOG; + } + //鑾峰彇灞忓箷鐨勫 + int deviceWidth = DimenUtils.getScreenWidth(mContext); + deviceWidth = DimenUtils.px2dip(mContext, deviceWidth); + int width = deviceWidth * 3 / 4; + int height = (int) (width / 1.78f); + + loadAd(width, height, pid, 1, adLoadListener); + } + /** * 鍔犺浇骞跨偣閫氬箍鍛� @@ -271,6 +387,42 @@ } /** + * 2.0鐗堟湰骞跨偣閫氬師鐢� + * + * @param positionId + * @param widthDP + * @param heightDP + * @param count + * @param adLoadListener + * @param context + */ + private void loadGDT2(String positionId, int widthDP, int heightDP, int count, final IGDTAdLoadListener adLoadListener, Context context) { + NativeExpressAD2 nativeExpressAD2 = new NativeExpressAD2(context, positionId, new NativeExpressAD2.AdLoadListener() { + @Override + public void onLoadSuccess(List<NativeExpressADData2> list) { + if (adLoadListener != null) + adLoadListener.onSuccess2(list); + } + + @Override + public void onNoAD(AdError adError) { + if (adLoadListener != null) + adLoadListener.onSuccess2(null); + } + }); + + nativeExpressAD2.setAdSize(widthDP, heightDP); + VideoOption2.Builder builder = new VideoOption2.Builder(); + builder.setAutoPlayPolicy(VideoOption2.AutoPlayPolicy.WIFI) // WIFI 鐜涓嬪彲浠ヨ嚜鍔ㄦ挱鏀捐棰� + .setAutoPlayMuted(true) // 鑷姩鎾斁鏃朵负闈欓煶 + .setDetailPageMuted(false) // 瑙嗛璇︽儏椤垫挱鏀炬椂涓嶉潤闊� + .setMaxVideoDuration(0) // 璁剧疆杩斿洖瑙嗛骞垮憡鐨勬渶澶ц棰戞椂闀匡紙闂尯闂达紝鍙崟鐙缃級锛屽崟浣�:绉掞紝榛樿涓� 0 浠h〃鏃犻檺鍒讹紝鍚堟硶杈撳叆涓猴細5<=maxVideoDuration<=60. 姝よ缃細褰卞搷骞垮憡濉厖锛岃璋ㄦ厧璁剧疆 + .setMinVideoDuration(0); // 璁剧疆杩斿洖瑙嗛骞垮憡鐨勬渶灏忚棰戞椂闀匡紙闂尯闂达紝鍙崟鐙缃級锛屽崟浣�:绉掞紝榛樿涓� 0 浠h〃鏃犻檺鍒讹紝 姝よ缃細褰卞搷骞垮憡濉厖锛岃璋ㄦ厧璁剧疆 + nativeExpressAD2.setVideoOption2(builder.build()); + nativeExpressAD2.loadAd(count); + } + + /** * 绌垮北鐢插箍鍛� * * @param codeId @@ -302,58 +454,79 @@ /** - * 娓叉煋妯℃澘骞垮憡 + * 娓叉煋妯℃澘鍜屽~鍏呭箍鍛� * * @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(); + public static void renderAndFillAd(Activity activity, final ExpressAdContainer ad, final FrameLayout fl_ad, final IAdEventListener adEventListener) { + 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(); -// } -// } -// }); + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt()) { + return; + } + fl_ad.removeAllViews(); ad.getGdt().render(); + if (ad.getGdt().getParent() != null) { + ((ViewGroup) ad.getGdt().getParent()).removeAllViews(); + } fl_ad.addView(ad.getGdt()); + } else if (ad.getGdt2() != null) { + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) { + return; + } + fl_ad.removeAllViews(); + + ad.getGdt2().setAdEventListener(new AdEventListener() { + @Override + public void onClick() { + + } + + @Override + public void onExposed() { + + } + + @Override + public void onRenderSuccess() { + if (ad.getGdt2().getAdView().getParent() != null) { + ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews(); + } + fl_ad.addView(ad.getGdt2().getAdView()); + } + + @Override + public void onRenderFail() { + + } + + @Override + public void onAdClosed() { + if (adEventListener != null) { + adEventListener.closeAd(ad); + } + } + }); + ad.getGdt2().render(); } else if (ad.getCsj() != null) { + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) { + return; + } + ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { @Override public void onSelected(int i, String s) { if (adEventListener != null) { - adEventListener.closeAd(); + adEventListener.closeAd(ad); } } @@ -368,6 +541,9 @@ } }); ad.getCsj().render(); + if (ad.getCsj().getExpressAdView().getParent() != null) { + ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews(); + } fl_ad.addView(ad.getCsj().getExpressAdView()); } } @@ -375,8 +551,272 @@ } + /** + * 娓叉煋骞垮憡 + * + * @param activity + * @param ad + * @param adRenderListener + * @param adEventListener + */ + public static void renderAd(Activity activity, final ExpressAdContainer ad, final IAdRenderListener adRenderListener, final IAdEventListener adEventListener) { + + if (ad == null) {//骞垮憡涓虹┖ + return; + } + + if (ad.getGdt() != null) { + ad.getGdt().render(); + List<ExpressAdContainer> list = new ArrayList<>(); + list.add(ad); + if (adRenderListener != null) + adRenderListener.onRenderSuccess(list); + } else if (ad.getGdt2() != null) { + ad.getGdt2().setAdEventListener(new AdEventListener() { + @Override + public void onClick() { + + } + + @Override + public void onExposed() { + + } + + @Override + public void onRenderSuccess() { + List<ExpressAdContainer> list = new ArrayList<>(); + list.add(ad); + if (adRenderListener != null) + adRenderListener.onRenderSuccess(list); + } + + @Override + public void onRenderFail() { + List<ExpressAdContainer> list = new ArrayList<>(); + list.add(ad); + if (adRenderListener != null) + adRenderListener.onRenderFail(list); + } + + @Override + public void onAdClosed() { + if (adEventListener != null) + adEventListener.closeAd(ad); + } + }); + ad.getGdt2().render(); + + } else if (ad.getCsj() != null) { + ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() { + @Override + public void onAdClicked(View view, int i) { + + } + + @Override + public void onAdShow(View view, int i) { + + } + + @Override + public void onRenderFail(View view, String s, int i) { + List<ExpressAdContainer> list = new ArrayList<>(); + list.add(ad); + if (adRenderListener != null) + adRenderListener.onRenderFail(list); + } + + @Override + public void onRenderSuccess(View view, float v, float v1) { + Log.d(TAG, "onRenderSuccess"); + List<ExpressAdContainer> list = new ArrayList<>(); + list.add(ad); + if (adRenderListener != null) + adRenderListener.onRenderSuccess(list); + } + }); + if (activity != null) + ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { + + @Override + public void onSelected(int i, String s) { + if (adEventListener != null) { + adEventListener.closeAd(ad); + } + } + + @Override + public void onCancel() { + + } + + @Override + public void onRefuse() { + + } + }); + ad.getCsj().render(); + } + + + } + + /** + * 涓哄箍鍛婄粦瀹氬叧闂簨浠� + * + * @param activity + * @param ad + * @param adEventListener + */ + public static void bindCloseListener(Activity activity, final ExpressAdContainer ad, final IAdEventListener adEventListener) { + + if (ad == null) {//骞垮憡涓虹┖ + return; + } + + if (ad.getGdt() != null) { + return; + } else if (ad.getGdt2() != null) { + ad.getGdt2().setAdEventListener(new AdEventListener() { + @Override + public void onClick() { + + } + + @Override + public void onExposed() { + + } + + @Override + public void onRenderSuccess() { + + } + + @Override + public void onRenderFail() { + } + + @Override + public void onAdClosed() { + if (adEventListener != null) + adEventListener.closeAd(ad); + } + }); + + } else if (ad.getCsj() != null) { + ad.getCsj().setExpressInteractionListener(new TTNativeExpressAd.ExpressAdInteractionListener() { + @Override + public void onAdClicked(View view, int i) { + + } + + @Override + public void onAdShow(View view, int i) { + + } + + @Override + public void onRenderFail(View view, String s, int i) { + + } + + @Override + public void onRenderSuccess(View view, float v, float v1) { + + } + }); + ad.getCsj().setDislikeCallback(activity, new TTAdDislike.DislikeInteractionCallback() { + + @Override + public void onSelected(int i, String s) { + if (adEventListener != null) { + adEventListener.closeAd(ad); + } + } + + @Override + public void onCancel() { + + } + + @Override + public void onRefuse() { + + } + }); + } + + + } + + + /** + * 濉厖骞垮憡 + * + * @param ad + * @param fl_ad + */ + public static void fillAd(final ExpressAdContainer ad, final FrameLayout fl_ad) { + + fl_ad.post(new Runnable() { + @Override + public void run() { + if (ad == null) {//骞垮憡涓虹┖ + fl_ad.setVisibility(View.GONE); + } else { + fl_ad.setVisibility(View.VISIBLE); + if (ad.getGdt() != null) { + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt()) { + return; + } + if (ad.getGdt().getParent() != null) { + ((ViewGroup) ad.getGdt().getParent()).removeAllViews(); + } + fl_ad.removeAllViews(); + fl_ad.addView(ad.getGdt()); + } else if (ad.getGdt2() != null) { + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getGdt2().getAdView()) { + return; + } + if (ad.getGdt2().getAdView().getParent() != null) { + ((ViewGroup) ad.getGdt2().getAdView().getParent()).removeAllViews(); + } + fl_ad.removeAllViews(); + fl_ad.addView(ad.getGdt2().getAdView()); + + } else if (ad.getCsj() != null) { + if (fl_ad.getChildCount() > 0 && fl_ad.getChildAt(0) == ad.getCsj().getExpressAdView()) { + return; + } + if (ad.getCsj().getExpressAdView().getParent() != null) { + ((ViewGroup) ad.getCsj().getExpressAdView().getParent()).removeAllViews(); + } + fl_ad.removeAllViews(); + fl_ad.addView(ad.getCsj().getExpressAdView()); + } + } + if (fl_ad.getChildCount() > 0) { + fl_ad.getChildAt(0).setVisibility(View.VISIBLE); + fl_ad.getChildAt(0).post(new Runnable() { + @Override + public void run() { + + } + }); + } + } + }); + + + } + + interface IGDTAdLoadListener { public void onSuccess(List<NativeExpressADView> adList); + + public void onSuccess2(List<NativeExpressADData2> adList); } interface ICSJAdLoadListener { @@ -388,7 +828,19 @@ public void onSuccess(List<ExpressAdContainer> adList); } - public interface IAdEventListener { - public void closeAd(); + public interface IAdRenderListener { + public void onRenderSuccess(List<ExpressAdContainer> adList); + + public void onRenderFail(List<ExpressAdContainer> adList); } + + public interface IAdEventListener { + public void closeAd(ExpressAdContainer ad); + } + + + public interface IAdShowListener { + public void show(); + } + } -- Gitblit v1.8.0