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