Commit 1709729b authored by xujialang's avatar xujialang

更新-4

parent d663b069
......@@ -1478,20 +1478,20 @@ com.zl.sdk.out.OutAdManager$Holder -> o.f$b:
1:1:void <clinit>():37:37 -> <clinit>
1:1:void <init>():36:36 -> <init>
1:1:com.zl.sdk.out.OutAdManager access$100():36:36 -> a
com.zl.sdk.out.SLKManager -> o.g:
com.zl.sdk.out.DxManager -> o.g:
android.content.Intent intent -> a
java.lang.String TAG -> b
1:1:void <init>(com.zl.sdk.out.SLKManager$1):5:5 -> <init>
1:1:void <init>(com.zl.sdk.out.DxManager$1):5:5 -> <init>
2:51:void <init>():6:55 -> <init>
1:1:com.zl.sdk.out.SLKManager get():14:14 -> a
1:1:com.zl.sdk.out.DxManager get():14:14 -> a
2:2:void resetIntent(android.content.Intent):58:58 -> a
1:1:android.content.Intent getIntent():62:62 -> b
com.zl.sdk.out.SLKManager$1 -> o.g$a:
com.zl.sdk.out.SLKManager$Holder -> o.g$b:
com.zl.sdk.out.SLKManager INSTANCE -> a
com.zl.sdk.out.DxManager$1 -> o.g$a:
com.zl.sdk.out.DxManager$Holder -> o.g$b:
com.zl.sdk.out.DxManager INSTANCE -> a
1:1:void <clinit>():10:10 -> <clinit>
1:1:void <init>():9:9 -> <init>
1:1:com.zl.sdk.out.SLKManager access$100():9:9 -> a
1:1:com.zl.sdk.out.DxManager access$100():9:9 -> a
com.zl.sdk.outad.BuildConfig -> p.a:
boolean DEBUG -> a
java.lang.String BUILD_TYPE -> c
......
......@@ -2,12 +2,5 @@ package com.zl.sdk;
public class Config {
public static final int REMINDER_TYPE_WEATHER_PURE_AD = 8;
public static final int AD_SCENE_TYPE_NOTIFY = 0;
public static final int AD_SCENE_TYPE_HOME = 1;
public static final int AD_SCENE_TYPE_LOCK = 2;
public static final String KEY_WEATHER_REMINDERS_INFO = "Extra_weather_reminders_info";
public static final String KEY_WEATHER_AD_DATA = "Extra_weather_ad_data";
}
......@@ -17,7 +17,7 @@ public interface KPListener {
*
* @return
*/
boolean iconShow();
boolean iconIsHide();
/**
* 应用是否运行在前台
......
package com.zl.sdk;
import android.annotation.SuppressLint;
import android.app.NotificationManager;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
......@@ -8,11 +9,8 @@ import android.content.IntentFilter;
import androidx.annotation.Keep;
import com.blankj.utilcode.util.AppUtils;
import com.pgl.ssdk.C;
import com.zl.sdk.ad.topOn.TopOnAdManager;
import com.zl.sdk.bean.AdAppInfo;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.ActionFrom;
import com.zl.sdk.out.DialogShowStatusCallback;
......@@ -44,14 +42,11 @@ public final class OutHelp implements KPListener {
private static final String TAG = "OutShow OutHelp ---> ";
private Context mContext = null;
private boolean isDebug = false;
private Intent intent = null;
private String sdkName = null;
//是否第一次轮询
private boolean firstLx = true;
//外展弹窗拉起回调
private DialogShowStatusCallback dialogShowStatusCallback = null;
/**
* 初始化
......@@ -61,18 +56,16 @@ public final class OutHelp implements KPListener {
* @param isDebug appId
* @param isDebug appKey
*/
public void init(Context context, boolean isDebug, String appId, String appKey) {
public void init(Context context, boolean isDebug, String appId, String appKey, String sdkName) {
this.mContext = context;
this.isDebug = isDebug;
this.sdkName = sdkName;
AdAppInfo appInfo = new AdAppInfo("", "");
//初始化广告SDK
AdAppInfo appInfo = new AdAppInfo(appId, appKey);
TopOnAdManager.get().initSDK(context, appInfo);
//Icon初始化
// IcOptManager.getInstance().init(context);
IconHelp.get().init(context);
IconHelp.get().init();
//初始化触发条件
initTriggerConditions();
}
......@@ -87,7 +80,7 @@ public final class OutHelp implements KPListener {
timer.schedule(new TimerTask() {
@Override
public void run() {
showOutAd(firstLx, null);
showOutAd(firstLx);
}
}, 60 * 1000);
}
......@@ -106,11 +99,8 @@ public final class OutHelp implements KPListener {
* 进入外展广告播放逻辑(解锁)
*
* @param actionFrom 动作来源
* @param callback 结果回调
*/
public void showOutAd(ActionFrom actionFrom, DialogShowStatusCallback callback) {
intent = new Intent(mContext, );
dialogShowStatusCallback = callback;
public void showOutAd(ActionFrom actionFrom) {
OutAdManager.get().startShowOutAd(actionFrom);
}
......@@ -118,55 +108,33 @@ public final class OutHelp implements KPListener {
/**
* 进入外展广告播放逻辑 (轮询)
*
* @param isFirst 是否第一次检查
* @param callback 结果回调
* @param isFirst 是否第一次检查
*/
private void showOutAd(boolean isFirst, DialogShowStatusCallback callback) {
intent = new Intent(mContext, );
dialogShowStatusCallback = callback;
private void showOutAd(boolean isFirst) {
OutAdManager.get().checkShowOutAd(isFirst);
}
public void startDialogSuccess() {
LogUtil.d(TAG + "广告SLK 拉起成功");
try {
EventUtils.statRemindOutFgSurpriseStart(EventUtils.SLK_START_OK, "", , actionState);
} catch (Throwable throwable) {
}
}
// /**
// * 设置广告数据
// *
// * @param map 线上配置广告信息
// * @param defaultData 本地默认广告信息
// */
// public void setAdDataMap(Map<Integer, ArrayList<WeatherAdData.NormalAdData>> map, WeatherAdData.NormalAdData defaultData) {
// AdDataManager.get().setAdDataMap(map);
// AdDataManager.get().setDefaultData(defaultData);
// }
public Context getContext() {
return mContext;
}
public Intent getIntent() {
return intent;
}
public boolean isDebug() {
return isDebug;
}
public DialogShowStatusCallback getDialogShowStatusCallback() {
return dialogShowStatusCallback;
public String getSdkName() {
return sdkName;
}
public void cleanDialogCallBack() {
dialogShowStatusCallback = null;
public void clearNotification() {
try {
NotificationManager mNotificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE);
if (mNotificationManager != null) {
mNotificationManager.cancelAll();
}
} catch (Exception e) {
}
}
......@@ -196,21 +164,50 @@ public final class OutHelp implements KPListener {
* 反射获取icon状态
*/
@Override
public boolean iconShow() {
return false;
public boolean iconIsHide() {
try {
Class<?> kpClass = Class.forName("IconHelp");
Method instanceMethod = kpClass.getMethod("get");
Object obj = instanceMethod.invoke(null);
Method isHideMethod = kpClass.getMethod("isIconHided");
Object isInit = isHideMethod.invoke(kpClass.cast(obj));
if (isInit != null) {
return (boolean) isInit;
} else {
return false;
}
} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException |
IllegalAccessException e) {
return false;
}
}
/**
* 反射获取应用是否在前台
*
* @return
*/
@Override
public boolean isAppForeground() {
return AppUtils.isAppForeground(mContext.getPackageName());
try {
Class<?> kpClass = Class.forName("FG");
Method clsMethod = kpClass.getMethod("isAppInFront");
Object isAppInFront = clsMethod.invoke(null);
if (isAppInFront != null) {
return (boolean) isAppInFront;
} else {
return false;
}
} catch (ClassNotFoundException | InvocationTargetException | NoSuchMethodException |
IllegalAccessException e) {
return false;
}
}
/**
* 反射调用保活拉起弹窗
*
* @param intent
* @param callback
* 动态代理获取拉起结果的回调
*/
@Override
public void startOutDialog(Intent intent, DialogShowStatusCallback callback) {
......@@ -219,7 +216,7 @@ public final class OutHelp implements KPListener {
Method surpriseMethod = fgClass.getMethod("surprise");
Class<?> startCallbackClass = Class.forName("StartCallback");
Constructor constructor = startCallbackClass.getConstructor();
Constructor<?> constructor = startCallbackClass.getConstructor();
Object callObj = constructor.newInstance();
Object newCallBack = Proxy.newProxyInstance(
......@@ -238,9 +235,9 @@ public final class OutHelp implements KPListener {
}
public class StartCallbackProxy implements InvocationHandler {
private Object proxyObj;
private DialogShowStatusCallback callback;
public static class StartCallbackProxy implements InvocationHandler {
private final Object proxyObj;
private final DialogShowStatusCallback callback;
public StartCallbackProxy(Object obj, DialogShowStatusCallback callback) {
this.proxyObj = obj;
......@@ -264,7 +261,7 @@ public final class OutHelp implements KPListener {
}
}
public class TriggerReceiver extends BroadcastReceiver {
public static class TriggerReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent == null) {
......@@ -274,7 +271,7 @@ public final class OutHelp implements KPListener {
switch (action) {
case Intent.ACTION_USER_PRESENT: {
LogUtil.d("OutShow ===>>> 解锁");
OutHelp.get().showOutAd(ActionFrom.ACTION_USER_PRESENT, null);
OutHelp.get().showOutAd(ActionFrom.ACTION_USER_PRESENT);
break;
}
case Intent.ACTION_SCREEN_ON: {
......
......@@ -34,6 +34,7 @@ import java.util.Map;
public final class TopOnAdLoadManager {
public static final String TAG = "OutShow TopOnAdLoadManager";
public static final String REGISTER_TAG_WEATHER_PURE_AD = "WeatherPureAdDialog";
private Context mContext;
private final HashMap<String, AdCacheData> adCacheDataMap = new HashMap<>();
......@@ -62,7 +63,7 @@ public final class TopOnAdLoadManager {
//加载成功,调用播放纯广告逻辑
LogUtil.d(TAG + "doWork 222");
OutAdManager.get().doWork(ActionFrom.ACTION_UNKNOWN);
}, IconHelp.get().isIconHided() ? 0 : 1000);
}, IconHelp.get().isIconHide() ? 0 : 1000);
}
@Override
......
......@@ -12,12 +12,12 @@ import com.anythink.nativead.api.ATNativeEventListener;
import com.anythink.nativead.api.ATNativeNetworkListener;
import com.anythink.nativead.api.ATNativePrepareInfo;
import com.anythink.nativead.api.NativeAd;
import com.blankj.utilcode.util.ScreenUtils;
import com.zl.sdk.OutHelp;
import com.zl.sdk.ad.AdBean;
import com.zl.sdk.event.AdsParamsInfo;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.ReportBean;
import com.zl.sdk.util.DpiUtil;
import java.util.Date;
import java.util.HashMap;
......@@ -141,7 +141,7 @@ public class TopOnNativeAdLoad {
});
Map<String, Object> localMap = new HashMap<>();
localMap.put(ATAdConst.KEY.AD_WIDTH, ScreenUtils.getScreenWidth() - dip2px(context, 20));//单位:px,期望展示广告的宽度
localMap.put(ATAdConst.KEY.AD_WIDTH, DpiUtil.getScreenWidth() - dip2px(context, 20));//单位:px,期望展示广告的宽度
localMap.put(ATAdConst.KEY.AD_HEIGHT, dip2px(context, 300));//单位:px,期望展示广告的高度
atNative.setLocalExtra(localMap);
atNative.makeAdRequest();
......
......@@ -4,7 +4,10 @@ import android.os.Build;
import android.text.TextUtils;
import android.util.Log;
import com.zl.sdk.Config;
import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.util.LogUtil;
......@@ -40,7 +43,9 @@ public final class EventUtils {
public static final String SLK_SW_CLOSE = "swClose";
public static final String DIALOG_TYPE_AD = "ad";
public static final String OUT_DIALOG_EXPOSE_ONCE_STAY_TIME = "out_dialog_ex_s_t";
public static final String OUT_DIALOG_ONLY_AD_FAIL = "out_dialog_ad_fail";
public static final String REMINDER_DIALOG_FG_SURPRISE_START = "reminder_dg_fg_surprise_start";
......@@ -50,7 +55,7 @@ public final class EventUtils {
map.put("reason", reason.name().toLowerCase());
map.put("action", String.valueOf(actionState));
map.put("type", type);
map.put("hide", String.valueOf(IconHelp.get().isIconHided()));
map.put("hide", String.valueOf(IconHelp.get().isIconHide()));
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), OUT_DIALOG_FAIL, "", map);
}
......@@ -59,7 +64,7 @@ public final class EventUtils {
map.put("isLock", isLock ? "1" : "0");
map.put("action", String.valueOf(actionState));
map.put("type", type);
map.put("hide", String.valueOf(IconHelp.get().isIconHided()));
map.put("hide", String.valueOf(IconHelp.get().isIconHide()));
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), OUT_DIALOG_SCREEN_LOCK, "", map);
}
......@@ -67,7 +72,7 @@ public final class EventUtils {
Map<String, Object> map = new HashMap<>();
map.put("action", String.valueOf(actionState));
map.put("type", type);
map.put("hide", String.valueOf(IconHelp.get().isIconHided()));
map.put("hide", String.valueOf(IconHelp.get().isIconHide()));
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), OUT_DIALOG_LOCK_SECURE, "", map);
}
......@@ -85,6 +90,34 @@ public final class EventUtils {
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), OUT_DIALOG_LOCK_TRRIGER, "", map);
}
public static void statOutOnlyAdFail(RemindersInfo remindersInfo, WeatherAdData.NormalAdData data, String reason) {
if (remindersInfo == null || data == null) {
return;
}
String adType = data.cpAdtype;
if (TextUtils.isEmpty(adType)) {
return;
}
String type = "";
if (adType.equals(WeatherAdData.CP_AD_TYPE_BANNER)) {
type = "banner";
} else if (adType.equals(WeatherAdData.CP_AD_TYPE_NATIVE)) {
type = "native";
} else if (adType.equals(WeatherAdData.CP_AD_TYPE_CHAPING)) {
type = "interstitial";
}
String scene = "home";
Map<String, Object> map = new HashMap<>();
map.put("adUnitId", data.cpAdslot);
map.put("ad_type", type);
map.put("ad_scenes", scene);
map.put("ad_msg_error", TextUtils.isEmpty(reason) ? "unknown" : reason);
Statistics.getInstance().onEvent(OutHelp.get().getContext(), OUT_DIALOG_ONLY_AD_FAIL, "", map);
}
//广告事件
public static void statAdRequest(ReportBean bean) {
......@@ -169,7 +202,7 @@ public final class EventUtils {
map.put("type", "out");
map.put("reason", exception);
map.put("os", getOSVersion());
map.put("hide", String.valueOf(IconHelp.get().isIconHided()));
map.put("hide", String.valueOf(IconHelp.get().isIconHide()));
map.put("osLevel", String.valueOf(getSdkInt()));
map.put("ad_ready", false);
map.put("ad_action", String.valueOf(isAdReady));
......@@ -180,8 +213,8 @@ public final class EventUtils {
//轮询外展广告
public static void statTimeTriggle() {
Map<String, Object> map = new HashMap<>();
map.put("type", String.valueOf(IconHelp.get().isIconHided()));
// map.put("init", String.valueOf(KplvManager.getInstance().isInit()));
map.put("type", String.valueOf(IconHelp.get().isIconHide()));
map.put("init", String.valueOf(IconHelp.get().isKpInit()));
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), "time_trig", "", map);
}
......@@ -214,7 +247,7 @@ public final class EventUtils {
hashMap.put(AdsParamsInfo.AD_CURRENCYCode, bean.currencyCode);
hashMap.put(AdsParamsInfo.AD_VALUEMICROS, String.valueOf(bean.valueMicros));
hashMap.put(AdsParamsInfo.AD_SCENES, bean.ad_scenes);
hashMap.put("hide", String.valueOf(IconHelp.get().isIconHided()));
hashMap.put("hide", String.valueOf(IconHelp.get().isIconHide()));
if (!TextUtils.isEmpty(bean.eventid)) {
if (!bean.eventid.equals(AdsParamsInfo.F_REQUEST)) {
hashMap.put(AdsParamsInfo.SOURCE, bean.source);
......
......@@ -3,7 +3,6 @@ package com.zl.sdk.event.statistics;
import android.content.Context;
import android.net.NetworkInfo;
import com.blankj.utilcode.util.ObjectUtils;
import com.zl.sdk.OutHelp;
import com.zl.sdk.util.LogUtil;
......@@ -224,7 +223,7 @@ public class StatisticsManager {
NetworkInfo info = Utils.getNetworkInfo(context);
String net = info == null ? "" : info.getTypeName();
map.put(StatisticsKey.NETWORK, net);
if (ObjectUtils.isNotEmpty(dataMap)) {
if (dataMap!=null && !dataMap.isEmpty()) {
map.putAll(dataMap);
}
return map;
......
......@@ -11,8 +11,6 @@ import android.util.DisplayMetrics;
import android.view.Display;
import android.view.WindowManager;
import com.blankj.utilcode.util.LogUtils;
import java.io.Closeable;
import java.io.IOException;
import java.io.PrintWriter;
......@@ -188,32 +186,6 @@ public class Utils {
return "";
}
public static Bitmap getMediaBitmap(Bitmap bitmap, int mediaWidth, int mediaHeight) {
int width = bitmap.getWidth();
int height = bitmap.getHeight();
if (width <= mediaWidth || height <= mediaHeight) {
LogUtils.d(TAG, "width = " + width + ", height = " + height);
return bitmap;
} else {
int w;
int h;
int a = width * mediaHeight;
int b = height * mediaWidth;
if (a == b) {
w = mediaWidth;
h = mediaHeight;
} else if (a > b) {
w = a / height;
h = mediaHeight;
} else {
w = mediaWidth;
h = b / width;
}
LogUtils.d(TAG, "width = " + width + ", height = " + height + ", w = " + w + ", h = " + h);
return Bitmap.createScaledBitmap(bitmap, w, h, true);
}
}
/**
* 打印当前线程的调用堆栈
......
package com.zl.sdk.icon;
import android.app.NotificationManager;
import android.content.Context;
import android.text.TextUtils;
import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.IconAdConfig;
import com.zl.sdk.bean.IconOpt;
import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.util.LogUtil;
import com.zl.sdk.util.SPUtils;
......@@ -29,6 +26,7 @@ public class IconHelp {
//icon是否可见
private volatile boolean iconHide = false;
private volatile boolean kpInit = false;
//重试间隔时间 默认20秒
private long retryShowAdTime = 20 * 1000L;
......@@ -52,8 +50,8 @@ public class IconHelp {
}
public void init(Context context) {
iconHide = !OutHelp.get().iconShow();
public void init() {
iconHide = OutHelp.get().iconIsHide();
LogUtil.d(TAG + "检查icon状态: iconHide=" + iconHide);
if (iconHide) {
......@@ -61,14 +59,28 @@ public class IconHelp {
}
}
public boolean isIconHide() {
return iconHide;
}
public boolean isKpInit() {
return kpInit;
}
public void setKpInit(boolean kpInit) {
this.kpInit = kpInit;
}
/**
* 隐藏icon
* 先判断条件
* icon状态变化
*/
public void changeIconState(boolean isHide) {
if (iconHide == isHide) {
return;
}
iconHide = isHide;
LogUtil.d(TAG + "检查icon状态:设置为是否可见 iconHide=" + iconHide);
LogUtil.d(TAG + "检查icon状态:iconHide=" + iconHide);
if (iconHide) {
iconHadHide();
......@@ -82,40 +94,9 @@ public class IconHelp {
}
}
public void clearNotification() {
try {
NotificationManager mNotificationManager = (NotificationManager) OutHelp.get().getContext().getSystemService(Context.NOTIFICATION_SERVICE);
if (mNotificationManager != null) {
mNotificationManager.cancelAll();
}
} catch (Exception e) {
}
}
private static final String PREF_FILE_NAME = "NetWeatherConfig";
private static final String KEY_WEATHER_HIDE_SHOW_ICON = "h_s_Icon_new";
private static final String KEY_WEATHER_HIDE_SHOW_ICON_AD_CONFIG = "h_s_Icon_Ad_Config";
public IconOpt getIconOptObj() {
IconOpt iconOpt = null;
String json = SPUtils.getInstance(OutHelp.get().getContext(), PREF_FILE_NAME).getString(KEY_WEATHER_HIDE_SHOW_ICON, "");
if (TextUtils.isEmpty(json)) {
return null;
}
try {
JSONObject jsonObject = new JSONObject(json);
iconOpt = new IconOpt();
iconOpt.hide_sw = jsonObject.optInt("hide_sw");
iconOpt.hide_interval_time = jsonObject.optInt("hide_interval_time");
iconOpt.is_screen_off = jsonObject.optBoolean("is_screen_off");
} catch (Exception e) {
}
LogUtil.d("get icon config:" + iconOpt);
return iconOpt;
}
private IconAdConfig getIconAdConfigObj() {
IconAdConfig iconOpt = null;
String json = SPUtils.getInstance(OutHelp.get().getContext(), PREF_FILE_NAME).getString(KEY_WEATHER_HIDE_SHOW_ICON_AD_CONFIG, "");
......@@ -143,17 +124,5 @@ public class IconHelp {
IconHelp.get().setRetryShowAdCount(adConfig.retry_times);
IconHelp.get().setRetryShowAdTime(adConfig.retry_interval_time * 1000L);
}
//移除所有应用内界面
// LaunchStart.getInstance().cleanAllActivityExcludeAds();
//移除所有SLKActivity
// SLKManager.get().removeAllSLKActivity();
//删除所有通知消息
// clearNotification();
}
public boolean isIconHided() {
return iconHide;
}
}
\ No newline at end of file
package com.zl.sdk.icon;
public interface IconStateCallBack {
/**
* icon状态
*
* @param isShow true 显示 false 隐藏
*/
void iconState(boolean isShow);
}
package com.zl.sdk.out;
import android.app.Activity;
import android.content.Context;
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.text.format.DateUtils;
import com.anythink.expressad.reward.player.ATRewardVideoActivity;
import com.applovin.adview.AppLovinFullscreenActivity;
import com.applovin.adview.AppLovinFullscreenThemedActivity;
import com.applovin.sdk.AppLovinWebViewActivity;
import com.blankj.utilcode.util.ActivityUtils;
import com.bytedance.sdk.openadsdk.activity.TTFullScreenExpressVideoActivity;
import com.bytedance.sdk.openadsdk.activity.TTFullScreenVideoActivity;
import com.bytedance.sdk.openadsdk.activity.TTInterstitialActivity;
import com.mbridge.msdk.reward.player.MBRewardVideoActivity;
import com.vungle.ads.internal.ui.VungleActivity;
import com.blankj.utilcode.util.NetworkUtils;
import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.DialogFailReason;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.util.AppOutUtils;
import com.zl.sdk.util.LogUtil;
......@@ -34,33 +23,31 @@ public class CheckHelper {
* 解锁/回到桌面 触发展示的外展广告
*/
public static boolean checkAdCanShowByScene(int actionState) {
// boolean isInit = KplvManager.getInstance().isInit();
// if (!isInit) {
// LogUtil.d(TAG + "(场景检查)保活未初始化,不能展示");
// EventUtils.staDialogFail(DialogFailReason.NO_INIT, actionState, EventUtils.DIALOG_TYPE_AD);
// return false;
// }
//TODO 放在外面判断
boolean isInit = OutHelp.get().isInit();
if (!isInit) {
LogUtil.d(TAG + "(场景检查)保活未初始化,不能展示");
EventUtils.staDialogFail(DialogFailReason.NO_INIT, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
// if (SLKManager.get().existAppOutActivities()) {
// LogUtil.d(TAG + "(场景检查)存在外展弹窗,不能展示");
// EventUtils.staDialogFail(DialogFailReason.EXIST_OUT, actionState, EventUtils.DIALOG_TYPE_AD);
// return false;
// }
if (DxManager.get().existAppOutActivities()) {
LogUtil.d(TAG + "(场景检查)存在外展弹窗,不能展示");
EventUtils.staDialogFail(DialogFailReason.EXIST_OUT, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (!NetworkUtils.isConnected()) {
if (!isNetworkAvailable(OutHelp.get().getContext())) {
LogUtil.d(TAG + "(场景检查)网络未连接,不能展示");
EventUtils.staDialogFail(DialogFailReason.NO_NET, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
// if (FG.isAppInFront()) {
// LogUtil.d(TAG + "(场景检查)应用在前台,不能展示");
// EventUtils.staDialogFail(DialogFailReason.IS_FOREGROUND, actionState, EventUtils.DIALOG_TYPE_AD);
// return false;
// }
if (OutHelp.get().isAppForeground()) {
LogUtil.d(TAG + "(场景检查)应用在前台,不能展示");
EventUtils.staDialogFail(DialogFailReason.IS_FOREGROUND, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (!AppOutUtils.isScreenOn()) {
LogUtil.d(TAG + "(场景检查)手机未亮屏,不能展示");
......@@ -95,14 +82,14 @@ public class CheckHelper {
}
public static boolean checkAdCanShowBySceneNoIcon(int actionState) {
// boolean isInit = KplvManager.getInstance().isInit();
// if (!isInit) {
// LogUtil.d(TAG + "(场景检查)保活未初始化,不能展示");
// EventUtils.staDialogFail(DialogFailReason.NO_INIT, actionState, EventUtils.DIALOG_TYPE_AD);
// return false;
// }
boolean isInit = OutHelp.get().isInit();
if (!isInit) {
LogUtil.d(TAG + "(场景检查)保活未初始化,不能展示");
EventUtils.staDialogFail(DialogFailReason.NO_INIT, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
if (!NetworkUtils.isConnected()) {
if (!isNetworkAvailable(OutHelp.get().getContext())) {
LogUtil.d(TAG + "(场景检查)网络未连接,不能展示");
EventUtils.staDialogFail(DialogFailReason.NO_NET, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
......@@ -126,41 +113,42 @@ public class CheckHelper {
return false;
}
// if (checkTopActivityIsAd() && KplvManager.getInstance().isAppFront()) {
// LogUtil.d(TAG + "(场景检查)广告播放中,不能展示");
// EventUtils.staDialogFail(DialogFailReason.AD_EXITS, actionState, EventUtils.DIALOG_TYPE_AD);
// return false;
// }
// checkTopActivityIsAd()
if (OutHelp.get().isAppForeground()) {
LogUtil.d(TAG + "(场景检查)广告播放中,不能展示");
EventUtils.staDialogFail(DialogFailReason.AD_EXITS, actionState, EventUtils.DIALOG_TYPE_AD);
return false;
}
LogUtil.d(TAG + "(场景检查)能展示");
return true;
}
/**
* 检查顶层activity是否是广告的页面
*
* @return
*/
private static boolean checkTopActivityIsAd() {
Activity topActivity = ActivityUtils.getTopActivity();
if (topActivity != null) {
return topActivity instanceof TTFullScreenVideoActivity
|| topActivity instanceof TTFullScreenExpressVideoActivity
|| topActivity instanceof TTInterstitialActivity
//applovin
|| topActivity instanceof AppLovinFullscreenActivity
|| topActivity instanceof AppLovinFullscreenThemedActivity
|| topActivity instanceof AppLovinWebViewActivity
//TopOn
|| topActivity instanceof ATRewardVideoActivity
//Vungle
|| topActivity instanceof VungleActivity
//M
|| topActivity instanceof MBRewardVideoActivity;
}
return false;
}
// /**
// * 检查顶层activity是否是广告的页面
// *
// * @return
// */
// private static boolean checkTopActivityIsAd() {
// Activity topActivity = ActivityUtils.getTopActivity();
// if (topActivity != null) {
// return topActivity instanceof TTFullScreenVideoActivity
// || topActivity instanceof TTFullScreenExpressVideoActivity
// || topActivity instanceof TTInterstitialActivity
// //applovin
// || topActivity instanceof AppLovinFullscreenActivity
// || topActivity instanceof AppLovinFullscreenThemedActivity
// || topActivity instanceof AppLovinWebViewActivity
// //TopOn
// || topActivity instanceof ATRewardVideoActivity
// //Vungle
// || topActivity instanceof VungleActivity
// //M
// || topActivity instanceof MBRewardVideoActivity;
// }
// return false;
//}
public static boolean isUserPhone() {
......@@ -200,7 +188,7 @@ public class CheckHelper {
long spaceTime;
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
spaceTime = data.intervalHide * DateUtils.SECOND_IN_MILLIS;
LogUtil.d(TAG + "(次数检查)间隔时间(icon隐藏)=" + spaceTime);
} else {
......@@ -227,7 +215,7 @@ public class CheckHelper {
AppOutSP.saveHomeInterstitialAdDayShowCount(0);
}
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
if (homeDayShowCount >= data.showTimeHide) {
LogUtil.d(TAG + "(次数检查)总次数 (icon隐藏) 超过播放次数");
LogUtil.d(TAG + "(次数检查)总次数 (icon隐藏) 当前次数=" + homeDayShowCount);
......@@ -245,7 +233,7 @@ public class CheckHelper {
}
}
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
if (WeatherAdData.CP_AD_TYPE_NATIVE.equals(data.cpAdtype) && (homeNativeAdDayShowCount >= data.showTimesHideForAdId)) {
LogUtil.d(TAG + "(次数检查)原生 (icon隐藏) 超过播放次数");
LogUtil.d(TAG + "(次数检查)原生 (icon隐藏) 当前次数=" + homeNativeAdDayShowCount);
......@@ -263,7 +251,7 @@ public class CheckHelper {
}
}
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
if (WeatherAdData.CP_AD_TYPE_CHAPING.equals(data.cpAdtype) && (homeInterstitialAdDayShowCount >= data.showTimesHideForAdId)) {
LogUtil.d(TAG + "(次数检查)插屏 (icon隐藏) 超过播放次数");
LogUtil.d(TAG + "(次数检查)插屏 (icon隐藏) 当前次数=" + homeInterstitialAdDayShowCount);
......@@ -324,4 +312,10 @@ public class CheckHelper {
LogUtil.d("监听是否在通话中 Calling=" + calling);
return calling;
}
public static boolean isNetworkAvailable(final Context context) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo();
return activeNetworkInfo != null && activeNetworkInfo.isConnected();
}
}
\ No newline at end of file
package com.zl.sdk.out;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
public class DxActivity extends BaseActivity {
public DxActivity(Activity activity) {
super(activity);
}
@Override
public void onBeforeCreate(Bundle bundle) {
}
@Override
public void onAfterCreate(Bundle bundle) {
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
}
@Override
public void onStart() {
super.onStart();
}
@Override
public void onResume() {
super.onResume();
}
@Override
public void onPause() {
super.onPause();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public boolean onKeyDown(int i, KeyEvent keyEvent) {
return false;
}
@Override
public void finish() {
}
@Override
public boolean beforeBackPressed() {
return false;
}
}
package com.zl.sdk.out;
import android.content.Intent;
import android.app.Activity;
import android.os.Build;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.bean.WeatherAdData;
public class SLKManager {
private SLKManager() {
import java.util.Stack;
public class DxManager {
private DxManager() {
}
private static class Holder {
private static final SLKManager INSTANCE = new SLKManager();
private static final DxManager INSTANCE = new DxManager();
}
public static SLKManager get() {
return SLKManager.Holder.INSTANCE;
public static DxManager get() {
return DxManager.Holder.INSTANCE;
}
private static final String TAG = "OutShow SLKManager --> ";
private static final String TAG = "OutShow DxManager --> ";
private RemindersInfo outRemindersInfo = null;
......@@ -40,39 +43,35 @@ public class SLKManager {
}
// private final Stack<Activity> appOutActivities = new Stack<Activity>();
//
//
// public boolean existAppOutActivities() {
// return !appOutActivities.isEmpty();
// }
//
// public Stack<Activity> getAppOutActivities() {
// return appOutActivities;
// }
//
//
// public void addActivity(Activity activity) {
// appOutActivities.push(activity);
// }
//
// public void removeActivity(Activity activity) {
// appOutActivities.remove(activity);
// }
//
// public void removeAllSLKActivity() {
// if (appOutActivities.isEmpty()) {
// return;
// }
//
// for (Activity activity : appOutActivities) {
// if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
// activity.finishAndRemoveTask();
// } else {
// activity.finish();
// }
// }
//
// appOutActivities.clear();
// }
private final Stack<Activity> appOutActivities = new Stack<Activity>();
public boolean existAppOutActivities() {
return !appOutActivities.isEmpty();
}
public Stack<Activity> getAppOutActivities() {
return appOutActivities;
}
public void addActivity(Activity activity) {
appOutActivities.push(activity);
}
public void removeActivity(Activity activity) {
appOutActivities.remove(activity);
}
public void removeAllSLKActivity() {
if (appOutActivities.isEmpty()) {
return;
}
for (Activity activity : appOutActivities) {
activity.finishAndRemoveTask();
}
appOutActivities.clear();
}
}
package com.zl.sdk.out;
import android.content.ComponentName;
import android.content.Context;
import android.content.Intent;
import android.os.Handler;
import android.os.Looper;
import android.os.Parcelable;
import android.text.format.DateUtils;
import com.zl.sdk.Config;
......@@ -15,6 +15,7 @@ import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.ui.DxActivity;
import com.zl.sdk.util.AppOutUtils;
import com.zl.sdk.util.LogUtil;
......@@ -79,7 +80,7 @@ public class OutAdManager extends BaseOutShowManager {
}
boolean canShowByScene;
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
canShowByScene = CheckHelper.checkAdCanShowBySceneNoIcon(actionState);
} else {
canShowByScene = CheckHelper.checkAdCanShowByScene(actionState);
......@@ -146,12 +147,12 @@ public class OutAdManager extends BaseOutShowManager {
//isAppFirstStartInTheDevices app在此设备上的首次启动
if (firstCheck
&& !IconHelp.get().isIconHided()
&& !OutHelp.get().iconIsHide()
&& isAppFirstStartInTheDevices(lastShowTime)) {
LogUtil.d(TAG, ">>>轮询检查<<< first start, no need check");
Map<String, Object> map = new HashMap<>();
map.put("type", String.valueOf(IconHelp.get().isIconHided()));
map.put("init", String.valueOf(KplvManager.getInstance().isInit()));
map.put("type", String.valueOf(OutHelp.get().iconIsHide()));
map.put("init", String.valueOf(OutHelp.get().isInit()));
Statistics.getInstance().dotEvent(OutHelp.get().getContext(), "time_first_trig", "", map);
return;
}
......@@ -171,7 +172,7 @@ public class OutAdManager extends BaseOutShowManager {
long spaceTime;
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
spaceTime = adData.intervalHide * DateUtils.SECOND_IN_MILLIS;
LogUtil.d(TAG + "检查是否需要展示广告 间隔时间(icon隐藏)=" + spaceTime);
} else {
......@@ -268,7 +269,7 @@ public class OutAdManager extends BaseOutShowManager {
boolean canShowByScene;
if (IconHelp.get().isIconHided()) {
if (OutHelp.get().iconIsHide()) {
canShowByScene = CheckHelper.checkAdCanShowBySceneNoIcon(actionFrom.getAction());
} else {
canShowByScene = CheckHelper.checkAdCanShowByScene(actionFrom.getAction());
......@@ -291,10 +292,10 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG);
LogUtil.d(TAG + ">>>广告逻辑结束<<< ===> END 返回成功");
LogUtil.d(TAG);
if (OutHelp.get().getDialogShowStatusCallback() != null) {
OutHelp.get().getDialogShowStatusCallback().success();
OutHelp.get().cleanDialogCallBack();
}
// if (OutHelp.get().getDialogShowStatusCallback() != null) {
// OutHelp.get().getDialogShowStatusCallback().success();
// OutHelp.get().cleanDialogCallBack();
// }
}
/**
......@@ -304,12 +305,10 @@ public class OutAdManager extends BaseOutShowManager {
LogUtil.d(TAG);
LogUtil.d(TAG + ">>>广告逻辑结束<<< ===> END 返回失败");
LogUtil.d(TAG);
if (OutHelp.get().getDialogShowStatusCallback() != null) {
OutHelp.get().getDialogShowStatusCallback().fail(reason);
OutHelp.get().cleanDialogCallBack();
}
// if (OutHelp.get().getDialogShowStatusCallback() != null) {
// OutHelp.get().getDialogShowStatusCallback().fail(reason);
// OutHelp.get().cleanDialogCallBack();
// }
}
......@@ -318,7 +317,6 @@ public class OutAdManager extends BaseOutShowManager {
*/
private void startAdDialog(Context context, boolean isShow, ActionFrom actionFrom, RemindersInfo remindersInfo, WeatherAdData.NormalAdData data) {
try {
// Intent intent = OutHelp.get().getIntent();
Intent intent = new Intent();
intent.setComponent(new ComponentName(context, "cn.kuwo.show.ui.show.KWLiveActivity"));
try {
......@@ -335,16 +333,8 @@ public class OutAdManager extends BaseOutShowManager {
//TODO 清除隐藏的Activity
// LaunchStart.getInstance().cleanAllActivityExcludeAds();
// intent.setClass(context, SLKActivity.class);
// if (!(context instanceof Activity)) {
// intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
// }
// intent.putExtra(Config.KEY_WEATHER_REMINDERS_INFO, (Parcelable) remindersInfo);
// intent.putExtra(Config.KEY_WEATHER_AD_DATA, data);
SLKManager.get().setOutRemindersInfo(remindersInfo);
SLKManager.get().setOutAdData(data);
DxManager.get().setOutRemindersInfo(remindersInfo);
DxManager.get().setOutAdData(data);
EventUtils.statRemindOutFgSurpriseStart(EventUtils.SLK_START, "", isShow, actionFrom.getAction());
......@@ -414,7 +404,7 @@ public class OutAdManager extends BaseOutShowManager {
private void outDialogShowFail(boolean isShow, Context context, ActionFrom actionFrom, RemindersInfo remindersInfo, WeatherAdData.NormalAdData data, String reason) {
LogUtil.d(TAG, "广告SLK(" + (isShow ? "播放" : "加载") + ") 拉起失败 失败原因:" + reason);
try {
IconHelp.get().clearNotification();
OutHelp.get().clearNotification();
if (!hadStartAdDialogFail) {
LogUtil.d(TAG, "广告SLK(" + (isShow ? "播放" : "加载") + ") 拉起失败 重试一次");
hadStartAdDialogFail = true;
......
package com.zl.sdk.out.ui;
import android.app.Activity;
public abstract class AbsView implements IView {
private static final String TAG = "OutWeatherDialog";
protected Activity activity;
}
\ No newline at end of file
package com.zl.sdk.out;
package com.zl.sdk.out.ui;
import android.app.Activity;
import android.content.Intent;
......
package com.zl.sdk.out.ui;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.bean.WeatherAdData;
public final class DialogFactory {
public static IView createDialog(RemindersInfo remindersInfo, WeatherAdData.NormalAdData data) {
if (remindersInfo == null) {
return null;
}
return new WeatherPureAdDialog(remindersInfo, data);
}
}
package com.zl.sdk.out.ui;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.view.WindowManager;
import android.widget.FrameLayout;
import com.zl.sdk.Config;
import com.zl.sdk.OutHelp;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.DxManager;
import com.zl.sdk.util.LogUtil;
import java.util.HashMap;
import java.util.Map;
public class DxActivity extends BaseActivity {
private static final String TAG = "OutShow Dx ---> ";
private Intent intent = null;
private RemindersInfo remindersInfo;
private WeatherAdData.NormalAdData adData;
private IView proxyView;
private long onceStayTime;
//activity生命周期中是否已经执行过execute()方法
private boolean hasExecuteInLifeCycle = false;
public DxActivity(Activity activity) {
super(activity);
}
@Override
public void onBeforeCreate(Bundle bundle) {
}
@Override
public void onAfterCreate(Bundle bundle) {
LogUtil.d(TAG + "onCreate");
}
@Override
public void onNewIntent(Intent intent) {
super.onNewIntent(intent);
LogUtil.d(TAG + "onNewIntent : " + hasExecuteInLifeCycle);
if (!hasExecuteInLifeCycle) {
execute();
}
}
@Override
public void onStart() {
super.onStart();
LogUtil.d(TAG + "onStart :" + hasExecuteInLifeCycle + " hashCode=" + hashCode());
if (!hasExecuteInLifeCycle) {
execute();
}
}
@Override
public void onResume() {
super.onResume();
LogUtil.d(TAG + "onResume hashCode=" + hashCode());
if (proxyView != null) {
proxyView.onResume();
}
}
@Override
public void onPause() {
super.onPause();
LogUtil.d(TAG + "onPause hashCode=" + hashCode());
if (proxyView != null) {
proxyView.onPause();
}
}
@Override
public void onStop() {
hasExecuteInLifeCycle = false;
super.onStop();
LogUtil.d(TAG + "onStop hashCode=" + hashCode());
}
@Override
public void onDestroy() {
LogUtil.d(TAG + "onDestroy hashCode=" + hashCode());
hasExecuteInLifeCycle = false;
if (proxyView != null) {
proxyView.onDestroy();
proxyView = null;
}
final long time = Math.abs(onceStayTime - System.currentTimeMillis());
Map<String, Object> map = new HashMap<>();
map.put("s_d_t", String.valueOf(time));
Statistics.getInstance().onEvent(OutHelp.get().getContext(), EventUtils.OUT_DIALOG_EXPOSE_ONCE_STAY_TIME, null, map);
super.onDestroy();
}
@Override
public boolean onKeyDown(int i, KeyEvent keyEvent) {
return false;
}
@Override
public void finish() {
if (IconHelp.get().isIconHide()) {
LogUtil.d(TAG + "icon隐藏 退回到后台");
if (proxyView != null) {
proxyView.onDestroy();
proxyView = null;
}
activity.moveTaskToBack(true);
} else {
LogUtil.d(TAG + "icon未隐藏 finish");
if (proxyView != null) {
proxyView.onDestroy();
proxyView = null;
}
activity.finish();
}
}
@Override
public boolean beforeBackPressed() {
finish();
return true;
}
private void statSLKStart(RemindersInfo remindersInfo, boolean isHide) {
Map<String, Object> map = new HashMap<>();
String type = "";
if (remindersInfo != null) {
type = String.valueOf(remindersInfo.reminderType);
}
map.put("type", type);
map.put("hide", String.valueOf(isHide));
Statistics.getInstance().dotEvent(activity, "slk_start", "", map);
}
private void execute() {
hasExecuteInLifeCycle = true;
checkIntent();
startShowDialog();
}
private void checkIntent() {
adData = null;
remindersInfo = null;
adData = (WeatherAdData.NormalAdData) DxManager.get().getOutAdData();
LogUtil.d(TAG + "广告信息 =" + adData);
remindersInfo = DxManager.get().getOutRemindersInfo();
LogUtil.d(TAG + "弹窗信息 =" + remindersInfo);
}
private void startShowDialog() {
statSLKStart(remindersInfo, IconHelp.get().isIconHide());
if (remindersInfo == null) {
LogUtil.d(TAG + "finish remindersInfo为空");
finish();
return;
}
if (remindersInfo.reminderType != Config.REMINDER_TYPE_WEATHER_PURE_AD && IconHelp.get().isIconHide()) {
LogUtil.d(TAG + "finish 不是纯广告并且隐藏了icon");
finish();
return;
}
Window window = activity.getWindow();
window.addFlags(WindowManager.LayoutParams.FLAG_SECURE);
FrameLayout rootView = new FrameLayout(activity);
activity.setContentView(rootView);
onceStayTime = System.currentTimeMillis();
LogUtil.d(TAG + "加载新的Dialog");
proxyView = DialogFactory.createDialog(remindersInfo, adData);
if (proxyView == null) {
LogUtil.d(TAG + "finish 5 View=null");
finish();
return;
}
proxyView.onCreate(activity, intent, rootView);
}
}
package com.zl.sdk.out.ui;
import android.app.Activity;
import android.content.Intent;
import android.widget.FrameLayout;
public interface IView {
void onCreate(Activity activity, Intent intent, FrameLayout rootView);
// void onNewIntent(Intent intent);
void onResume();
void onPause();
// void onStart();
// void onStop();
void onDestroy();
}
package com.zl.sdk.out.ui;
import android.app.Activity;
import android.content.Intent;
import android.graphics.Color;
import android.text.TextUtils;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.RelativeLayout;
import com.zl.sdk.ad.OnInAdListener;
import com.zl.sdk.ad.TopOnAdLoadManager;
import com.zl.sdk.bean.RemindersInfo;
import com.zl.sdk.bean.WeatherAdData;
import com.zl.sdk.event.EventUtils;
import com.zl.sdk.event.statistics.AdScenes;
import com.zl.sdk.event.statistics.Statistics;
import com.zl.sdk.icon.IconHelp;
import com.zl.sdk.out.AppOutSP;
import com.zl.sdk.util.DpiUtil;
import com.zl.sdk.util.LogUtil;
import java.util.HashMap;
import java.util.Map;
class WeatherPureAdDialog extends AbsView {
private static final String TAG = "WeatherPureAdDialog";
private FrameLayout rootView;
private RemindersInfo remindersInfo;
private WeatherAdData.NormalAdData data;
private View contentView;
// private LinearLayout weatherAdContainer;
private OnInAdListener onInAdListener;
public WeatherPureAdDialog(RemindersInfo remindersInfo, WeatherAdData.NormalAdData data) {
this.remindersInfo = remindersInfo;
this.data = data;
}
@Override
public void onCreate(Activity activity, Intent intent, FrameLayout rootView) {
this.activity = activity;
this.rootView = rootView;
if (data == null) {
finishActivity();
return;
}
initView();
initData();
}
@Override
public void onResume() {
}
@Override
public void onPause() {
}
private void initView() {
contentView = getContentView();
FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
FrameLayout.LayoutParams.MATCH_PARENT,
FrameLayout.LayoutParams.WRAP_CONTENT
);
rootView.addView(contentView, params);
// weatherAdContainer = contentView.findViewById(R.id.weatherAdContainer);
}
private View getContentView() {
//TODO 只加了根容器,原生广告容器没添加
RelativeLayout relativeLayout = new RelativeLayout(activity);
int padding = DpiUtil.dipTopx(8);
relativeLayout.setPadding(padding, padding, padding, padding);
relativeLayout.setBackgroundColor(Color.TRANSPARENT);
return relativeLayout;
}
private void initData() {
if (!remindersInfo.isAdType) {
LogUtil.d(TAG + "initAd no isAdType");
finishActivity();
return;
}
String cpName = data.cpName;
if (TextUtils.isEmpty(cpName)) {
LogUtil.d(TAG + "initAd cpName empty");
finishActivity();
return;
}
String adUnitId = data.cpAdslot;
if (TextUtils.isEmpty(adUnitId)) {
LogUtil.d(TAG + "initAd cpAdslot empty");
finishActivity();
return;
}
String adType = data.cpAdtype;
if (TextUtils.isEmpty(adType)) {
LogUtil.d(TAG + "initAd adType empty");
finishActivity();
return;
}
if (adType.equals(WeatherAdData.CP_AD_TYPE_BANNER)) {
LogUtil.d(TAG + "initAd adType banner");
finishActivity();
return;
}
registerCallBack(adType);
if (adType.equals(WeatherAdData.CP_AD_TYPE_CHAPING)) {
checkCanShowItAd(cpName, adUnitId);
return;
}
// if (adType.equals(WeatherAdData.CP_AD_TYPE_NATIVE)) {
// checkCanShowNativeAd();
// return;
// }
LogUtil.d(TAG + "initAd no support adType=" + adType);
finishActivity();
}
private void registerCallBack(String adType) {
onInAdListener = new OnInAdListener() {
@Override
public void onCloseAd() {
LogUtil.d(TAG + "initAd onCloseAd");
finishActivity();
}
@Override
public void onLoadAd() {
LogUtil.d(TAG + "initAd onLoadAd");
}
@Override
public void onShow() {
LogUtil.d(TAG + "initAd onShow");
}
@Override
public void onNotAd(String errorMessage) {
LogUtil.d(TAG + "initAd onNotAd errorMessage =" + errorMessage);
EventUtils.statOutOnlyAdFail(remindersInfo, data, errorMessage);
finishActivity();
}
@Override
public void onClk() {
LogUtil.d(TAG + "initAd onClk");
finishActivity();
}
@Override
public void cacheDataTimeOut() {
LogUtil.d(TAG + "initAd cacheDataTimeOut");
}
};
TopOnAdLoadManager.getInstance().registerCallBack(adType, TopOnAdLoadManager.REGISTER_TAG_WEATHER_PURE_AD, onInAdListener);
}
private void checkCanShowItAd(String cpName, String adUnitId) {
boolean isReady = TopOnAdLoadManager.getInstance().isInterstitialReady(cpName, adUnitId);
LogUtil.d(TAG + "initAd interstitial isReady =" + isReady);
statAdDialogExp(isReady);
if (isReady) {
showInterstitial();
return;
}
TopOnAdLoadManager.getInstance().loadInterstitialAd(data, AdScenes.AD_SCENES_PURE);
finishActivity();
}
private void statAdDialogExp(boolean adReady) {
try {
Map<String, Object> map = new HashMap<>();
map.put("ad_ready", String.valueOf(adReady));
Statistics.getInstance().dotEvent(activity, "ad_dialog_exp", "", map);
} catch (Exception e) {
}
}
// private void checkCanShowNativeAd() {
// Object cacheData = TopOnAdLoadManager.getInstance().getAdCacheData(data.cpAdslot);
// boolean hasCache = cacheData instanceof AdCacheData
// && !((AdCacheData) cacheData).isNativeTimeout();
// LogUtil.d(TAG + "initAd native hasCache == " + hasCache);
// boolean isScreenOn = AppOutUtils.isScreenOn();
// boolean isLock = AppOutUtils.isScreenLock();
//
// if (hasCache) {
// LogUtil.d(TAG + "initAd native isScreenOn == " + isScreenOn + ", isLock =" + isLock);
// if (!isScreenOn || isLock) {
// statNativeScreenState("cache", isScreenOn, isLock);
// finishActivity();
// return;
// }
// showNativeAd();
// return;
// }
//
// statNativeScreenState("load", isScreenOn, isLock);
// TopOnAdLoadManager.getInstance().loadNativeAd(data, AdScenes.AD_SCENES_PURE);
// finishActivity();
// }
// private void statNativeScreenState(String state, boolean isScreenOn, boolean isLock) {
// Map<String, Object> map = new HashMap<>();
// map.put("state", state);
// map.put("isScreenOn", String.valueOf(isScreenOn));
// map.put("isLock", String.valueOf(isLock));
// Statistics.getInstance().dotEvent(activity, "native_state", "", map);
// }
@Override
public void onDestroy() {
LogUtil.d(TAG + "WeatherPureAdDialog onDestroy");
if (data != null) {
TopOnAdLoadManager.getInstance().unregisterCallBack(data.cpAdtype, TopOnAdLoadManager.REGISTER_TAG_WEATHER_PURE_AD);
}
AppOutSP.saveOutAdDialogCloseLastTime(System.currentTimeMillis());
}
// private void showNativeAd() {
// TopOnAdLoadManager.getInstance().showNativeAd(data, weatherAdContainer);
// }
private void showInterstitial() {
TopOnAdLoadManager.getInstance().showInterstitialAd(activity, data, AdScenes.AD_SCENES_PURE);
}
private void showBannerAd() {
// TopOnAdLoadManager.getInstance(activity).showAd(data, weatherAdContainer, activity);
}
/**
* 结束SLK 或者 退到后台
*/
protected void finishActivity() {
try {
if (activity != null) {
if (IconHelp.get().isIconHide()) {
LogUtil.d(TAG + "SLK 退回到后台");
activity.moveTaskToBack(true);
} else {
LogUtil.d(TAG + "SLK finish");
activity.finish();
}
}
} catch (Exception ignored) {
}
}
}
\ No newline at end of file
package com.zl.sdk.util;
import android.content.Context;
import android.os.Build;
import android.util.DisplayMetrics;
import android.util.Log;
import android.util.TypedValue;
import android.view.WindowManager;
/**
* DpiUtils
*/
public class DpiUtil {
private static final String TAG = "DpiUtils";
private static Context mContext;
// 当前屏幕的densityDpi
private static float mDmDensityDpi = 0.0f;
private static int mWidth = 0;
private static int mHeight = 0;
private static DisplayMetrics mDisplayMetrics;
private static float mScale = 1.0f;
// 设计分辨率
private static int mDesignWidth = 0;
private static int mDesignHeight = 0;
private static float mScaleX = 1.0f;
private static float mScaleY = 1.0f;
public static boolean isFull() {
float s = (float) getHeight() / getWidth();
LogUtil.d("屏幕比列:" + s);
LogUtil.d("屏幕height:" + DpiUtil.pxTodip(getHeight()));
LogUtil.d("屏幕width:" + DpiUtil.pxTodip(getWidth()));
return s > 2;
}
/**
* 根据构造函数获得当前手机的屏幕系数
*/
public static void init(Context context) {
mContext = context;
// 获取当前屏幕
mDisplayMetrics = context.getResources().getDisplayMetrics();
// 设置DensityDpi,mWidth,mHeight
mDmDensityDpi = mDisplayMetrics.densityDpi;
mWidth = mDisplayMetrics.widthPixels;
mHeight = mDisplayMetrics.heightPixels;
// 密度因子
mScale = getDmDensityDpi() / 160;
Log.i(TAG, " dmDensityDpi:" + mDmDensityDpi + " mWidth:" + mWidth
+ " mHeight:" + mHeight);
}
/**
* 密度转换像素
*/
public static int dipTopx(float dipValue) {
return (int) (dipValue * mScale + 0.5f);
}
public static int sp2px(float sp) {
return (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_SP, sp, mContext.getResources().getDisplayMetrics());
}
/**
* 像素转换密度
*/
public static int pxTodip(float pxValue) {
return (int) (pxValue / mScale + 0.5f);
}
/**
* 当前屏幕的density因子
*
* @retrun DmDensity Getter
*/
public static float getDmDensityDpi() {
return mDmDensityDpi;
}
/**
* 获取设备的屏幕宽度(Dp)
*
* @return mWidth
*/
public static int getDPWidth() {
return pxTodip(mWidth);
}
/**
* 获取设备的屏幕宽度(Dp)
*
* @return mWidth
*/
public static int getDPHeight() {
return pxTodip(mHeight);
}
/**
* 获取设备的屏幕宽度(Dp)
*
* @return mWidth
*/
public static int getScreenDPWidth() {
return pxTodip(getScreenWidth());
}
/**
* 获取设备的屏幕宽度(Dp)
*
* @return mWidth
*/
public static int getScreenDPHeight() {
return pxTodip(getScreenHeight());
}
/**
* 获取屏幕宽度
*
* @return
*/
public static int getScreenWidth() {
int width;
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowMgr = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
windowMgr.getDefaultDisplay().getRealMetrics(dm);
width = dm.widthPixels;
} else {
width = DpiUtil.getWidth();
}
return width;
}
/**
* 获取屏幕高度
*
* @return
*/
public static int getScreenHeight() {
int height;
DisplayMetrics dm = new DisplayMetrics();
WindowManager windowMgr = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) {
assert windowMgr != null;
windowMgr.getDefaultDisplay().getRealMetrics(dm);
// 获取高度
height = dm.heightPixels;
} else {
height = DpiUtil.getHeight();
}
return height;
}
/**
* 获取设备的屏幕宽度(Pixels)
*
* @return mWidth
*/
public static int getWidth() {
return mWidth;
}
/**
* 获取设备的屏幕高度(Pixels)
*
* @return mHeight
*/
public static int getHeight() {
return mHeight;
}
/**
* 设计分辨率
*/
public static void SetDesignResolution(int width, int height) {
mDesignWidth = width;
mDesignHeight = height;
mScaleX = (float) mWidth / mDesignWidth;
mScaleY = (float) mHeight / mDesignHeight;
Log.i(TAG, "mScaleX" + mScaleX + ", mScaleY" + mScaleY);
}
/**
* 返回横向缩放比例
*
* @return
*/
public static float getScaleX() {
return mScaleX;
}
/**
* 返回纵向缩放比例
*
* @return
*/
public static float getScaleY() {
return mScaleY;
}
/**
* 将设计坐标点的横坐标x转换成实际像素点的x
*
* @param x
* @return
*/
public static int toRealX(int x) {
return (int) (x * mScaleX);
}
/**
* 将设计坐标点的纵坐标y转换成实际像素点的y
*
* @param y
* @return
*/
public static int toRealY(int y) {
return (int) (y * mScaleY);
}
/**
* 将实际像素点的x转换成设计坐标点的横坐标x
*
* @param x
* @return
*/
public static int toDesignX(int x) {
return (int) (x / mScaleX);
}
/**
* 将实际像素点的y转换成设计坐标点的纵坐标y
*
* @param y
* @return
*/
public static int toDesignY(int y) {
return (int) (y / mScaleY);
}
}
package com.zl.sdk.util.log;
import android.os.Environment;
import android.os.Process;
import com.blankj.utilcode.util.Utils;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.io.StringWriter;
import java.io.Writer;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;
public class LogToFile extends AbsLog {
public static final String CALENDAR_PATH_FILE = "Ssui/calendar";
private static final String BASE_FILENAME = ".log";
private static final String PACKAGE_NAME = CALENDAR_PATH_FILE + "/Log";
private static final String LOG_LINE_CONNECTOR = " : ";
private static final String LOG_SEPARATOR = " ";
private static final int SIZE = 2048;
private static String LOG_DIRECTORY;// = SDCardUtil.getSDCardPath();//StorageMgr.getInstance().getSdcardAppFilesAbsolutePath();
private static final String TIME_FORMAT = "yyyy-MM-dd HH:mm:ss.SSS";
private static final String DAY_FORMAT = "yyyy-MM-dd";
private boolean mIsOpen = false;
private Writer mWriter;
public LogToFile() {
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())
&& Utils.getApp().getExternalCacheDir() != null)
LOG_DIRECTORY = Utils.getApp().getExternalCacheDir().getAbsolutePath();// + FILE_SEP + "log" + FILE_SEP;
else {
LOG_DIRECTORY = Utils.getApp().getCacheDir().getAbsolutePath();// + FILE_SEP + "log" + FILE_SEP;
}
}
@Override
public void w(String tag, String msg) {
// println(tag, msg, "w");
}
@Override
public void i(String tag, String msg) {
// println(tag, msg, "i");
}
@Override
public void v(String tag, String msg) {
// println(tag, msg, "v");
}
@Override
public void d(String tag, String msg) {
// println(tag, msg, "d");
}
@Override
public void e(String tag, String msg) {
// println(tag, msg, "e");
}
@Override
public void e(String tag, String msg, Throwable e) {
// printStack(tag, msg, "e", e);
}
@Override
public void e(String tag, Throwable e) {
// printStack(tag, "", "e", e);
}
@Override
public void dForce(String msg) {
// println("", msg, "dForce");
}
@Override
public void dForce(String tag, String msg) {
// println(tag, msg, "dForce");
}
@Override
public void wForce(String tag, String msg) {
// println(tag, msg, "wForce");
}
@Override
public void wForce(String tag, Throwable e) {
// printStack(tag, "", "wForce", e);
}
@Override
public void wForce(String tag, String msg, Throwable e) {
// printStack(tag, msg, "wForce", e);
}
@Override
public void eForce(String tag, String msg, Throwable e) {
// printStack(tag, msg, "eForce", e);
}
@Override
public void eForce(String tag, Throwable e) {
// printStack(tag, "", "eForce", e);
}
@Override
public void debugLog(Object debugLog) {
// dForce("debugLog", String.valueOf(debugLog));
}
private static String getCurrentDate() {
SimpleDateFormat dateFormat = (SimpleDateFormat) DateFormat.getDateInstance();
dateFormat.applyPattern(DAY_FORMAT);
return dateFormat.format(new Date());
}
private static String getCurrentTime() {
SimpleDateFormat dateFormat = (SimpleDateFormat) DateFormat.getDateInstance();
dateFormat.applyPattern(TIME_FORMAT);
return dateFormat.format(new Date());
}
private static String getLogDirectory() {
final StringBuffer buffer = new StringBuffer();
buffer.append(LOG_DIRECTORY).append(File.separator).append(PACKAGE_NAME).append(File.separator)
.append(getCurrentDate()).append(BASE_FILENAME);
return buffer.toString();
}
private void open() throws Exception {
File file = new File(getLogDirectory());
if (!file.getParentFile().exists()) {
try {
file.getParentFile().mkdirs();
} catch (Exception e) {
throw new LogException("create log dirs error!" + e);
}
}
if (!file.exists()) {
try {
file.createNewFile();
} catch (IOException e) {
throw new LogException("create log file error!" + e);
}
}
try {
OutputStreamWriter writer = new OutputStreamWriter(new FileOutputStream(file, true),
"utf-8");
mWriter = new BufferedWriter(writer, SIZE);
} catch (IOException e) {
throw new LogException("open log file error!");
}
mIsOpen = true;
}
private void writeLine(String message) {
try {
mWriter.append(message);
mWriter.append('\n');
mWriter.flush();
} catch (Exception e) {
throw new LogException();
}
}
public void dispose() {
if (mWriter != null) {
try {
mWriter.close();
} catch (IOException e) {
// ignore
}
}
}
private void println(String tag, String msg, String level) {
if (!mIsOpen) {
try {
open();
} catch (Exception e) {
e.printStackTrace();
return;
}
}
final StringBuffer buffer = new StringBuffer();
buffer.append(getCurrentTime()).append(LOG_SEPARATOR).append(Process.myPid())
.append(LOG_SEPARATOR).append(GLOBAL_TAG + "." + tag).append(LOG_SEPARATOR).append(level).append(LOG_LINE_CONNECTOR).append(msg);
writeLine(buffer.toString());
}
public void printStack(String tag, String msg, String level, Throwable throwable) {
if (!mIsOpen) {
try {
open();
} catch (Exception e) {
e.printStackTrace();
return;
}
}
final StringBuffer buffer = new StringBuffer();
buffer.append(getCurrentTime()).append(LOG_SEPARATOR).append(Process.myPid())
.append(LOG_SEPARATOR).append(GLOBAL_TAG + "." + tag).append(LOG_SEPARATOR).append(level).append(LOG_LINE_CONNECTOR).append(msg);
writeLine(buffer.toString());
StringWriter sw = null;
PrintWriter pw = null;
try {
sw = new StringWriter();
pw = new PrintWriter(sw, true);
throwable.printStackTrace(pw);
pw.flush();
sw.flush();
writeLine(tag + LOG_LINE_CONNECTOR + sw.toString());
} catch (Exception e) {
} finally {
if (sw != null) {
try {
sw.close();
} catch (IOException e) {
}
}
if (pw != null) {
pw.close();
}
}
}
}
package com.zl.sdk.util.log;
import android.text.TextUtils;
import android.util.Log;
import com.blankj.utilcode.util.StringUtils;
public class LogToLogcat extends AbsLog {
@Override
......@@ -62,19 +61,19 @@ public class LogToLogcat extends AbsLog {
@Override
public void dForce(String msg) {
msg = StringUtils.null2Length0(msg);
msg = null2Length0(msg);
Log.d(GLOBAL_TAG, msg);
}
@Override
public void dForce(String tag, String msg) {
msg = StringUtils.null2Length0(msg);
msg = null2Length0(msg);
Log.d(GLOBAL_TAG + "." + tag, msg);
}
@Override
public void wForce(String tag, String msg) {
msg = StringUtils.null2Length0(msg);
msg = null2Length0(msg);
Log.w(GLOBAL_TAG + "." + tag, msg);
}
......@@ -90,7 +89,7 @@ public class LogToLogcat extends AbsLog {
@Override
public void eForce(String tag, String msg, Throwable e) {
msg = StringUtils.null2Length0(msg);
msg = null2Length0(msg);
Log.e(GLOBAL_TAG + "." + tag, msg, e);
}
......@@ -104,4 +103,11 @@ public class LogToLogcat extends AbsLog {
dForce("debugLog", String.valueOf(debugLog));
}
private String null2Length0(String str) {
if (TextUtils.isEmpty(str)) {
return "";
} else {
return str;
}
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment