/*
* Copyright (c) 2015 [1076559197@qq.com | tchen0707@gmail.com]
*
* Licensed under the Apache License, Version 2.0 (the "License”);
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.youku.player.plugin;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.Bitmap.CompressFormat;
import android.graphics.drawable.BitmapDrawable;
import android.os.Handler;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.domob.android.ads.DomobAdManager.ErrorCode;
import cn.domob.android.ads.DomobSceneInfo;
import cn.domob.android.ads.DomobVideoInterstitialAd;
import cn.domob.android.ads.DomobVideoInterstitialAdListener;
import com.baseproject.image.DiskLruCache;
import com.baseproject.image.ImageCache;
import com.baseproject.image.ImageResizer;
import com.baseproject.image.Utils;
import com.baseproject.network.YoukuAsyncTask;
import com.baseproject.utils.Logger;
import com.baseproject.utils.Util;
import com.mobisage.android.MobiSageAdProductPlacement;
import com.mobisage.android.MobiSageAdProductPlacementListener;
import com.mobisage.android.MobiSageManager;
import com.punchbox.ads.AdRequest;
import com.punchbox.ads.InterstitialAd;
import com.punchbox.exception.PBException;
import com.punchbox.listener.AdListener;
import com.youku.player.ad.AdForward;
import com.youku.player.ad.AdVender;
import com.youku.player.base.GoplayException;
import com.youku.player.base.YoukuBasePlayerActivity;
import com.youku.player.config.MediaPlayerConfiguration;
import com.youku.player.goplay.AdvInfo;
import com.youku.player.goplay.IGetAdvCallBack;
import com.youku.player.goplay.PlayerCustomInfoManager;
import com.youku.player.goplay.Profile;
import com.youku.player.goplay.StaticsUtil;
import com.youku.player.goplay.VideoAdvInfo;
import com.youku.player.module.PlayerCustomErrorInfo;
import com.youku.player.module.PlayerCustomInfo;
import com.youku.player.module.VideoUrlInfo;
import com.youku.player.module.VideoUrlInfo.Source;
import com.youku.player.ui.R;
import com.youku.player.ui.interf.IGetVideoAdvService;
import com.youku.player.ui.interf.IMediaPlayerDelegate;
import com.youku.player.ui.interf.IPlayerCustomCallback;
import com.youku.player.util.DetailMessage;
import com.youku.player.util.DisposableStatsUtils;
import com.youku.player.util.SessionUnitil;
import com.youku.player.util.URLContainer;
//domob ad
//mobisage
//punchbox
public class PluginFullScreenPauseAD extends PluginOverlay implements
DetailMessage {
LayoutInflater mLayoutInflater;
View containerView;
TextView endPage;
YoukuBasePlayerActivity mActivity;
IMediaPlayerDelegate mediaPlayerDelegate;
private ImageView closeBtn;
private ImageView adImageView;
private int mAdType = AdVender.YOUKU;
private int mAdForward = AdForward.BROWSER;
// punchbox ad
private LinearLayout mPunchboxContainer;
private com.punchbox.ads.InterstitialAd mPunchboxAd = null;
private AdPunchBoxListener mPunchBoxListener = null;
// mobisage ad
private LinearLayout mMobisageContainer;
MobiSageAdProductPlacement mMobisageAd = null;
private AdMobisageListener mMobisageListener;
LayoutParams mParams;
//domob ad
private RelativeLayout mDomobContainer;
private DomobVideoInterstitialAd mDomobAd = null;
private AdDomobListener mDomobListener = null;
private static Handler mHandler = new Handler();
public PluginFullScreenPauseAD(YoukuBasePlayerActivity context,
IMediaPlayerDelegate mediaPlayerDelegate) {
super(context, mediaPlayerDelegate);
this.mediaPlayerDelegate = mediaPlayerDelegate;
mActivity = context;
mLayoutInflater = LayoutInflater.from(context);
init(context);
}
private void init(Context context) {
containerView = mLayoutInflater.inflate(
R.layout.yp_plugin_player_popup_ad, null);
addView(containerView);
findView();
}
private void findView() {
closeBtn = (ImageView) containerView
.findViewById(R.id.btn_close_pausead);
adImageView = (ImageView) containerView
.findViewById(R.id.plugin_pause_ad_image);
mPunchboxContainer = (LinearLayout) containerView
.findViewById(R.id.custom_fulladd);
closeBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
PluginFullScreenPauseAD.this.setVisible(false);
}
});
adImageView.setOnClickListener(null);
// init mobisage view
mMobisageContainer = (LinearLayout) containerView
.findViewById(R.id.ad_mobisage);
mDomobContainer = (RelativeLayout) containerView
.findViewById(R.id.ad_domobContainer);
containerView.setVisibility(View.GONE);
}
// private void showLoading() {
// myEndLoading.setVisibility(View.VISIBLE);
// myEndLoading.startAnimation();
// }
//
// private void hideLoading() {
// myEndLoading.stopAnimation();
// myEndLoading.setVisibility(View.GONE);
// }
// private OnClickListener clickListener = new OnClickListener() {
//
// @Override
// public void onClick(View v) {
// switch (v.getId()) {
// case R.id.btn_close: {
// PluginFullScreenPauseAD.this.setVisible(false);
// break;
// }
// default:
// break;
// }
// };
// };
private String TAG = "PluginFullScreenPauseAD";
protected VideoAdvInfo pauseADVideoAdvInfo = null;
@Override
public void onBufferingUpdateListener(int percent) {
}
@Override
public void onCompletionListener() {
}
@Override
public boolean onErrorListener(int what, int extra) {
return false;
}
@Override
public void OnPreparedListener() {
}
@Override
public void OnSeekCompleteListener() {
}
@Override
public void OnVideoSizeChangedListener(int width, int height) {
}
@Override
public void OnTimeoutListener() {
}
@Override
public void OnCurrentPositionChangeListener(int currentPosition) {
if (!firstLoaded) {
firstLoaded = true;
}
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
dismissPauseAD();
}
});
}
@Override
public void onLoadedListener() {
// pauseADcanceled = false;
}
@Override
public void onLoadingListener() {
// pauseADcanceled = true;
}
@Override
public void onUp() {
}
@Override
public void onDown() {
}
@Override
public void onFavor() {
}
@Override
public void onUnFavor() {
}
@Override
public void newVideo() {
}
@Override
public void onVolumnUp() {
}
@Override
public void onVolumnDown() {
}
@Override
public void onMute(boolean mute) {
}
@Override
public void onVideoChange() {
firstLoaded = false;
}
@Override
public void onVideoInfoGetting() {
}
@Override
public void onVideoInfoGetted() {
}
@Override
public void onVideoInfoGetFail(boolean needRetry) {
}
@Override
public void setVisible(boolean visible) {
if (visible) {
containerView.setVisibility(View.VISIBLE);
} else {
dismissPauseAD();
}
}
@Override
public void onPluginAdded() {
super.onPluginAdded();
containerView.setVisibility(View.GONE);
}
public ImageResizer getImageWorker() {
return mActivity.mImageWorker;
}
@Override
public void onNotifyChangeVideoQuality() {
}
@Override
public void onRealVideoStart() {
}
@Override
public void onADplaying() {
}
private boolean pauseADcanceled = false;
private boolean isVideoNoAdv() {
VideoUrlInfo videoInfo = mMediaPlayerDelegate.videoInfo;
boolean notFromYouku = videoInfo.mSource != Source.YOUKU;
if (notFromYouku) {
Logger.d("PlayFlow", "PluginImageAD->isVideoNoAdv = true");
return true;
}
boolean isWifi = Util.isWifi();
boolean isLocalVideo = isLocalVideo(videoInfo);
if (!isWifi && isLocalVideo) {
Logger.d("PlayFlow", "PluginImageAD->isVideoNoAdv = true");
return true;
}
Logger.d("PlayFlow", "PluginImageAD->isVideoNoAdv = false");
return false;
}
private boolean isLocalVideo(VideoUrlInfo videoInfo) {
if (videoInfo == null) {
return false;
}
return videoInfo.playType.equals(StaticsUtil.PLAY_TYPE_LOCAL);
}
/**
* 开始获取暂停广�?
*/
public void showPauseAD() {
Logger.e("PlayFlow", "暂停广告showPauseAD id:"
+ mMediaPlayerDelegate.videoInfo.getVid());
if (mMediaPlayerDelegate.isADShowing) {
return;
}
if (isVideoNoAdv() || Profile.from == Profile.PHONE_BROWSER) {
return;
}
final boolean isOfflineAd = isLocalVideo(mMediaPlayerDelegate.videoInfo);
// 只有youku请求离线广告
if (isOfflineAd && !MediaPlayerConfiguration.getInstance().showOfflineAd())
return;
pauseADcanceled = false;
// IGetVideoAdvService getVideoAdvService = new GetVideoAdvService();
PlayerCustomInfoManager customInfoManager = new PlayerCustomInfoManager();
customInfoManager.getPlayerCustomInfo(mMediaPlayerDelegate.videoInfo.getVid(), new IPlayerCustomCallback(){
@Override
public void onSuccess(PlayerCustomInfo playerCustomInfo) {
// TODO Auto-generated method stub
Logger.d("PlayFlow","pause ad, get player custom info atm: " + playerCustomInfo.getAtm());
String atm = playerCustomInfo.getAtm();
String token = playerCustomInfo.getToken();
getPauseAd(atm,isOfflineAd);
}
@Override
public void onError(PlayerCustomErrorInfo errorInfo) {
// TODO Auto-generated method stub
int errorCode = errorInfo.getErrorCode();
Logger.e("PlayFlow","pause ad, verify client_id:" + errorCode+ " des: " + errorInfo.getDescription());
getPauseAd("",isOfflineAd);
}
@Override
public void onFailed(GoplayException e) {
// TODO Auto-generated method stub
Logger.e("PlayFlow","pause ad, get atm error:" + e.getErrorInfo());
getPauseAd("",isOfflineAd);
}
});
}
private void getPauseAd(String atm,boolean isOfflineAd){
IGetVideoAdvService getVideoAdvService = com.youku.player.util.RemoteInterface.getVideoAdvService;
if (!TextUtils.isEmpty(mMediaPlayerDelegate.videoInfo.getVid())) {
getVideoAdvService.getVideoAdv(atm,false,
mMediaPlayerDelegate.videoInfo.getVid(), mActivity,
mMediaPlayerDelegate.isFullScreen, isOfflineAd,
new IGetAdvCallBack() {
@Override
public void onSuccess(VideoAdvInfo videoAdvInfo) {
pauseADVideoAdvInfo = videoAdvInfo;
if (videoAdvInfo != null) {
for (AdvInfo advInfo : videoAdvInfo.VAL) {
if ("2".equals(advInfo.VT)) {
DisposableStatsUtils
.disposePausedVC(advInfo);
videoAdvInfo.VAL.remove(advInfo);
}
}
}
if (pauseADVideoAdvInfo != null) {
int size = pauseADVideoAdvInfo.VAL.size();
if (size == 0) {
mADURL = "";
Logger.d("PlayFlow", "暂停广告VC:为空");
}
for (int i = 0; i < size; i++) {
mADURL = pauseADVideoAdvInfo.VAL.get(i).RS;
mADClickURL = pauseADVideoAdvInfo.VAL
.get(i).CU;
mAdForward = pauseADVideoAdvInfo.VAL.get(i).CUF;
mAdType = pauseADVideoAdvInfo.VAL.get(i).SDKID;
if (mAdType == AdVender.YOUKU
&& mADURL != null
&& !mADURL.equals("")) {
DisposableStatsUtils
.disposePausedSUS(pauseADVideoAdvInfo.VAL
.get(i));
DisposableStatsUtils
.disposePausedVC(pauseADVideoAdvInfo.VAL
.get(i));
}
}
}
// 用于测试 假设每次都能取到图片
// mADURL =
// "http://g4.ykimg.com/11270F1F46509C3F5716DA0123193CA669B69C-09D5-BA6A-22B6-2EE5F6CD4A55";
Logger.d("PlayFlow", "暂停广告地址 imageURL--->" + mADURL);
if (mAdType == AdVender.YOUKU
&& (mADURL == null || mADURL.equals("")))
return;
showADImage();
}
@Override
public void onFailed(GoplayException e) {
disposeAdLoss(URLContainer.AD_LOSS_STEP2);
}
});
}
}
private String mADURL;
private String mADClickURL;
/**
* 获取暂停广告信息去加�?
*/
protected void showADImage() {
if ((mediaPlayerDelegate != null && !mediaPlayerDelegate.isFullScreen)
|| mActivity.isFinishing()) {
disposeAdLoss(URLContainer.AD_LOSS_STEP1);
return;
}
// 显示暂停广告
AdvInfo advInfo = null;
try {
// 显示广告的时候是使用
advInfo = getAdvInfo();
if (advInfo == null) {
Logger.e("PlayFlow", "暂停广告显示 SUS:为空");
return;
}
} catch (Exception e) {
e.printStackTrace();
Logger.d("DisposableHttpTask", "暂停广告显示 SUS为空");
} finally {
if (advInfo != null) {
Logger.d("PlayFlow", "暂停广告SDK --->" + mAdType);
switch (mAdType) {
case AdVender.YOUKU:
loadImage(adImageView, mADURL, advInfo);
break;
case AdVender.PUNCHBOX:
startPunchBoxAd();
break;
case AdVender.ADSAGE:
startMobisageAd();
break;
case AdVender.DOMOB:
startDomobAd();
break;
}
mActivity.releaseInvestigate();
}
}
}
public void loadImage(final ImageView imageView, final String url,
final AdvInfo advInfo) {
setAdType(AdVender.YOUKU);
new YoukuAsyncTask<Void, Void, Bitmap>() {
private boolean isLoaded = false;
@Override
protected Bitmap doInBackground(Void... Void) {
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (!isLoaded) {
disposeAdLoss(URLContainer.AD_LOSS_STEP4);
}
cancel(true);
}
}, 30000);
Bitmap bitmap = loadImageFromUrl(url);
return bitmap;
}
@Override
protected void onPostExecute(Bitmap d) {
if (d == null) {
return;
}
isLoaded = true;
if (!mediaPlayerDelegate.isFullScreen) {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
return;
}
if (!pauseADcanceled && isContainerViewHide()) {
showADImageWhenLoaded();
Logger.e("PlayFlow", "暂停广告加载成功");
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
removeAllAd();
imageView.setImageBitmap(d);
}
}.execute();
}
private boolean isContainerViewHide() {
return containerView.getVisibility() != View.VISIBLE;
}
private Bitmap loadImageFromUrl(String url) {
URL u;
InputStream i = null;
Bitmap d = null;
DiskLruCache cache = null;
try {
u = new URL(url);
d = getImageFromCache(url);
if (d != null) {
return d;
}
i = (InputStream) u.getContent();
} catch (Exception e) {
}
if (mActivity != null && mActivity.mImageWorker != null
&& mActivity.mImageWorker.getImageCache() != null) {
cache = mActivity.mImageWorker.getImageCache().getDiskCache();
}
if (cache == null) {
return null;
}
final String fileName = Utils.urlToFileName(url);
final File cacheFile = new File(cache.createFilePath(fileName));
BufferedOutputStream out = null;
try {
BitmapDrawable bitDrawable;
bitDrawable = (BitmapDrawable) BitmapDrawable.createFromStream(i,
"src");
if (bitDrawable == null) {
return null;
}
d = bitDrawable.getBitmap();
if (d != null) {
addImageToCache(url, d);
}
out = new BufferedOutputStream(new FileOutputStream(cacheFile),
Utils.IO_BUFFER_SIZE);
d.compress(CompressFormat.PNG, 85, out);
out.flush();
} catch (final IOException e) {
} catch (OutOfMemoryError e) {
} finally {
if (out != null) {
try {
out.close();
} catch (final IOException e) {
Logger.e(TAG, "Error in downloadBitmap - " + e);
}
}
}
return d;
}
private Bitmap getImageFromCache(String url) {
Bitmap d = null;
ImageCache cache;
if (mActivity != null && mActivity.mImageWorker != null) {
cache = mActivity.mImageWorker.getImageCache();
} else {
return d;
}
if (cache != null) {
d = cache.getBitmapFromMemCache(url);
if (d == null) {
d = cache.getBitmapFromDiskCache(url);
}
}
return d;
}
private void addImageToCache(String url, Bitmap bitmap) {
ImageCache cache = null;
if (mActivity != null && mActivity.mImageWorker != null) {
cache = mActivity.mImageWorker.getImageCache();
}
if (cache != null) {
cache.addBitmapToCache(url, bitmap);
}
}
/**
* 暂停广告获取成功 去显�?
*/
private void showADImageWhenLoaded() {
if (null != mADClickURL && TextUtils.getTrimmedLength(mADClickURL) > 0) {
adImageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Logger.e("PlayFlow", "点击:" + mADClickURL);
AdvInfo advInfo = getAdvInfo();
// 用户点击跳转发送CUM
DisposableStatsUtils.disposeCUM(advInfo);
dismissPauseAD();
if (mADClickURL.endsWith(".apk")
&& IMediaPlayerDelegate.mIDownloadApk != null
&& mediaPlayerDelegate != null && !Util.isWifi()) {
creatSelectDownloadDialog(mActivity);
return;
}
new AdvClickProcessor().processAdvClick(mActivity,
mADClickURL, mAdForward);
}
});
} else {
adImageView.setOnClickListener(null);
}
setVisible(true);
}
// 当在2G/3G网络下,让用户选择是否下载
private void creatSelectDownloadDialog(Activity activity) {
Dialog alertDialog = new AlertDialog.Builder(activity)
.setMessage("您当前处于非WiFi网络环境,请确定是否继续下载?")
.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
new AdvClickProcessor().processAdvClick(mActivity,
mADClickURL, mAdForward);
}
})
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).create();
alertDialog.setCancelable(false);
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.show();
}
/**
* 获取广告信息
*
* @return
*/
private AdvInfo getAdvInfo() {
try {
return pauseADVideoAdvInfo.VAL.get(0);
} catch (Exception e) {
}
return null;
}
/**
* 不显示暂停广告蒙�?
*/
public void dismissPauseAD() {
pauseADcanceled = true;
if (containerView.getVisibility() == View.VISIBLE) {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
containerView.setVisibility(View.GONE);
if (mPunchboxAd != null) {
mPunchboxAd.dismiss();
mPunchboxContainer.removeAllViews();
mPunchboxAd = null;
}
if (mMobisageAd != null) {
mMobisageAd.destoryAdView();
mMobisageContainer.removeAllViews();
mMobisageAd = null;
}
if (mDomobAd != null) {
mDomobAd.closeVideoInterstitialAd();
mDomobContainer.removeAllViews();
mDomobAd = null;
}
}
});
if (mAdType == AdVender.YOUKU) {
AdvInfo advInfo = getAdvInfo();
DisposableStatsUtils.disposePausedSUE(advInfo);
}
}
}
@Override
public void onRealVideoStarted() {
}
@Override
public void onStart() {
}
@Override
public void onClearUpDownFav() {
}
@Override
public void onPause() {
}
boolean firstLoaded = false;
@Override
public void back() {
}
@Override
public void onPlayNoRightVideo(GoplayException e) {
// TODO Auto-generated method stub
}
@Override
public void onPlayReleateNoRightVideo() {
// TODO Auto-generated method stub
}
private void disposeAdLoss(int step) {
DisposableStatsUtils.disposeAdLoss(mActivity, step,
SessionUnitil.playEvent_session, URLContainer.AD_LOSS_MP);
}
private void setAdType(int adType) {
mAdType = adType;
switch (adType) {
case AdVender.PUNCHBOX: {
closeBtn.setVisibility(View.GONE);
adImageView.setVisibility(View.GONE);
mMobisageContainer.setVisibility(View.GONE);
mDomobContainer.setVisibility(View.GONE);
mPunchboxContainer.setVisibility(View.VISIBLE);
break;
}
case AdVender.ADSAGE: {
closeBtn.setVisibility(View.GONE);
adImageView.setVisibility(View.GONE);
mPunchboxContainer.setVisibility(View.GONE);
mDomobContainer.setVisibility(View.GONE);
mMobisageContainer.setVisibility(View.VISIBLE);
break;
}
case AdVender.DOMOB: {
closeBtn.setVisibility(View.GONE);
adImageView.setVisibility(View.GONE);
mPunchboxContainer.setVisibility(View.GONE);
mMobisageContainer.setVisibility(View.GONE);
mDomobContainer.setVisibility(View.VISIBLE);
break;
}
default: {
mPunchboxContainer.setVisibility(View.GONE);
mMobisageContainer.setVisibility(View.GONE);
mDomobContainer.setVisibility(View.GONE);
adImageView.setVisibility(View.VISIBLE);
closeBtn.setVisibility(View.VISIBLE);
break;
}
}
}
private void removeAllAd() {
if (mPunchboxAd != null) {
mPunchboxAd.dismiss();
mPunchboxContainer.removeAllViews();
mPunchboxAd = null;
}
if (mMobisageAd != null) {
mMobisageAd.destoryAdView();
mMobisageContainer.removeAllViews();
mMobisageAd = null;
}
if (mDomobAd != null) {
mDomobAd.closeVideoInterstitialAd();
mDomobContainer.removeAllViews();
mDomobAd = null;
}
}
public void release() {
if (mPunchboxAd != null) {
mPunchboxAd.destroy();
mPunchboxAd = null;
}
if (mMobisageAd != null) {
mMobisageAd.destoryAdView();
mMobisageAd = null;
}
if (mDomobAd != null) {
mDomobAd.closeVideoInterstitialAd();
mDomobContainer.removeAllViews();
mDomobAd = null;
}
PluginImageAD.isMobiSageSDKInit = false;
PluginImageAD.releasePunchboxSdk();
}
// PunchBox ad related
private void startPunchBoxAd() {
setAdType(AdVender.PUNCHBOX);
PluginImageAD.initPunchboxSdk();
removeAllAd();
mPunchboxAd = new InterstitialAd(mActivity);
mPunchboxAd.setCloseMode(1);
if (mPunchBoxListener == null) {
mPunchBoxListener = new AdPunchBoxListener();
}
mPunchboxAd.setAdListener(mPunchBoxListener);
mPunchboxAd.donotReloadAfterClose();
AdRequest adRequest = new AdRequest();
adRequest.setOrientation(2);
mPunchboxAd.loadAd(adRequest);
Logger.d("PlayFlow", "start to show punchbox pause ad");
AdvInfo advInfo = getAdvInfo();
DisposableStatsUtils.disposePausedSUS(advInfo);
}
private class AdPunchBoxListener implements AdListener {
@Override
public void onDismissScreen() {
// dismissPauseAD();
}
@Override
public void onFailedToReceiveAd(PBException arg0) {
disposeAdLoss(URLContainer.AD_LOSS_STEP4);
}
@Override
public void onPresentScreen() {
if (mediaPlayerDelegate != null && mediaPlayerDelegate.isFullScreen
&& mAdType == AdVender.PUNCHBOX && !pauseADcanceled) {
setVisible(true);
setVisibility(View.VISIBLE);
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
}
@Override
public void onReceiveAd() {
try {
if (mPunchboxAd != null && mPunchboxAd.isReady()
&& mAdType == AdVender.PUNCHBOX) {
mPunchboxContainer.removeAllViews();
mPunchboxAd.show(mPunchboxContainer, null);
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
} catch (Exception e) {
// 当设置的scale不在范围内,或者isReady()属性为false
e.printStackTrace();
}
}
}
// mobisage ad
private void startMobisageAd() {
setAdType(AdVender.ADSAGE);
removeAllAd();
if (!PluginImageAD.isMobiSageSDKInit) {
MobiSageManager.getInstance().setPublisherID(mActivity,
AdVender.MobiSage_ID);
PluginImageAD.isMobiSageSDKInit = true;
}
DisplayMetrics displayMetrics = new DisplayMetrics();
mActivity.getWindowManager().getDefaultDisplay()
.getMetrics(displayMetrics);
mMobisageAd = new MobiSageAdProductPlacement(mActivity, true);
if (mMobisageListener == null) {
mMobisageListener = new AdMobisageListener();
}
mMobisageAd.setMobiSageAdProductPlacementListener(mMobisageListener);
if (mParams == null) {
mParams = new LayoutParams((int) displayMetrics.density * 300,
(int) displayMetrics.density * 250);
}
mMobisageContainer.addView(mMobisageAd, mParams);
AdvInfo advInfo = getAdvInfo();
DisposableStatsUtils.disposePausedSUS(advInfo);
}
private class AdMobisageListener implements
MobiSageAdProductPlacementListener {
@Override
public void onMobiSageProductPlacementClick(
MobiSageAdProductPlacement arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMobiSageProductPlacementClose(
MobiSageAdProductPlacement arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMobiSageProductPlacementError(
MobiSageAdProductPlacement arg0) {
disposeAdLoss(URLContainer.AD_LOSS_STEP4);
}
@Override
public void onMobiSageProductPlacementHide(
MobiSageAdProductPlacement arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMobiSageProductPlacementHideWindow(
MobiSageAdProductPlacement arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMobiSageProductPlacementPopupWindow(
MobiSageAdProductPlacement arg0) {
// TODO Auto-generated method stub
}
@Override
public void onMobiSageProductPlacementShow(
MobiSageAdProductPlacement arg0) {
mActivity.runOnUiThread(new Runnable() {
@Override
public void run() {
if (mediaPlayerDelegate != null
&& mediaPlayerDelegate.isFullScreen
&& mAdType == AdVender.ADSAGE && !pauseADcanceled) {
setVisible(true);
setVisibility(View.VISIBLE);
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
}
});
}
}
// Domob ad
private void startDomobAd() {
setAdType(AdVender.DOMOB);
removeAllAd();
mDomobAd = new DomobVideoInterstitialAd(mActivity, AdVender.Domob_ID,
AdVender.Domob_PauseAd_ID, 1200, 1000);
if (mDomobListener == null) {
mDomobListener = new AdDomobListener();
}
mDomobAd.setVideoInterstitialAdListener(mDomobListener);
mDomobAd.loadVideoInterstitialAd();
Logger.d("PlayFlow", "start to show Domob pause ad");
AdvInfo advInfo = getAdvInfo();
DisposableStatsUtils.disposePausedSUS(advInfo);
}
private class AdDomobListener implements DomobVideoInterstitialAdListener {
@Override
public void onVideoInterstitialAdReady() {
if (mDomobAd != null && !pauseADcanceled
&& mAdType == AdVender.DOMOB) {
mDomobAd.showVideoInterstitialAd(getSceneInfo());
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
}
@Override
public void onVideoInterstitialAdPresent() {
if (mediaPlayerDelegate != null && mediaPlayerDelegate.isFullScreen
&& mAdType == AdVender.DOMOB && !pauseADcanceled) {
setVisible(true);
setVisibility(View.VISIBLE);
} else {
disposeAdLoss(URLContainer.AD_LOSS_STEP3);
}
}
@Override
public void onVideoInterstitialAdLeaveApplication() {
}
@Override
public void onVideoInterstitialAdFailed(ErrorCode code) {
disposeAdLoss(URLContainer.AD_LOSS_STEP4);
}
@Override
public void onVideoInterstitialAdDismiss() {
}
@Override
public void onVideoInterstitialAdClicked() {
dismissPauseAD();
}
@Override
public void onLandingPageOpen() {
}
@Override
public void onLandingPageClose() {
}
}
private DomobSceneInfo getSceneInfo() {
DomobSceneInfo sceneInfo = new DomobSceneInfo();
sceneInfo.setContext(mActivity);
sceneInfo.setCoordinatesX(0);
sceneInfo.setCoordinatesY(0);
sceneInfo.setParentViewGroup(mDomobContainer);
sceneInfo.setSceneId("sceneId");
int frameWidth = mDomobContainer.getLayoutParams().width;
int frameHeight = mDomobContainer.getLayoutParams().height;
sceneInfo.setSecureAreaWidth(frameWidth);
sceneInfo.setSecureAreaHeight(frameHeight);
return sceneInfo;
}
}