From 8039a1b2fbfa3471b6f726d3e839d7867c81a84f Mon Sep 17 00:00:00 2001
From: admin <weikou2014>
Date: 星期六, 10 十月 2020 18:51:24 +0800
Subject: [PATCH] 资讯与小说集成

---
 BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java |  292 ++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 253 insertions(+), 39 deletions(-)

diff --git a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
index c217327..295d34b 100644
--- a/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
+++ b/BuWanVideo/src/com/weikou/beibeivideo/ui/video/FunshionPlayerFragment.java
@@ -6,6 +6,7 @@
 import android.content.IntentFilter;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
+import android.graphics.Bitmap;
 import android.media.MediaPlayer;
 import android.net.ConnectivityManager;
 import android.net.NetworkInfo;
@@ -17,18 +18,29 @@
 import android.view.View;
 import android.view.View.OnClickListener;
 import android.view.ViewGroup;
+import android.widget.Button;
 import android.widget.FrameLayout;
+import android.widget.ImageView;
+import android.widget.LinearLayout;
 import android.widget.Toast;
 
+import com.androidquery.AQuery;
+import com.androidquery.callback.AjaxStatus;
+import com.androidquery.callback.BitmapAjaxCallback;
+import com.bumptech.glide.Glide;
 import com.fun.xm.Definition;
 import com.fun.xm.FSCallback;
 import com.fun.xm.FSIVideoPlayer;
 import com.fun.xm.FSPlayer;
 import com.fun.xm.FSVideoReqData;
 import com.fun.xm.ad.FSAD;
+import com.fun.xm.ad.FSSRAdData;
 import com.fun.xm.ad.FSThirdAd;
 import com.fun.xm.ad.adloader.FSPreMediaAdLoader;
+import com.fun.xm.ad.adloader.FSSRFeedAdLoader;
+import com.fun.xm.ad.adview.FSFeedAD;
 import com.fun.xm.ad.adview.FSPreMediaView;
+import com.fun.xm.ad.callback.FSFeedAdCallBack;
 import com.fun.xm.ad.callback.FSPreMediaAdCallBack;
 import com.funshion.video.logger.FSLogcat;
 import com.funshion.video.util.FSError;
@@ -41,6 +53,12 @@
 import com.lcjian.library.video.VideoEpisode;
 import com.lcjian.library.video.VideoPlayerController;
 import com.lcjian.library.widget.RatioLayout;
+import com.qq.e.ads.cfg.VideoOption;
+import com.qq.e.ads.nativ.MediaView;
+import com.qq.e.ads.nativ.NativeADMediaListener;
+import com.qq.e.ads.nativ.NativeUnifiedADData;
+import com.qq.e.comm.constants.AdPatternType;
+import com.qq.e.comm.util.AdError;
 import com.weikou.beibeivideo.BasicTextHttpResponseHandler;
 import com.weikou.beibeivideo.BeibeiVideoAPI;
 import com.weikou.beibeivideo.BeibeiVideoApplication;
@@ -50,7 +68,9 @@
 import com.weikou.beibeivideo.entity.VideoDetailInfo;
 import com.weikou.beibeivideo.entity.VideoInfo;
 import com.weikou.beibeivideo.entity.VideoResource;
+import com.weikou.beibeivideo.entity.ad.PlayVideoPreADSetting;
 import com.weikou.beibeivideo.entity.video.FunshionPlayInfo;
+import com.weikou.beibeivideo.ui.ad.PlayVideoPreADFragment;
 import com.weikou.beibeivideo.util.DimenUtils;
 import com.weikou.beibeivideo.util.FunshionConstant;
 import com.weikou.beibeivideo.util.UserUtil;
@@ -100,7 +120,7 @@
     private FrameLayout fl_container, fl_ad;
 
     //椋庤骞垮憡鍔犺浇鍣�
-    private FSPreMediaAdLoader fsPreMediaAdLoader;
+    private FSSRFeedAdLoader fssrFeedAdLoader;
 
     private FSPreMediaView mFSVideoAD;
 
@@ -141,7 +161,7 @@
 
     private void initAd() {
         FSAD.init(getContext().getApplicationContext(), Collections.singletonList(FunshionConstant.AD_ADP), FunshionConstant.AD_PARTENER, FunshionConstant.AD_TOKEN, FunshionConstant.AD_CHANNEL, FunshionConstant.AD_PRE_DOWNLOAD_CHANNEL);
-        fsPreMediaAdLoader = new FSPreMediaAdLoader(getContext(), FunshionConstant.AD_CHANNEL);
+        fssrFeedAdLoader = new FSSRFeedAdLoader(getContext(), FunshionConstant.AD_CHANNEL);
     }
 
     private void loadAD() {
@@ -149,40 +169,7 @@
         int width = fl_ad.getWidth();
         int height = fl_ad.getHeight();
         Log.i(TAG, String.format("fl_ad: width:%s  height:%s", width, height));
-        fsPreMediaAdLoader.loadAD(adid, "", width, height, true, false, new FSPreMediaAdCallBack() {
-            @Override
-            public void onCreate(FSPreMediaView fsadView) {
-                mFSVideoAD = fsadView;
-                fl_ad.removeAllViews();
-                fl_ad.addView(fsadView);
-            }
-
-            @Override
-            public void onCreateThirdAD(List<FSThirdAd> fsThirdAd) {
-
-            }
-
-            @Override
-            public void onClose() {
-                adShowFinish();
-            }
-
-            @Override
-            public void onADLoad() {
-                if (null != mFSVideoAD) {
-                    mFSVideoAD.showAD();
-                }
-            }
-
-            @Override
-            public void onVideoComplete() {
-                adShowFinish();
-            }
-
-            @Override
-            public void onADShow() {
-
-            }
+        fssrFeedAdLoader.loadAD(adid, "", width, height, true, false, new FSFeedAdCallBack() {
 
             @Override
             public void onClick() {
@@ -190,12 +177,238 @@
             }
 
             @Override
-            public void onAdLoadedFail(int param1Int, String param1String) {
-                Log.v(TAG, "onAdLoadedFail param1Int:" + param1Int + " MSG:" + param1String);
-                adShowFinish();
+            public void onAdLoadedFail(int i, String s) {
+                Log.i(TAG,"onAdLoadedFail:"+s);
+            }
+
+            @Override
+            public void onCreate(FSFeedAD fsADView) {
+                Log.i(TAG,"onCreate");
+                NativeUnifiedADData gdtad = fsADView.getAd();
+                FSSRAdData fsad = fsADView.getFSAd();
+                if (null != gdtad) {
+                    //骞跨偣閫氭暟鎹嚜娓叉煋
+                    initGDTSelfRenderView(fsADView, gdtad);
+                }
+                if (null != fsad) {
+                    //椋庤鏁版嵁鑷覆鏌�
+                    initFSSelfRenderView(fsADView, fsad);
+                }
+                if (fsADView.getParent() != null) {
+                    ((ViewGroup) fsADView.getParent()).removeAllViews();
+                }
+                fl_ad.removeAllViews();
+                fl_ad.addView(fsADView);
+                fsADView.render();
+            }
+
+            @Override
+            public void onCreateThirdAD(List<FSThirdAd> list) {
+                Log.i(TAG,"onCreateThirdAD");
+            }
+
+            @Override
+            public void onADShow() {
+                Log.i(TAG,"onADShow");
             }
         });
+
+
     }
+
+    private void initFSSelfRenderView(final FSFeedAD fsADView, FSSRAdData fsad) {
+        if (fsad.isImage()) {
+            ImageView imageView = new ImageView(getContext());
+            Glide.with(this).load(fsad.getMaterial()).into(imageView);
+            List<View> clickableViews = new ArrayList<>();
+            clickableViews.add(imageView);
+            fsADView.bindAdToView(imageView, clickableViews, null);
+        } else if (fsad.isVideo()) {
+            MediaView mediaView = new MediaView(getContext());
+            fsADView.bindMediaView(mediaView, null, null);
+
+            final Button button = new Button(getContext());
+            button.setText("鎵撳紑澹伴煶");
+            button.setOnClickListener(new View.OnClickListener() {
+                @Override
+                public void onClick(View v) {
+                    if (fsADView.isMute()) {
+                        fsADView.setMute(false);
+                        button.setText("鍏抽棴澹伴煶");
+                    } else {
+                        fsADView.setMute(true);
+                        button.setText("鎵撳紑澹伴煶");
+                    }
+                }
+            });
+            List<View> clickableViews = new ArrayList<>();
+            fsADView.bindAdToView(button, clickableViews, null);
+        }
+    }
+
+
+    //骞跨偣閫氬箍鍛婃帶浠�
+    protected AQuery mAQuery;
+    protected Button mDownloadButton;
+    protected MediaView mMediaView;
+    protected ImageView mImagePoster;
+    protected LinearLayout mNative3imgAdContainer;
+
+    //鑷覆鏌搗iew
+    private void initGDTSelfRenderView(FSFeedAD fsADView, NativeUnifiedADData ad) {
+        View mContainer = getLayoutInflater().inflate(R.layout.sr_gdt_ad_view, null);
+        mDownloadButton = mContainer.findViewById(R.id.btn_download);
+        mMediaView = mContainer.findViewById(R.id.gdt_media_view);
+        mImagePoster = mContainer.findViewById(R.id.img_poster);
+        mNative3imgAdContainer = mContainer.findViewById(R.id.native_3img_ad_container);
+        mAQuery = new AQuery(mContainer);
+        int patternType = ad.getAdPatternType();
+        if (patternType == AdPatternType.NATIVE_VIDEO) {
+            ViewGroup.LayoutParams params = mContainer.getLayoutParams();
+            if (null == params) {
+                params = new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT);
+            } else {
+                params.height = FrameLayout.LayoutParams.MATCH_PARENT;
+            }
+            mContainer.setLayoutParams(params);
+
+        }
+        if (patternType == AdPatternType.NATIVE_2IMAGE_2TEXT
+                || patternType == AdPatternType.NATIVE_VIDEO) {
+            mAQuery.id(R.id.img_poster).visibility(View.VISIBLE);
+            mAQuery.id(R.id.img_logo).image(ad.getIconUrl(), false, true);
+            Log.v(TAG, "Imgurl:" + ad.getImgUrl());
+            mAQuery.id(R.id.img_poster).image(ad.getImgUrl(), false, true, 0, 0,
+                    new BitmapAjaxCallback() {
+                        @Override
+                        protected void callback(String url, ImageView iv, Bitmap bm, AjaxStatus status) {
+                            if (iv.getVisibility() == View.VISIBLE) {
+                                iv.setImageBitmap(bm);
+                            }
+                        }
+                    });
+            mAQuery.id(R.id.text_title).textColor(R.color.colorAccent);
+            mAQuery.id(R.id.text_title).text(ad.getTitle());
+            mAQuery.id(R.id.text_desc).text(ad.getDesc());
+        } else if (patternType == AdPatternType.NATIVE_3IMAGE) {
+            mAQuery.id(R.id.img_1).image(ad.getImgList().get(0), false, true);
+            mAQuery.id(R.id.img_2).image(ad.getImgList().get(1), false, true);
+            mAQuery.id(R.id.img_3).image(ad.getImgList().get(2), false, true);
+            mAQuery.id(R.id.native_3img_title).text(ad.getTitle());
+            mAQuery.id(R.id.native_3img_desc).text(ad.getDesc());
+        } else if (patternType == AdPatternType.NATIVE_1IMAGE_2TEXT) {
+            mAQuery.id(R.id.img_logo).image(ad.getImgUrl(), false, true);
+            mAQuery.id(R.id.img_poster).clear();
+            mAQuery.id(R.id.text_title).text(ad.getTitle());
+            mAQuery.id(R.id.text_desc).text(ad.getDesc());
+        }
+
+        List<View> clickableViews = new ArrayList<>();
+        List<View> customClickableViews = new ArrayList<>();
+        // 鎵�鏈夊箍鍛婄被鍨嬶紝娉ㄥ唽mDownloadButton鐨勭偣鍑讳簨浠�
+        clickableViews.add(mDownloadButton);
+        if (ad.getAdPatternType() == AdPatternType.NATIVE_2IMAGE_2TEXT ||
+                ad.getAdPatternType() == AdPatternType.NATIVE_1IMAGE_2TEXT) {
+            // 鍙屽浘鍙屾枃銆佸崟鍥惧弻鏂囷細娉ㄥ唽mImagePoster鐨勭偣鍑讳簨浠�
+            clickableViews.add(mImagePoster);
+        } else if (ad.getAdPatternType() != AdPatternType.NATIVE_VIDEO) {
+            // 涓夊皬鍥惧箍鍛婏細娉ㄥ唽native_3img_ad_container鐨勭偣鍑讳簨浠�
+            clickableViews.add(mNative3imgAdContainer);
+        }
+        //浣滀负customClickableViews浼犲叆锛岀偣鍑讳笉杩涘叆璇︽儏椤碉紝鐩存帴涓嬭浇鎴栬繘鍏ヨ惤鍦伴〉锛屽彧鏈夎棰戝箍鍛婄敓鏁堬紝
+        // 濡傛灉鏄浘鏂囷紝clickableViews鍜宑ustomClickableViews鐐瑰嚮閫昏緫涓�鑷�
+        fsADView.bindAdToView(mContainer, clickableViews, mDownloadButton);
+
+        if (ad.getAdPatternType() == AdPatternType.NATIVE_VIDEO) {
+            // 瑙嗛骞垮憡锛屾敞鍐宮MediaView鐨勭偣鍑讳簨浠�
+            fsADView.post(new Runnable() {
+                @Override
+                public void run() {
+                    Log.v(TAG, "showAd type video 2");
+                    mImagePoster.setVisibility(View.GONE);
+                    mMediaView.setVisibility(View.VISIBLE);
+//                    ad.startVideo();
+                }
+            });
+
+            VideoOption.Builder builder = new VideoOption.Builder();
+
+            builder.setAutoPlayPolicy(VideoOption.AutoPlayPolicy.ALWAYS);
+            builder.setAutoPlayMuted(false);
+            builder.setDetailPageMuted(false);
+            builder.setNeedCoverImage(true);
+            builder.setNeedProgressBar(true);
+            builder.setEnableDetailPage(true);
+            builder.setEnableUserControl(false);
+            VideoOption videoOption = builder.build();
+            fsADView.bindMediaView(mMediaView, videoOption, new NativeADMediaListener() {
+                @Override
+                public void onVideoInit() {
+                    Log.d(TAG, "onVideoInit: ");
+                }
+
+                @Override
+                public void onVideoLoading() {
+                    Log.d(TAG, "onVideoLoading: ");
+                }
+
+                @Override
+                public void onVideoReady() {
+                    Log.d(TAG, "onVideoReady");
+                }
+
+                @Override
+                public void onVideoLoaded(int videoDuration) {
+                    Log.d(TAG, "onVideoLoaded: ");
+                }
+
+                @Override
+                public void onVideoStart() {
+                    Log.d(TAG, "onVideoStart");
+                }
+
+                @Override
+                public void onVideoStop() {
+                    Log.d(TAG, "onVideoStop");
+                }
+
+                @Override
+                public void onVideoPause() {
+                    Log.d(TAG, "onVideoPause: ");
+                }
+
+                @Override
+                public void onVideoResume() {
+                    Log.d(TAG, "onVideoResume: ");
+                }
+
+                @Override
+                public void onVideoClicked() {
+                    Log.d(TAG, "onVideoClicked");
+                }
+
+                @Override
+                public void onVideoCompleted() {
+                    Log.d(TAG, "onVideoCompleted: ");
+                }
+
+                @Override
+                public void onVideoError(AdError error) {
+
+                }
+
+            });
+            ad.startVideo();
+        } else if (ad.getAdPatternType() == AdPatternType.NATIVE_2IMAGE_2TEXT ||
+                ad.getAdPatternType() == AdPatternType.NATIVE_1IMAGE_2TEXT) {
+            // 鍙屽浘鍙屾枃銆佸崟鍥惧弻鏂囷細娉ㄥ唽mImagePoster鐨勭偣鍑讳簨浠�
+            clickableViews.add(mImagePoster);
+        } else {
+            // 涓夊皬鍥惧箍鍛婏細娉ㄥ唽native_3img_ad_container鐨勭偣鍑讳簨浠�
+            clickableViews.add(mNative3imgAdContainer);
+        }
+    }
+
 
     //骞垮憡灞曠ず瀹屾垚
     private void adShowFinish() {
@@ -601,6 +814,7 @@
                 vpc_funshion.setNetworkInfo(networkInfo, false);
             }
         }
+
     }
 
 

--
Gitblit v1.8.0