From 41732c8e5166933d709bd4fb011c829d3df1b397 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A7=9C=E7=8F=82?= <799657600@qq.com> Date: Sun, 6 Jul 2025 15:19:59 +0800 Subject: [PATCH] =?UTF-8?q?=E9=87=8D=E6=9E=84AD=E9=83=A8=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/tfq/library/app/BaseConstants.java | 35 --- LibraryAd/build.gradle | 62 +---- LibraryAd/src/main/AndroidManifest.xml | 1 - .../main/java/com/tfq/ad/ad/ADStateUtils.java | 70 ++++++ .../src/main/java/com/tfq/ad/ad/ADUtils.java | 107 --------- .../java/com/tfq/ad/ad/AdBannerUtils.java | 30 ++- .../main/java/com/tfq/ad/ad/AdCQPUtils.java | 35 +-- .../main/java/com/tfq/ad/ad/AdFeedUtils.java | 81 ++++--- .../com/tfq/ad/ad/AdPreAndLevelUtils.java | 14 +- .../java/com/tfq/ad/ad/AdRewardUtils.java | 65 ++--- .../java/com/tfq/ad/ad/AdSplashUtils.java | 47 ++-- .../java/com/tfq/ad/ad/CacheADManager.java | 9 +- .../java/com/tfq/ad/ad/LoadingDialog.java | 2 +- .../src/main/java/com/tfq/ad/ad/LoopAd.java | 131 +++++----- .../main/java/com/tfq/ad/ad/SplashUtils.java | 32 +-- .../java/com/tfq/ad/ad/TTAdManagerHolder.java | 44 ++-- .../tfq/ad/ad/activity/AdSplashActivity.java | 39 +-- .../ad/ad/gdt/GdtCustomerInterstitial.java | 28 +-- .../com/tfq/ad/ad/gdt/GdtCustomerNative.java | 34 +-- .../com/tfq/ad/ad/gdt/GdtCustomerSplash.java | 26 +- .../main/java/com/tfq/ad/app/ADConstants.java | 66 ++++++ .../src/main/java/com/tfq/ad/app/AdApp.java | 151 ++++++++---- .../main/java/com/tfq/ad/app/AdUrlCenter.java | 11 - .../main/java/com/tfq/ad/app/MyOkHttp.java | 36 --- .../main/java/com/tfq/ad/bean/AdvBean.java | 98 -------- .../main/java/com/tfq/ad/bean/UserInfo.java | 105 --------- .../main/java/com/tfq/ad/utils/AdAppUtil.java | 51 ++++ .../main/java/com/tfq/ad/utils/DateUtils.java | 75 ++++++ .../src/main/java/com/tfq/ad/utils/LogAd.java | 52 ++++ .../main/res/anim/actionsheet_dialog_in.xml | 5 - .../main/res/anim/actionsheet_dialog_out.xml | 5 - .../main/res/anim/activity_in_animation.xml | 7 - .../main/res/anim/activity_out_animation.xml | 7 - .../main/res/anim/anim_float_window_enter.xml | 13 - .../main/res/anim/anim_float_window_exit.xml | 13 - .../src/main/res/anim/bottom_menu_enter.xml | 5 - .../src/main/res/anim/bottom_menu_exit.xml | 5 - ...log_show_exis.xml => dialog_show_exit.xml} | 0 .../{loading_1.png => ad_loading_1.png} | Bin .../{loading_10.png => ad_loading_10.png} | Bin .../{loading_11.png => ad_loading_11.png} | Bin .../{loading_12.png => ad_loading_12.png} | Bin .../{loading_2.png => ad_loading_2.png} | Bin .../{loading_3.png => ad_loading_3.png} | Bin .../{loading_4.png => ad_loading_4.png} | Bin .../{loading_5.png => ad_loading_5.png} | Bin .../{loading_6.png => ad_loading_6.png} | Bin .../{loading_7.png => ad_loading_7.png} | Bin .../{loading_8.png => ad_loading_8.png} | Bin .../{loading_9.png => ad_loading_9.png} | Bin .../{anim_loading.xml => ad_anim_loading.xml} | 24 +- ...io_loading.xml => ad_ll_radio_loading.xml} | 0 ...alog_loading.xml => ad_dialog_loading.xml} | 4 +- .../res/layout/layout_dialog_permission.xml | 107 --------- LibraryAd/src/main/res/values/styles.xml | 223 +----------------- android_data/data.gradle | 1 - android_data/flavors.gradle | 1 - app/build.gradle | 2 +- .../main/java/com/tfq/finances/app/App.java | 2 +- .../com/tfq/finances/core/utils}/HttpLog.java | 2 +- .../tfq/finances/core/utils/TfqMyOkHttp.java | 1 - .../finances/activity/Activity_Budgets.java | 4 +- .../activity/Activity_Transactions.java | 4 +- .../tfq/finances/main/Activity_Splash.java | 85 ++----- .../java/com/tfq/finances/main/AdUtils.java | 67 ++++++ .../main/activity/Activity_About_Us.java | 6 +- .../tfq/finances/main/fragment/Fm_Page_A.java | 1 + .../tfq/finances/main/fragment/Fm_Page_S.java | 4 +- .../main/res/drawable/music_loading_anim.xml | 24 +- app/src/main/res/values/styles.xml | 4 +- .../group/JKBaseLib/1.0.0/JKBaseLib-1.0.0.aar | Bin 173619 -> 169243 bytes .../JKBaseLib/1.0.0/JKBaseLib-1.0.0.aar.md5 | 2 +- .../JKBaseLib/1.0.0/JKBaseLib-1.0.0.aar.sha1 | 2 +- .../1.0.0/JKBaseLib-1.0.0.aar.sha256 | 2 +- .../1.0.0/JKBaseLib-1.0.0.aar.sha512 | 2 +- .../group/JKBaseLib/maven-metadata.xml | 2 +- .../group/JKBaseLib/maven-metadata.xml.md5 | 2 +- .../group/JKBaseLib/maven-metadata.xml.sha1 | 2 +- .../group/JKBaseLib/maven-metadata.xml.sha256 | 2 +- .../group/JKBaseLib/maven-metadata.xml.sha512 | 2 +- 80 files changed, 904 insertions(+), 1277 deletions(-) create mode 100644 LibraryAd/src/main/java/com/tfq/ad/ad/ADStateUtils.java delete mode 100644 LibraryAd/src/main/java/com/tfq/ad/ad/ADUtils.java create mode 100644 LibraryAd/src/main/java/com/tfq/ad/app/ADConstants.java delete mode 100644 LibraryAd/src/main/java/com/tfq/ad/app/AdUrlCenter.java delete mode 100644 LibraryAd/src/main/java/com/tfq/ad/app/MyOkHttp.java delete mode 100644 LibraryAd/src/main/java/com/tfq/ad/bean/AdvBean.java delete mode 100644 LibraryAd/src/main/java/com/tfq/ad/bean/UserInfo.java create mode 100644 LibraryAd/src/main/java/com/tfq/ad/utils/AdAppUtil.java create mode 100644 LibraryAd/src/main/java/com/tfq/ad/utils/DateUtils.java create mode 100644 LibraryAd/src/main/java/com/tfq/ad/utils/LogAd.java delete mode 100644 LibraryAd/src/main/res/anim/actionsheet_dialog_in.xml delete mode 100644 LibraryAd/src/main/res/anim/actionsheet_dialog_out.xml delete mode 100644 LibraryAd/src/main/res/anim/activity_in_animation.xml delete mode 100644 LibraryAd/src/main/res/anim/activity_out_animation.xml delete mode 100644 LibraryAd/src/main/res/anim/anim_float_window_enter.xml delete mode 100644 LibraryAd/src/main/res/anim/anim_float_window_exit.xml delete mode 100644 LibraryAd/src/main/res/anim/bottom_menu_enter.xml delete mode 100644 LibraryAd/src/main/res/anim/bottom_menu_exit.xml rename LibraryAd/src/main/res/anim/{dialog_show_exis.xml => dialog_show_exit.xml} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_1.png => ad_loading_1.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_10.png => ad_loading_10.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_11.png => ad_loading_11.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_12.png => ad_loading_12.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_2.png => ad_loading_2.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_3.png => ad_loading_3.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_4.png => ad_loading_4.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_5.png => ad_loading_5.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_6.png => ad_loading_6.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_7.png => ad_loading_7.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_8.png => ad_loading_8.png} (100%) rename LibraryAd/src/main/res/drawable-hdpi/{loading_9.png => ad_loading_9.png} (100%) rename LibraryAd/src/main/res/drawable/{anim_loading.xml => ad_anim_loading.xml} (54%) rename LibraryAd/src/main/res/drawable/{ll_radio_loading.xml => ad_ll_radio_loading.xml} (100%) rename LibraryAd/src/main/res/layout/{layout_dialog_loading.xml => ad_dialog_loading.xml} (75%) delete mode 100644 LibraryAd/src/main/res/layout/layout_dialog_permission.xml rename {LibraryAd/src/main/java/com/tfq/ad/app => app/src/main/java/com/tfq/finances/core/utils}/HttpLog.java (86%) create mode 100644 app/src/main/java/com/tfq/finances/main/AdUtils.java diff --git a/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java b/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java index c6dd871..3c89155 100644 --- a/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java +++ b/BaseLibrary/src/main/java/com/tfq/library/app/BaseConstants.java @@ -2,42 +2,7 @@ package com.tfq.library.app; public class BaseConstants { - public static final int URL_REQUEST_ERROR = 401; public static boolean BASE_APP_DEBUG_PRINT; - public static String APP_ID = ""; - public static String CSJ_ID = ""; - public static String APP_NAME = ""; - public static String CHANNEL = ""; - - public static String csjIdFeed1; - public static String csjIdFeed2; - - public static boolean _isShow; - - // 1.开屏 2.激励视频 3.信息流 4.插全屏 5.banner 6.draw信息流 - public static boolean AD_SPLASH = false;//开屏广告 - public static boolean AD_REWARD = false;//激励视频 - public static boolean AD_CQP = false;//插全屏广告 - public static boolean AD_NATIVE = false;//原生信息流广告 - public static boolean AD_BANNER = false;//banner广告 - public static boolean AD_DRAW = false;//draw信息流广告 - public static int ADV_Wait = 60;//插全屏两个相差时间 - public static boolean adv_csj = true;//穿山甲正常 - public static boolean NO_AD = true;//穿山甲正常 - - public static long request_splash_time = 30; - public static boolean AD_Switch_Requested = false;//请求过广告开关 - public static String CODE_AD_SPLASH; - public static String CODE_AD_CQP; - public static String CODE_AD_FEED1; - public static String CODE_AD_FEED2; - public static String CODE_AD_FEED3; - public static String CODE_AD_BANNER; - public static String CODE_AD_REWARD; - public static String CODE_AD_DRAW; - - public static boolean PRE_AD = true; - public static int appSplash; /** * 底部导航栏颜色 默认白色 diff --git a/LibraryAd/build.gradle b/LibraryAd/build.gradle index ce5235c..3dae303 100644 --- a/LibraryAd/build.gradle +++ b/LibraryAd/build.gradle @@ -3,14 +3,12 @@ plugins { id 'maven-publish' // 添加发布插件 } -//apply plugin: 'com.kezong.fat-aar' - android { namespace 'com.tfq.libraryad' compileSdkVersion 34 defaultConfig { - minSdkVersion 21 + minSdkVersion 24 targetSdkVersion 34 } @@ -36,38 +34,18 @@ repositories { } dependencies { -// implementation fileTree(include: ['*.aar', '*.jar'], dir: 'libs') compileOnly fileTree(include: ['*.aar', '*.jar'], dir: 'libs') - - -// implementation name: 'GDTSDK.unionNormal.4.610.1480', ext: 'aar' -// implementation name: 'mediation_gdt_adapter_4.610.1480.0', ext: 'aar' -// implementation name: 'open_ad_sdk_6.6.0.7', ext: 'aar' - -// -// implementation 'androidx.appcompat:appcompat:1.4.1' -// implementation 'com.google.android.material:material:1.5.0' -// testImplementation 'junit:junit:4.13.2' -// androidTestImplementation 'androidx.test.ext:junit:1.1.3' -// androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' + implementation 'androidx.appcompat:appcompat:1.7.0' + implementation 'com.google.android.material:material:1.11.0' + testImplementation 'junit:junit:4.13.2' + androidTestImplementation 'androidx.test.ext:junit:1.1.5' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.5.1' //沉浸式 -// api 'com.gyf.immersionbar:immersionbar:3.0.0-beta05' - //权限请求 -// api 'com.github.getActivity:XXPermissions:18.63' -// api 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.28' -// api 'androidx.activity:activity:1.3.0' - - api project(':BaseLibrary') -// implementation project(':LocalAarModules:AdCSJSdk') -// implementation project(':LocalAarModules:AdGDTSdk') -// implementation project(':LocalAarModules:AdGDTSdk_Adapter') - - //noinspection Aligned16KB -// implementation 'com.pangle.cn:mediation-sdk:6.6.0.7' //穿山甲融合SDK -// implementation 'com.pangle.cn:GDTSDK-unionNormal:4.610.1480' //GDT 优量汇 -// implementation 'com.pangle.cn:mediation-gdt-adapter:4.610.1480.0' //GDT 优量汇 adapter - + implementation 'com.gyf.immersionbar:immersionbar:3.0.0-beta05' + //gson +// implementation 'com.google.code.gson:gson:2.13.1' +// implementation 'com.alibaba:fastjson:2.0.57' } @@ -83,7 +61,6 @@ afterEvaluate { } repositories { maven { -// url = "file://${projectDir.parent}/maven-repo" // 指向本地目录 url = "file://${projectDir.parent}/maven" // 指向本地目录 } /*maven { @@ -95,21 +72,4 @@ afterEvaluate { }*/ } } -} - -/*publishing { - publications { - maven(MavenPublication) { - groupId = 'com.jiangke.group' // 自定义组织标识 - artifactId = 'lib-name' // 库名称 - version = '1.0.0' // 版本号 - // 指定 AAR 文件路径 - artifact("$buildDir/outputs/aar/${project.name}-release.aar") - } - } - repositories { - maven { - url "file://D:/Android/Code/tfq/JKBaseLib" // 本地临时目录 - } - } -}*/ +} \ No newline at end of file diff --git a/LibraryAd/src/main/AndroidManifest.xml b/LibraryAd/src/main/AndroidManifest.xml index a46ed54..69be653 100644 --- a/LibraryAd/src/main/AndroidManifest.xml +++ b/LibraryAd/src/main/AndroidManifest.xml @@ -112,7 +112,6 @@ diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/ADStateUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/ADStateUtils.java new file mode 100644 index 0000000..f226319 --- /dev/null +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/ADStateUtils.java @@ -0,0 +1,70 @@ +package com.tfq.ad.ad; + +import android.app.Activity; +import android.content.Context; + +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; + +public class ADStateUtils { + private static Activity mContext; + private static String type; + private static SwitchRequestListener switchRequestListener; + + public ADStateUtils(String type, Context mContext) { + this.mContext = (Activity) mContext; + this.type = type; + regexSwitch(); + } + + public static void setSwitchRequestListener(SwitchRequestListener listener) { + switchRequestListener = listener; + } + + public boolean regexSwitch() { + ADConstants._isShow = false; + boolean b = false; + if (ADConstants.AD_Switch_Requested) { + boolean _type; + switch (type) { + case "GMSplashAd": + _type = ADConstants.AD_SPLASH; + break; + case "GMRewardAd": + _type = ADConstants.AD_REWARD; + break; + case "GMInterstitialFullAd": + _type = ADConstants.AD_CQP; + break; + case "GMNativeAd": + _type = ADConstants.AD_NATIVE; + break; + case "GMBannerAd": + _type = ADConstants.AD_BANNER; + break; + default: + _type = false; + break; + } + LogAd.e("广告类型=" + type + + " 穿山甲是否正常=" + ADConstants.adv_csj + + " 强制无广告=" + AdApp.getInstance().isSlotConfig("NO_AD") + + " 当前广告类型是开=" + _type); + if (ADConstants.adv_csj && !AdApp.getInstance().isSlotConfig("NO_AD") && _type) { + b = true; + } + } else { + if (switchRequestListener != null) { + switchRequestListener.onSwitchRequestChanged(false); + switchRequestListener = null; + } + } + return b; + } + + public interface SwitchRequestListener { + void onSwitchRequestChanged(boolean isRequested); + } + +} diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/ADUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/ADUtils.java deleted file mode 100644 index 4a2515c..0000000 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/ADUtils.java +++ /dev/null @@ -1,107 +0,0 @@ -package com.tfq.ad.ad; - -import android.app.Activity; -import android.content.Context; - -import com.google.gson.Gson; -import com.tfq.ad.bean.AdvBean; -import com.tfq.ad.bean.UserInfo; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; - -public class ADUtils { - private static Activity mContext; - private static String type; - - public ADUtils(String type, Context mContext) { - this.mContext = (Activity) mContext; - this.type = type; - regexSwitch(); - } - - public boolean regexSwitch() { - BaseConstants._isShow = false; - boolean b = false; - if (BaseConstants.AD_Switch_Requested) { - boolean _type; - switch (type) { - case "GMSplashAd"://开屏 - _type = BaseConstants.AD_SPLASH; - break; - case "GMRewardAd"://激励 - _type = BaseConstants.AD_REWARD; - break; - case "GMInterstitialFullAd"://插全屏 - _type = BaseConstants.AD_CQP; - break; - case "GMNativeAd"://信息流 - _type = BaseConstants.AD_NATIVE; - break; - case "GMBannerAd"://banner - _type = BaseConstants.AD_BANNER; - break; - default: - _type = false; - break; - } - LogK.e("广告类型=" + type - + " 穿山甲是否正常=" + BaseConstants.adv_csj - + " 强制无广告=" + BaseConstants.NO_AD - + " 当前广告类型是开=" + _type); - if (BaseConstants.adv_csj && !BaseConstants.NO_AD && _type) { - b = true; - } - return b; - } else { - getPlatform(); - } - return b; - } - - private void getPlatform() { - new UserInfo().getAdvertising(new UserInfo.Success() { - @Override - public void Success(String data, String msg) { - try { - Gson gson = new Gson(); - AdvBean entity = gson.fromJson(data, AdvBean.class); - - if (entity.getData() != null) { - AdvBean.DataDTO entityData = entity.getData(); - if ("1".equals(entityData.getAdv1Flag())) { - BaseConstants.AD_SPLASH = true; - } - if ("1".equals(entityData.getAdv2Flag())) { - BaseConstants.AD_REWARD = true; - } - if ("1".equals(entityData.getAdv3Flag())) { - BaseConstants.AD_NATIVE = true; - } - if ("1".equals(entityData.getAdv4Flag())) { - BaseConstants.AD_CQP = true; - } - if ("1".equals(entityData.getAdv5Flag())) { - BaseConstants.AD_BANNER = true; - } - if ("1".equals(entityData.getAdv6Flag())) { - BaseConstants.AD_DRAW = true; - } - if (entityData.getAdv4Wait() > 0) { - BaseConstants.ADV_Wait = entityData.getAdv4Wait(); - } - } else { - BaseConstants.adv_csj = false; - } - } catch (Exception e) { - e.printStackTrace(); - } - BaseConstants.AD_Switch_Requested = true; - } - - @Override - public void fail(int num, String msg) { - } - }); - } - -} \ No newline at end of file diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdBannerUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdBannerUtils.java index 2524550..921e9a0 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdBannerUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdBannerUtils.java @@ -11,14 +11,15 @@ import com.bytedance.sdk.openadsdk.TTAdDislike; import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTFeedAd; import com.bytedance.sdk.openadsdk.TTNativeExpressAd; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; import java.util.List; public class AdBannerUtils { private static Context mContext; - private static String mAdUnitId = BaseConstants.CODE_AD_BANNER; + private static String mAdUnitId = AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_BANNER); private static int width = 0; private static Listener listener; //判断大于多少秒 @@ -34,7 +35,7 @@ public class AdBannerUtils { mContext = context; mBannerContainer = layout; - if (new ADUtils("GMBannerAd", mContext).regexSwitch()) { + if (new ADStateUtils("GMBannerAd", mContext).regexSwitch()) { loadAD(); } } @@ -56,7 +57,7 @@ public class AdBannerUtils { } private static boolean interval() { - if (System.currentTimeMillis() - lastTime > (100 * interval)) { + if (System.currentTimeMillis() - lastTime > (100L * interval)) { return true; } else { return false; @@ -69,7 +70,10 @@ public class AdBannerUtils { int width = (int) (UIUtils.getScreenWidthDp(mContext) - AdBannerUtils.width); int height = (int) ((UIUtils.getScreenWidthDp(mContext) - AdBannerUtils.width) / 4); // height = 0; - LogK.e("AdBannerUtils mAdUnitId=" + mAdUnitId); + LogAd.e("mAdUnitId=" + mAdUnitId); + if (mAdUnitId.equals("0")) { + return; + } AdSlot adSlot = new AdSlot.Builder() .setCodeId(mAdUnitId) .setImageAcceptedSize(UIUtils.dp2px(mContext, width), UIUtils.dp2px(mContext, height)) // 单位px @@ -105,7 +109,7 @@ public class AdBannerUtils { mBannerAd.setSlideIntervalTime(5); } else { - LogK.e("请先加载广告或等待广告加载完毕后再展示广告"); + LogAd.e("请先加载广告或等待广告加载完毕后再展示广告"); } } @@ -115,19 +119,19 @@ public class AdBannerUtils { mBannerListener = new TTAdNative.NativeExpressAdListener() { @Override public void onError(int i, String s) { - LogK.e("banner load fail: errCode: " + i + ", errMsg: " + s); + LogAd.e("banner load fail: errCode: " + i + ", errMsg: " + s); } @Override public void onNativeExpressAdLoad(List list) { if (list != null && list.size() > 0) { - LogK.e("banner load success"); + LogAd.e("banner load success"); mBannerAd = list.get(0); showBannerAd(); } else { - LogK.e("banner load success, but list is null"); + LogAd.e("banner load success, but list is null"); } } }; @@ -137,13 +141,13 @@ public class AdBannerUtils { @Override public void onAdClicked(View view, int i) { - LogK.e("banner clicked"); + LogAd.e("banner clicked"); } @Override public void onAdShow(View view, int i) { - LogK.e("banner showed"); + LogAd.e("banner showed"); } @Override @@ -168,7 +172,7 @@ public class AdBannerUtils { public void onSelected(int i, String s, boolean b) { if (mBannerContainer != null) mBannerContainer.removeAllViews(); - LogK.e("banner closed"); + LogAd.e("banner closed"); } @Override diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdCQPUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdCQPUtils.java index d9a94d4..6245c0d 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdCQPUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdCQPUtils.java @@ -8,14 +8,15 @@ import com.bytedance.sdk.openadsdk.TTAdConstant; import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTFullScreenVideoAd; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; public class AdCQPUtils { private CQP listener; private CQP_Load_Success cqp_load_success; - private String mAdUnitId = BaseConstants.CODE_AD_CQP; + private String mAdUnitId = AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_CQP); public interface CQP { void success(boolean b); @@ -26,11 +27,11 @@ public class AdCQPUtils { } //判断大于多少秒可以下一次开启 - int interval = BaseConstants.ADV_Wait; + int interval = ADConstants.ADV_Wait; static long lastTime = 0; private boolean interval() { - if (System.currentTimeMillis() - lastTime > (1000 * interval)) { + if (System.currentTimeMillis() - lastTime > (1000L * interval)) { return true; } else { return false; @@ -58,7 +59,7 @@ public class AdCQPUtils { public void init(Context mContext, boolean load) { boolean csj = true; - if (new ADUtils("GMInterstitialFullAd", mContext).regexSwitch() && csj && interval()) { + if (new ADStateUtils("GMInterstitialFullAd", mContext).regexSwitch() && csj && interval()) { loadInterstitialFullAd(mContext); } else { if (listener != null) { @@ -73,6 +74,10 @@ public class AdCQPUtils { } private void loadInterstitialFullAd(Context mContext) { + LogAd.e("mAdUnitId=" + mAdUnitId); + if (mAdUnitId.equals("0")) { + return; + } TTAdNative adNativeLoader = TTAdSdk.getAdManager().createAdNative(mContext); AdSlot adslot = new AdSlot.Builder() .setCodeId(mAdUnitId) @@ -82,7 +87,7 @@ public class AdCQPUtils { adNativeLoader.loadFullScreenVideoAd(adslot, new TTAdNative.FullScreenVideoAdListener() { @Override public void onError(int code, String message) { - LogK.e("Screen onError code = " + code + " message = " + message); + LogAd.e("Screen onError code = " + code + " message = " + message); if (listener != null) { listener.success(false); listener = null; @@ -100,12 +105,12 @@ public class AdCQPUtils { @Override public void onFullScreenVideoCached() { - LogK.e("onFullScreenVideoCached"); + LogAd.e("onFullScreenVideoCached"); } @Override public void onFullScreenVideoCached(TTFullScreenVideoAd ttFullScreenVideoAd) { - LogK.e("onFullScreenVideoCached"); + LogAd.e("onFullScreenVideoCached"); showInterstitialFullAd(ttFullScreenVideoAd, mContext); } }); @@ -118,7 +123,7 @@ public class AdCQPUtils { ttFullScreenVideoAd.setFullScreenVideoAdInteractionListener(new TTFullScreenVideoAd.FullScreenVideoAdInteractionListener() { @Override public void onAdShow() { - LogK.e("InterstitialFullActivity onAdShow"); + LogAd.e("InterstitialFullActivity onAdShow"); if (cqp_load_success != null) { cqp_load_success.success(true); cqp_load_success = null; @@ -128,12 +133,12 @@ public class AdCQPUtils { @Override public void onAdVideoBarClick() { - LogK.e("InterstitialFullActivity onAdVideoBarClick"); + LogAd.e("InterstitialFullActivity onAdVideoBarClick"); } @Override public void onAdClose() { - LogK.e("InterstitialFullActivity onAdClose"); + LogAd.e("InterstitialFullActivity onAdClose"); if (listener != null) { listener.success(false); listener = null; @@ -142,12 +147,12 @@ public class AdCQPUtils { @Override public void onVideoComplete() { - LogK.e("InterstitialFullActivity onVideoComplete"); + LogAd.e("InterstitialFullActivity onVideoComplete"); } @Override public void onSkippedVideo() { - LogK.e("InterstitialFullActivity onSkippedVideo"); + LogAd.e("InterstitialFullActivity onSkippedVideo"); } }); ttFullScreenVideoAd.showFullScreenVideoAd((Activity) mContext); @@ -160,7 +165,7 @@ public class AdCQPUtils { public void showInterFullAd(Context mContext, CQP listene) { this.listener = listene; boolean csj = true; - if (new ADUtils("GMInterstitialFullAd", mContext).regexSwitch() && csj) { + if (new ADStateUtils("GMInterstitialFullAd", mContext).regexSwitch() && csj) { loadInterstitialFullAd(mContext); } else { if (listener != null) { diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdFeedUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdFeedUtils.java index 5581cd5..61d984c 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdFeedUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdFeedUtils.java @@ -1,5 +1,6 @@ package com.tfq.ad.ad; +import android.annotation.SuppressLint; import android.app.Activity; import android.content.Context; import android.text.TextUtils; @@ -13,8 +14,9 @@ import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTFeedAd; import com.bytedance.sdk.openadsdk.mediation.ad.MediationExpressRenderListener; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; import java.util.HashMap; import java.util.List; @@ -23,8 +25,9 @@ import java.util.Map; public class AdFeedUtils { public static Map map = new HashMap<>(); public static Map locationMap; + @SuppressLint("StaticFieldLeak") private static Context mContext; - private static String mAdUnitId = LoopAd.getCurrentFeedID(); + private static String mAdUnitId = AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1); private static String tag; private static int width = 0; private static TTAdNative adNativeLoader; @@ -33,9 +36,8 @@ public class AdFeedUtils { private static boolean mIsLoadedAndShow; private static TTFeedAd mTTFeedAd; + @SuppressLint("StaticFieldLeak") private static FrameLayout mFeedContainer; - //判断大于多少秒 - private static int interval = 10; private static long lastTime = 0; private static boolean reload = false; /** @@ -89,7 +91,7 @@ public class AdFeedUtils { } public static void preAD(Context context, int i_width) { - if (new ADUtils("GMNativeAd", context).regexSwitch()) { + if (new ADStateUtils("GMNativeAd", context).regexSwitch()) { width = i_width; mContext = context; mIsLoadedAndShow = false; @@ -100,7 +102,7 @@ public class AdFeedUtils { } private static void show_ad(Context context, FrameLayout feedContainer, String s_tag) { - if (new ADUtils("GMNativeAd", context).regexSwitch() && isNoSkip(s_tag)) { + if (new ADStateUtils("GMNativeAd", context).regexSwitch() && isNoSkip(s_tag)) { mContext = context; mFeedContainer = feedContainer; mIsLoadedAndShow = true; @@ -111,9 +113,9 @@ public class AdFeedUtils { } } - public static void show_ad(Context mContext, String adUnitId, FrameLayout mFeedContainer, int i_width, String tag, int mPage_type) { + public static void show_ad(Context mContext, String adUnitId_currrent, FrameLayout mFeedContainer, int i_width, String tag, int mPage_type) { page_type = mPage_type; - mAdUnitId = adUnitId; + mAdUnitId = adUnitId_currrent; width = i_width; show_ad(mContext, mFeedContainer, tag); @@ -124,10 +126,10 @@ public class AdFeedUtils { if (adNativeLoader == null) { GMNativeADBean bean = CacheADManager.requestHaveAD("feed", mAdUnitId); if (bean == null) { - LogK.e("bean == null"); + LogAd.e("bean == null"); load(); } else { - LogK.e("bean != null"); + LogAd.e("bean != null"); if (mIsLoadedAndShow) { mTTFeedAd = bean.getmGMNativeAD(); show(); @@ -142,7 +144,9 @@ public class AdFeedUtils { } private static boolean interval() { - if (System.currentTimeMillis() - lastTime > (100 * interval)) { + //判断大于多少秒 + int interval = 10; + if (System.currentTimeMillis() - lastTime > (100L * interval)) { return true; } else { return false; @@ -150,7 +154,10 @@ public class AdFeedUtils { } private static void load() { - LogK.e("mAdUnitId=" + mAdUnitId); + LogAd.e("mAdUnitId=" + mAdUnitId); + if (mAdUnitId.equals("0")) { + return; + } if (adNativeLoader == null && interval()) { lastTime = System.currentTimeMillis(); adNativeLoader = TTAdSdk.getAdManager().createAdNative(mContext); @@ -160,7 +167,7 @@ public class AdFeedUtils { adNativeLoader.loadFeedAd(adSlot, new TTAdNative.FeedAdListener() { @Override public void onError(int i, String s) { - LogK.e("onError code = " + i + " msg = " + s); + LogAd.e("onError code = " + i + " msg = " + s); removeAD(); if (adNativeLoader != null) { adNativeLoader = null; @@ -178,14 +185,14 @@ public class AdFeedUtils { } mTTFeedAd = ads.get(0); - if (listenerAD != null && map.get(tag)) { + if (listenerAD != null && Boolean.TRUE.equals(map.get(tag))) { listenerAD.success(ads.get(0)); listenerAD = null; } CacheADManager.addAdLoaded("feed", mAdUnitId, ads.get(0)); - LogK.e("map.get(tag)=" + map.get(tag)); - if (mIsLoadedAndShow && map.get(tag)) { + LogAd.e("map.get(tag)=" + map.get(tag)); + if (mIsLoadedAndShow && Boolean.TRUE.equals(map.get(tag))) { if (mFeedContainer != null) { // new AdPreAndLevelUtils().setThisTime(page_type); AdPreAndLevelUtils.setTagTime(tag, System.currentTimeMillis()); @@ -202,14 +209,14 @@ public class AdFeedUtils { private static void show() { if (mTTFeedAd == null || mTTFeedAd.getMediationManager() == null) { - LogK.e("请先加载广告或等待广告加载完毕后再调用show方法"); + LogAd.e("请先加载广告或等待广告加载完毕后再调用show方法"); // loadAD(); if (adNativeLoader != null) { adNativeLoader = null; } return; } - if (mTTFeedAd.getMediationManager().isExpress() && mFeedContainer != null && map.get(tag)) { //模板 + if (mTTFeedAd.getMediationManager().isExpress() && mFeedContainer != null && Boolean.TRUE.equals(map.get(tag))) { //模板 mFeedContainer.setVisibility(View.VISIBLE); showExpressView(mFeedContainer, mTTFeedAd); } else { @@ -223,17 +230,17 @@ public class AdFeedUtils { mTTFeedAd.setExpressRenderListener(new MediationExpressRenderListener() { @Override public void onRenderFail(View view, String s, int i) { - LogK.e("onRenderFail"); + LogAd.e("onRenderFail"); } @Override public void onAdClick() { - LogK.e("onAdClick"); + LogAd.e("onAdClick"); } @Override public void onAdShow() { - LogK.e("onAdShow"); + LogAd.e("onAdShow"); if (listener != null) { listener.success(true); @@ -247,23 +254,23 @@ public class AdFeedUtils { } if (new AdPreAndLevelUtils().getPre(page_type)) { - LogK.e("pre();"); + LogAd.e("当前页ad预加载"); pre(); } } @Override public void onRenderSuccess(View view, float v, float v1, boolean b) { - LogK.e("onRenderSuccess"); + LogAd.e("onRenderSuccess"); mTTFeedAd.setDislikeCallback((Activity) mContext, new TTAdDislike.DislikeInteractionCallback() { @Override public void onShow() { - LogK.e("express dislike 点击show"); + LogAd.e("express dislike 点击show"); } @Override public void onSelected(int i, String s, boolean b) { - LogK.e("\"express 点击 " + s); + LogAd.e("\"express 点击 " + s); removeAdView(); if (mFeedContainer != null) { mFeedContainer.setVisibility(View.GONE); @@ -273,7 +280,7 @@ public class AdFeedUtils { @Override public void onCancel() { - LogK.e("express dislike 点击了取消"); + LogAd.e("express dislike 点击了取消"); } }); @@ -297,20 +304,18 @@ public class AdFeedUtils { removeAD(); mTTFeedAd.render(); - LogK.e("render"); + LogAd.e("render"); } private static void pre() { - if (BaseConstants.PRE_AD) { - String currentFeedID = LoopAd.getCurrentFeedID(); - if (currentFeedID != null) { - if (!CacheADManager.getContentID(currentFeedID)) { - if (false) {//如果轮播就是true - LoopAd.AdFeedIdAdd(); - } - mAdUnitId = LoopAd.getCurrentFeedID(); - preAD(mContext, 20); + String currentFeedID = LoopAd.getCurrentFeedID(); + if (currentFeedID != null) { + if (!CacheADManager.getContentID(currentFeedID)) { + if (false) {//如果轮播就是true + LoopAd.rotateFeedId(); } + mAdUnitId = LoopAd.getCurrentFeedID(); + preAD(mContext, 20); } } } @@ -326,7 +331,7 @@ public class AdFeedUtils { } private static void removeAdView() { - LogK.e("removeAdView"); + LogAd.e("removeAdView"); if (mFeedContainer != null) { mFeedContainer.removeAllViews(); } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdPreAndLevelUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdPreAndLevelUtils.java index de44b54..9975907 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdPreAndLevelUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdPreAndLevelUtils.java @@ -2,7 +2,7 @@ package com.tfq.ad.ad; import android.text.TextUtils; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import java.util.HashMap; import java.util.Map; @@ -30,9 +30,9 @@ public class AdPreAndLevelUtils { } public boolean getPage_Interval(int page) { - LogK.e("page1_interval=" + page1_interval); - LogK.e("page2_interval=" + page2_interval); - LogK.e("page3_interval=" + page3_interval); + LogAd.e("page1_interval=" + page1_interval); + LogAd.e("page2_interval=" + page2_interval); + LogAd.e("page3_interval=" + page3_interval); if (page == 1) { return get_interval_page1(); } else if (page == 2) { @@ -44,9 +44,9 @@ public class AdPreAndLevelUtils { } public boolean getPage_Interval(String tag, int page_level) { - /*LogK.e("page1_interval=" + page1_interval); - LogK.e("page2_interval=" + page2_interval); - LogK.e("page3_interval=" + page3_interval); + /*LogAd.e("page1_interval=" + page1_interval); + LogAd.e("page2_interval=" + page2_interval); + LogAd.e("page3_interval=" + page3_interval); if (page == 1) { return get_interval_page1(); } else if (page == 2) { diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdRewardUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdRewardUtils.java index 6b1e103..a6bbf8f 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdRewardUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdRewardUtils.java @@ -13,18 +13,18 @@ import com.bytedance.sdk.openadsdk.mediation.MediationConstant; import com.bytedance.sdk.openadsdk.mediation.ad.MediationAdSlot; import com.bytedance.sdk.openadsdk.mediation.manager.MediationAdEcpmInfo; import com.bytedance.sdk.openadsdk.mediation.manager.MediationBaseManager; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; -import com.tfq.library.utils.ToasterUtil; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; public class AdRewardUtils { static long lastTime = 0; private static Boolean requestAD = false; + private final String mAdUnitId = AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_REWARD); //判断大于多少秒可以下一次开启 - int interval = BaseConstants.ADV_Wait; + int interval = ADConstants.ADV_Wait; private Listener listener; - private String mAdUnitId = BaseConstants.CODE_AD_CQP; private TTRewardVideoAd mTTRewardVideoAd; // 插全屏广告对象 private TTAdNative.RewardVideoAdListener mRewardVideoListener; // 广告加载监听器 private TTRewardVideoAd.RewardAdInteractionListener mRewardVideoAdInteractionListener; // 广告展示监听器 @@ -57,7 +57,7 @@ public class AdRewardUtils { } public static void logEcpmInfo(MediationAdEcpmInfo item) { - LogK.e("EcpmInfo: \n" + + LogAd.e("EcpmInfo: \n" + "SdkName: " + item.getSdkName() + ",\n" + "CustomSdkName: " + item.getCustomSdkName() + ",\n" + "SlotId: " + item.getSlotId() + ",\n" + @@ -94,14 +94,15 @@ public class AdRewardUtils { } public void init(Context mContext, boolean load) { - boolean csj = true; - if (new ADUtils("GMRewardAd", mContext).regexSwitch() && csj) { + LogAd.e("mAdUnitId=" + mAdUnitId); + if (mAdUnitId.equals("0")) { + success(); + return; + } + if (new ADStateUtils("GMRewardAd", mContext).regexSwitch()) { loadRewardVideoAd(mContext); } else { - if (listener != null) { - listener.success(false); - listener = null; - } + success(); } } @@ -109,7 +110,7 @@ public class AdRewardUtils { /** 1、创建AdSlot对象 */ AdSlot adslot = new AdSlot.Builder() - .setCodeId(BaseConstants.CODE_AD_REWARD) + .setCodeId(mAdUnitId) .setOrientation(TTAdConstant.ORIENTATION_VERTICAL) .setMediationAdSlot(new MediationAdSlot .Builder() @@ -137,13 +138,13 @@ public class AdRewardUtils { this.mRewardVideoListener = new TTAdNative.RewardVideoAdListener() { @Override public void onError(int i, String s) { - LogK.e("reward load fail: errCode: " + i + ", errMsg: " + s); + LogAd.e("reward load fail: errCode: " + i + ", errMsg: " + s); } @Override public void onRewardVideoAdLoad(TTRewardVideoAd ttRewardVideoAd) { - LogK.e("reward load success"); + LogAd.e("reward load success"); loadingDialog.cancel(); mTTRewardVideoAd = ttRewardVideoAd; showRewardVideoAd(mContext); @@ -152,13 +153,13 @@ public class AdRewardUtils { @Override public void onRewardVideoCached() { - LogK.e("reward cached success"); + LogAd.e("reward cached success"); } @Override public void onRewardVideoCached(TTRewardVideoAd ttRewardVideoAd) { - LogK.e("reward cached success 2"); + LogAd.e("reward cached success 2"); mTTRewardVideoAd = ttRewardVideoAd; showRewardVideoAd(mContext); } @@ -169,35 +170,35 @@ public class AdRewardUtils { @Override public void onAdShow() { - LogK.e("reward show"); + LogAd.e("reward show"); } @Override public void onAdVideoBarClick() { - LogK.e("reward click"); + LogAd.e("reward click"); } @Override public void onAdClose() { - LogK.e("reward close"); + LogAd.e("reward close"); } @Override public void onVideoComplete() { - LogK.e("reward onVideoComplete"); + LogAd.e("reward onVideoComplete"); success(); } @Override public void onVideoError() { - LogK.e("reward onVideoError"); + LogAd.e("reward onVideoError"); } @Override public void onRewardVerify(boolean b, int i, String s, int i1, String s1) { - LogK.e("reward onRewardVerify"); + LogAd.e("reward onRewardVerify"); } @Override @@ -212,9 +213,10 @@ public class AdRewardUtils { @Override public void onSkippedVideo() { - LogK.e("reward onSkippedVideo"); + LogAd.e("reward onSkippedVideo"); if (!isRewardValid) { - ToasterUtil.show("看完视频才可以获得奖励",3); +// ToasterUtil.show("看完视频才可以获得奖励", 3); + success(); } } }; @@ -223,7 +225,7 @@ public class AdRewardUtils { // 广告加载成功后,开始展示广告 private void showRewardVideoAd(Context mContext) { if (mTTRewardVideoAd == null) { - LogK.e("请先加载广告或等待广告加载完毕后再调用show方法"); + LogAd.e("请先加载广告或等待广告加载完毕后再调用show方法"); return; } @@ -233,19 +235,22 @@ public class AdRewardUtils { mTTRewardVideoAd.showRewardVideoAd((Activity) mContext); } - public interface Listener { - void success(boolean b); - } - private void success() { if (listener != null) { if (isRewardValid) { listener.success(true); } else { + if (loadingDialog != null) { + loadingDialog.cancel(); + } listener.success(false); } listener = null; } } + public interface Listener { + void success(boolean b); + } + } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/AdSplashUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/AdSplashUtils.java index e08fb2e..b1d4691 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/AdSplashUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/AdSplashUtils.java @@ -11,14 +11,18 @@ import com.bytedance.sdk.openadsdk.CSJAdError; import com.bytedance.sdk.openadsdk.CSJSplashAd; import com.bytedance.sdk.openadsdk.CSJSplashCloseType; import com.bytedance.sdk.openadsdk.TTAdNative; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; + +import java.util.Objects; public class AdSplashUtils { - private Context mContext; - private FrameLayout mSplashContainer; + private final Context mContext; + private final FrameLayout mSplashContainer; private CSJSplashAd mCsjSplashAd; private Listener listener; + private final String mAdUnitId = AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_SPLASH); public interface Listener { void success(long time); @@ -37,17 +41,22 @@ public class AdSplashUtils { private CSJSplashAd.SplashAdListener mCSJSplashInteractionListener; public void loadAndShowSplashAd() { - if (new ADUtils("GMSplashAd", mContext).regexSwitch()) { - LogK.e("init kaiping"); + if (new ADStateUtils("GMSplashAd", mContext).regexSwitch()) { + LogAd.e("init kaiping"); init(); - } else if (listener != null) { - listener.success(0); + } else { + finishAndBack(0); } } private void init() { - new Handler(Looper.myLooper()).postDelayed(new Runnable() { + LogAd.e("mAdUnitId=" + mAdUnitId); + if (mAdUnitId.equals("0")) { + finishAndBack(0); + return; + } + new Handler(Objects.requireNonNull(Looper.myLooper())).postDelayed(new Runnable() { @Override public void run() { finishAndBack(0); @@ -55,7 +64,7 @@ public class AdSplashUtils { }, 9000); AdSlot adSlot = new AdSlot.Builder() - .setCodeId(BaseConstants.CODE_AD_SPLASH) + .setCodeId(mAdUnitId) .setImageAcceptedSize(UIUtils.getScreenWidthInPx(mContext), UIUtils.getAllScreenHeight(mContext)) .build(); TTAdNative adNativeLoader = TTAdManagerHolder.get().createAdNative(mContext); @@ -69,7 +78,7 @@ public class AdSplashUtils { @Override public void onSplashRenderSuccess(CSJSplashAd csjSplashAd) { /** 5、渲染成功后,展示广告 */ - LogK.e("splash render success"); + LogAd.e("splash render success"); mCsjSplashAd = csjSplashAd; csjSplashAd.setSplashAdListener(mCSJSplashInteractionListener); View splashView = csjSplashAd.getSplashView(); @@ -79,7 +88,7 @@ public class AdSplashUtils { } public void onSplashLoadSuccess() { - LogK.e("splash load success"); + LogAd.e("splash load success"); } @Override @@ -91,7 +100,7 @@ public class AdSplashUtils { @Override public void onSplashLoadFail(CSJAdError csjAdError) { - LogK.e("splash load fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); + LogAd.e("splash load fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); finishAndBack(0); } @@ -99,7 +108,7 @@ public class AdSplashUtils { @Override public void onSplashRenderFail(CSJSplashAd csjSplashAd, CSJAdError csjAdError) { - LogK.e("splash render fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); + LogAd.e("splash render fail, errCode: " + csjAdError.getCode() + ", errMsg: " + csjAdError.getMsg()); finishAndBack(0); } @@ -110,26 +119,26 @@ public class AdSplashUtils { @Override public void onSplashAdShow(CSJSplashAd csjSplashAd) { - LogK.d("splash show"); + LogAd.d("splash show"); } @Override public void onSplashAdClick(CSJSplashAd csjSplashAd) { - LogK.d("splash click"); + LogAd.d("splash click"); } @Override public void onSplashAdClose(CSJSplashAd csjSplashAd, int closeType) { if (closeType == CSJSplashCloseType.CLICK_SKIP) { - LogK.d("开屏广告点击跳过"); + LogAd.d("开屏广告点击跳过"); finishAndBack(0); } else if (closeType == CSJSplashCloseType.COUNT_DOWN_OVER) { - LogK.d("开屏广告点击倒计时结束"); + LogAd.d("开屏广告点击倒计时结束"); finishAndBack(0); } else if (closeType == CSJSplashCloseType.CLICK_JUMP) { - LogK.d("点击跳转"); + LogAd.d("点击跳转"); } } }; diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/CacheADManager.java b/LibraryAd/src/main/java/com/tfq/ad/ad/CacheADManager.java index dbd2eac..6c4b3d0 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/CacheADManager.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/CacheADManager.java @@ -1,20 +1,19 @@ package com.tfq.ad.ad; import com.bytedance.sdk.openadsdk.TTFeedAd; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import java.util.ArrayList; import java.util.List; public class CacheADManager { private static List mGMNativeADBean; + private static int contentID = -1; public static void init() { mGMNativeADBean = new ArrayList<>(); } - private static int contentID = -1; - public static List getAdBean() { return mGMNativeADBean; } @@ -60,9 +59,9 @@ public class CacheADManager { case "feed": while (getContentID(mAdUnitId)) { mGMNativeADBean.remove(contentID); - LogK.e("移除该广告"); + LogAd.e("移除该广告"); } - LogK.e("移除广告完成! "); + LogAd.e("移除广告完成! "); break; } } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java b/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java index 0054e54..ed79288 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/LoadingDialog.java @@ -38,7 +38,7 @@ public class LoadingDialog extends Dialog { } private void setViews() { - contentView = inflater.inflate(R.layout.layout_dialog_loading, null); + contentView = inflater.inflate(R.layout.ad_dialog_loading, null); setContentView(contentView); ImageView loadingImageView = contentView.findViewById(R.id.loading_imageview); diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/LoopAd.java b/LibraryAd/src/main/java/com/tfq/ad/ad/LoopAd.java index cd86923..1de3bc2 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/LoopAd.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/LoopAd.java @@ -1,94 +1,73 @@ + package com.tfq.ad.ad; -import android.util.Log; +import android.os.Build; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; - -import java.util.ArrayList; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.LogAd; +import java.util.Collections; import java.util.List; +import java.util.stream.IntStream; public class LoopAd { + private static final List FEED_ADS = initFeedAds(); + private static final List SCREEN_ADS = Collections.singletonList("0"); + private static final List SPLASH_ADS = Collections.singletonList("0"); + private static final List DRAW_ADS = Collections.singletonList("0"); - static List feedAD = new ArrayList(); - static List newFeedAD = new ArrayList(); - static int thisCurrentFeedID = 0; - static List drawAD = new ArrayList(); - static int thisCurrentDrawID = 0; - static List screenAD = new ArrayList(); - static int thisCurrentScreenID = 0; - static List splashAD = new ArrayList(); - static int thisCurrentSplashID = 0; + private static int currentFeedIndex = 0; - public LoopAd() { - init(); - } - - public static void AdFeedIdAdd() { - if (thisCurrentFeedID < newFeedAD.size() - 1) { - thisCurrentFeedID++; - } else { - thisCurrentFeedID = 0; + /** + * 添加进所有的信息流id + * @return + */ + private static List initFeedAds() { + List ads = null; + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.UPSIDE_DOWN_CAKE) { + ads = IntStream.rangeClosed(1, 3) + .mapToObj(i -> AdApp.getInstance().getSlotConfig(ADConstants.CODE_AD_FEED + i)) + .filter(slot -> !"0".equals(slot)) + .toList(); } + return ads.isEmpty() ? Collections.singletonList("0") : ads; } + /** + * 用于循环切换广告索引,实现广告轮播效果 + * 信息流当前位置+1 + */ + public static void rotateFeedId() { + currentFeedIndex = (currentFeedIndex < FEED_ADS.size() - 1) ? + currentFeedIndex + 1 : 0; + } + + /** + * 返回当前的信息流id + * @return + */ public static String getCurrentFeedID() { - return newFeedAD.get(thisCurrentFeedID); + return FEED_ADS.get(currentFeedIndex); } - public static String getNextFeedID() { - int nextFeedID = 0; - if (thisCurrentFeedID < newFeedAD.size() - 1) { - nextFeedID = thisCurrentFeedID + 1; - } else { - nextFeedID = 0; - } - LogK.e("nextFeedID=" + nextFeedID); - return newFeedAD.get(nextFeedID); + /** + * 获取下一个信息流id + * @return + */ + public static String getNextFeedId() { + int nextIndex = (currentFeedIndex < FEED_ADS.size() - 1) ? + currentFeedIndex + 1 : 0; + LogAd.e("nextFeedIndex=" + nextIndex); + return FEED_ADS.get(nextIndex); } - private void init() { - newFeedAD = new ArrayList(); - newFeedAD.add(BaseConstants.csjIdFeed1); - LogK.e("TT BaseConstants.csjIdFeed1=" + BaseConstants.csjIdFeed1); - newFeedAD.add(BaseConstants.csjIdFeed2); - LogK.e("TT BaseConstants.csjIdFeed2=" + BaseConstants.csjIdFeed2); - if (feedAD.size() == 0) { - feedAD.add("0"); - } - if (screenAD.size() == 0) { - screenAD.add("0"); - } - if (splashAD.size() == 0) { - splashAD.add("0"); - } - if (drawAD.size() == 0) { - drawAD.add("0"); - } + /** + * 根据位置获取信息流广告 + * @param position + * @return + */ + public static String getAdByPosition(int position) { + return (position >= 0 && position < FEED_ADS.size()) ? + FEED_ADS.get(position) : FEED_ADS.get(0); } - - public String GMNativeAd(int num) { - if (newFeedAD.size() > num) { - if (0 == num) { - String ad = newFeedAD.get(0); - if (ad != null) { - return ad; - } else { - return newFeedAD.get(0); - } - } else if (1 == num) { - String ad = newFeedAD.get(1); - if (ad != null) { - return ad; - } else { - return newFeedAD.get(0); - } - } else { - return newFeedAD.get(0); - } - } else { - return newFeedAD.get(0); - } - } - } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/SplashUtils.java b/LibraryAd/src/main/java/com/tfq/ad/ad/SplashUtils.java index 7c2acc8..2c41054 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/SplashUtils.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/SplashUtils.java @@ -2,12 +2,13 @@ package com.tfq.ad.ad; import android.app.Activity; import android.content.Intent; +import android.util.Log; import com.tfq.ad.ad.activity.AdSplashActivity; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.AppUtil; -import com.tfq.library.utils.DateUtils; -import com.tfq.library.utils.LogK; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.utils.AdAppUtil; +import com.tfq.ad.utils.DateUtils; +import com.tfq.ad.utils.LogAd; import java.util.Timer; import java.util.TimerTask; @@ -23,7 +24,7 @@ public class SplashUtils { * @param mActivity */ public void startTimerTask(Activity mActivity) { - BaseConstants.request_splash_time = Long.parseLong(DateUtils.timeStamp()); + ADConstants.request_splash_time = DateUtils.currentTimeStamp(); if (task == null) { Timer timer = new Timer(); task = new TimerTask() { @@ -32,22 +33,23 @@ public class SplashUtils { mActivity.runOnUiThread(new Runnable() { @Override public void run() { - long time = Long.parseLong(DateUtils.timeStamp()) - BaseConstants.request_splash_time; - if (!AppUtil.isRunningForeground(mActivity)) {//前台 -// LogK.e("相差time=" + time); - if (Long.parseLong(DateUtils.timeStamp()) - BaseConstants.request_splash_time >= 20) { - LogK.e("应当开启开屏页"); - if (!BaseConstants._isShow) { - BaseConstants._isShow = true; - if (new ADUtils("GMSplashAd", mActivity).regexSwitch()) { + long time = DateUtils.currentTimeStamp() - ADConstants.request_splash_time; + if (!AdAppUtil.isRunningForeground(mActivity)) {//前台 + LogAd.e("APP处于前台状态"); +// LogAd.e("相差time=" + time); + if (DateUtils.currentTimeStamp() - ADConstants.request_splash_time >= 20) { + LogAd.e("应当开启开屏页"); + if (!ADConstants._isShow) { + ADConstants._isShow = true; + if (new ADStateUtils("GMSplashAd", mActivity).regexSwitch()) { Intent intent = new Intent(mActivity, AdSplashActivity.class); mActivity.startActivity(intent); } } } - BaseConstants.request_splash_time = Long.parseLong(DateUtils.timeStamp()); + ADConstants.request_splash_time = DateUtils.currentTimeStamp(); } else { - LogK.e("APP后台状态time=" + time); + LogAd.e("APP后台状态time=" + time + "秒"); } } }); diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/TTAdManagerHolder.java b/LibraryAd/src/main/java/com/tfq/ad/ad/TTAdManagerHolder.java index cb20c06..0b00e6d 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/TTAdManagerHolder.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/TTAdManagerHolder.java @@ -10,9 +10,9 @@ import com.bytedance.sdk.openadsdk.TTCustomController; import com.bytedance.sdk.openadsdk.mediation.init.MediationConfig; import com.bytedance.sdk.openadsdk.mediation.init.MediationConfigUserInfoForSegment; import com.bytedance.sdk.openadsdk.mediation.init.MediationPrivacyConfig; +import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import org.json.JSONException; import org.json.JSONObject; @@ -46,11 +46,19 @@ public class TTAdManagerHolder { new Handler().postDelayed(new Runnable() { @Override public void run() { - if (adInitState != 1) { + if (adInitState != 1 && adSuccess != null) { adSuccess.error(); + adSuccess = null; } } - }, 5000); + }, 7000); + + + if (!sInit) { + LogAd.e("没有初始化, 直接回调错误"); + adSuccess.error(); + adSuccess = null; + } } public static TTAdManager get() { @@ -62,6 +70,10 @@ public class TTAdManagerHolder { doInit(context); } + public static void init_not() { + + } + //step1:接入网盟广告sdk的初始化操作,详情见接入文档和穿山甲平台说明 private static void doInit(Context context) { if (sInit) { @@ -91,7 +103,7 @@ public class TTAdManagerHolder { TTAdSdk.start(new TTAdSdk.Callback() { @Override public void success() { - LogK.i("success: " + TTAdSdk.isInitSuccess()); + LogAd.i("success: " + TTAdSdk.isInitSuccess()); // startActivity(context); adInitState = 1; if (adSuccess != null) { @@ -102,7 +114,7 @@ public class TTAdManagerHolder { @Override public void fail(int code, String msg) { sStart = false; - LogK.i("fail: code = " + code + " msg = " + msg); + LogAd.i("fail: code = " + code + " msg = " + msg); adInitState = 2; if (adSuccess != null) { adSuccess.error(); @@ -114,11 +126,11 @@ public class TTAdManagerHolder { private static TTAdConfig buildConfig(Context context) { - LogK.e("TT BaseConstants.CSJ_ID="+ BaseConstants.CSJ_ID); + LogAd.e("TT CSJID=" + AdApp.getInstance().getSlotConfig(ADConstants.AD_CSJID)); return new TTAdConfig.Builder() /** * 注:需要替换成在媒体平台申请的appID ,切勿直接复制 - */.appId(BaseConstants.CSJ_ID).appName(BaseConstants.APP_NAME).paid(true) + */.appId(AdApp.getInstance().getSlotConfig(ADConstants.AD_CSJID)).appName(AdApp.getInstance().getAppName()).paid(true) /** * 上线前需要关闭debug开关,否则会影响性能 */.debug(false) @@ -135,7 +147,7 @@ public class TTAdManagerHolder { JSONObject jsonObject = null; //读取json文件,本地缓存的配置 try { - jsonObject = new JSONObject(getJson("site_config_" + BaseConstants.CSJ_ID, context)); + jsonObject = new JSONObject(getJson("site_config_" + AdApp.getInstance().getSlotConfig(ADConstants.AD_CSJID), context)); } catch (JSONException e) { e.printStackTrace(); } @@ -161,7 +173,7 @@ public class TTAdManagerHolder { MediationConfigUserInfoForSegment userInfo = new MediationConfigUserInfoForSegment(); userInfo.setUserId("msdk-demo"); userInfo.setGender(MediationConfigUserInfoForSegment.GENDER_MALE); - userInfo.setChannel(BaseConstants.CHANNEL); + userInfo.setChannel(AdApp.getInstance().getChannel()); userInfo.setSubChannel("msdk-sub-channel"); userInfo.setAge(999); userInfo.setUserValueGroup("msdk-demo-user-value-group"); @@ -178,8 +190,8 @@ public class TTAdManagerHolder { @Override public boolean isCanUseLocation() { boolean b = true; - String channel = BaseConstants.CHANNEL; - LogK.d("TT channel=" + channel); + String channel = AdApp.getInstance().getChannel(); + LogAd.d("TT channel=" + channel); if (channel != null) { if (channel.equals("oppo")) { b = false; @@ -235,8 +247,8 @@ public class TTAdManagerHolder { @Override public boolean isCanUseOaid() { boolean b = true; - String channel = BaseConstants.CHANNEL; - LogK.d("TT channel2=" + channel); + String channel = AdApp.getInstance().getChannel(); + LogAd.d("TT channel2=" + channel); if (channel != null) { if (channel.equals("honor")) { b = false; @@ -255,8 +267,8 @@ public class TTAdManagerHolder { @Override public boolean alist() { boolean b = true; - String channel = BaseConstants.CHANNEL; - LogK.d("TT channel3=" + channel); + String channel = AdApp.getInstance().getChannel(); + LogAd.d("TT channel3=" + channel); if (channel != null) { if (channel.equals("ali") || channel.equals("oppo") || channel.equals("vivo") || channel.equals("huawei") || channel.equals("honor") || channel.equals("xiaomi")) { diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/activity/AdSplashActivity.java b/LibraryAd/src/main/java/com/tfq/ad/ad/activity/AdSplashActivity.java index 4c12cf2..e03072d 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/activity/AdSplashActivity.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/activity/AdSplashActivity.java @@ -1,48 +1,59 @@ package com.tfq.ad.ad.activity; +import android.app.Activity; import android.os.Bundle; import android.view.KeyEvent; import android.widget.FrameLayout; import android.widget.ImageView; +import com.gyf.immersionbar.ImmersionBar; import com.tfq.ad.ad.AdSplashUtils; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.base.BaseActivity; -import com.tfq.library.utils.AppUtil; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; +import com.tfq.ad.utils.AdAppUtil; import com.tfq.libraryad.R; -public class AdSplashActivity extends BaseActivity { +import androidx.annotation.Nullable; + +public class AdSplashActivity extends Activity { FrameLayout mSplashContainer; ImageView ivSplash; AdSplashUtils mAdSplashManager; @Override + protected void onCreate(@Nullable Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(getLayoutId()); + initView(); + initData(); + ImmersionBar.with(this) + .transparentStatusBar() //不写也可以,默认就是透明色 +// .statusBarDarkFont(statusBarDarkFont) +// .navigationBarColor(ADConstants.navigationBarColor) +// .keyboardEnable(true) + .init(); + } + protected int getLayoutId() { return R.layout.ad_splash; } - @Override protected void initView() { - AppUtil.setHideBar_StatusAndNavigation(this); + AdAppUtil.setHideBar_StatusAndNavigation(this); setContentView(R.layout.ad_splash); mSplashContainer = findViewById(R.id.frameLayout); ivSplash = findViewById(R.id.iv_splash); - ivSplash.setBackgroundResource(BaseConstants.appSplash); - } - - @Override - protected void initData(Bundle savedInstanceState) { - initData(); + ivSplash.setBackgroundResource(AdApp.getInstance().getSplash()); } protected void initData() { - BaseConstants._isShow = true; + ADConstants._isShow = true; mAdSplashManager = new AdSplashUtils(this, mSplashContainer, new AdSplashUtils.Listener() { @Override public void success(long time) { finish(); - BaseConstants._isShow = false; + ADConstants._isShow = false; } }); } diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerInterstitial.java b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerInterstitial.java index 61a11b7..911fe45 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerInterstitial.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerInterstitial.java @@ -10,7 +10,7 @@ import com.bytedance.sdk.openadsdk.mediation.custom.MediationCustomServiceConfig import com.qq.e.ads.interstitial2.UnifiedInterstitialAD; import com.qq.e.ads.interstitial2.UnifiedInterstitialADListener; import com.qq.e.comm.util.AdError; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -39,13 +39,13 @@ public class GdtCustomerInterstitial extends MediationCustomInterstitialLoader { @Override public void onADReceive() { isLoadSuccess = true; - LogK.i(TAG + "onADReceive"); + LogAd.i(TAG + "onADReceive"); if (isClientBidding()) { //bidding类型广告 double ecpm = mUnifiedInterstitialAD.getECPM();//当无权限调用该接口时,SDK会返回错误码-1 if (ecpm < 0) { ecpm = 0; } - LogK.e(TAG + " ecpm:" + ecpm); + LogAd.e(TAG + " ecpm:" + ecpm); callLoadSuccess(ecpm); } else {//普通类型广告 callLoadSuccess(); @@ -54,14 +54,14 @@ public class GdtCustomerInterstitial extends MediationCustomInterstitialLoader { @Override public void onVideoCached() { - LogK.i(TAG + "onVideoCached"); + LogAd.i(TAG + "onVideoCached"); } @Override public void onNoAD(AdError adError) { isLoadSuccess = false; if (adError != null) { - LogK.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); + LogAd.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); callLoadFail(adError.getErrorCode(), adError.getErrorMsg()); } else { callLoadFail(40000, "no ad"); @@ -70,31 +70,31 @@ public class GdtCustomerInterstitial extends MediationCustomInterstitialLoader { @Override public void onADOpened() { - LogK.i(TAG + "onADOpened"); + LogAd.i(TAG + "onADOpened"); callInterstitialAdOpened(); } @Override public void onADExposure() { - LogK.i(TAG + "onADExposure"); + LogAd.i(TAG + "onADExposure"); callInterstitialShow(); } @Override public void onADClicked() { - LogK.i(TAG + "onADClicked"); + LogAd.i(TAG + "onADClicked"); callInterstitialAdClick(); } @Override public void onADLeftApplication() { - LogK.i(TAG + "onADLeftApplication"); + LogAd.i(TAG + "onADLeftApplication"); callInterstitialAdLeftApplication(); } @Override public void onADClosed() { - LogK.i(TAG + "onADClosed"); + LogAd.i(TAG + "onADClosed"); callInterstitialClosed(); } @@ -124,7 +124,7 @@ public class GdtCustomerInterstitial extends MediationCustomInterstitialLoader { @Override public void showAd(Activity activity) { - LogK.i(TAG + "自定义的showAd"); + LogAd.i(TAG + "自定义的showAd"); /** * 先切子线程,再在子线程中切主线程进行广告展示 */ @@ -173,19 +173,19 @@ public class GdtCustomerInterstitial extends MediationCustomInterstitialLoader { @Override public void onPause() { super.onPause(); - LogK.i(TAG + "onPause"); + LogAd.i(TAG + "onPause"); } @Override public void onResume() { super.onResume(); - LogK.i(TAG + "onResume"); + LogAd.i(TAG + "onResume"); } @Override public void onDestroy() { super.onDestroy(); - LogK.i(TAG + "onDestroy"); + LogAd.i(TAG + "onDestroy"); /** * 在子线程中进行广告销毁 diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerNative.java b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerNative.java index 0011bfa..01cc470 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerNative.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerNative.java @@ -13,7 +13,7 @@ import com.qq.e.ads.nativ.NativeExpressADView; import com.qq.e.ads.nativ.NativeUnifiedAD; import com.qq.e.ads.nativ.NativeUnifiedADData; import com.qq.e.comm.util.AdError; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import java.util.ArrayList; import java.util.HashMap; @@ -32,12 +32,12 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { /** * 在子线程中进行广告加载 */ - LogK.e(TAG + "load gdt custom native ad-----"); + LogAd.e(TAG + "load gdt custom native ad-----"); ThreadUtils.runOnThreadPool(new Runnable() { @Override public void run() { if (isNativeAd()) { - LogK.i(TAG + "自渲染"); + LogAd.i(TAG + "自渲染"); //自渲染类型 NativeUnifiedAD nativeUnifiedAD = null; NativeADUnifiedListener nativeADUnifiedListener = new NativeADUnifiedListener() { @@ -58,7 +58,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { if (ecpm < 0) { ecpm = 0; } - LogK.e(TAG + "ecpm:" + ecpm); + LogAd.e(TAG + "ecpm:" + ecpm); gdtNativeAd.setBiddingPrice(ecpm); //回传竞价广告价格 } tempList.add(gdtNativeAd); @@ -69,7 +69,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onNoAD(AdError adError) { if (adError != null) { - LogK.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); + LogAd.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); callLoadFail(adError.getErrorCode(), adError.getErrorMsg()); } else { callLoadFail(40000, "no ad"); @@ -92,7 +92,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { } nativeUnifiedAD.loadData(1); } else if (isExpressRender()) { - LogK.i(TAG + "模板"); + LogAd.i(TAG + "模板"); //模板类型 NativeExpressAD nativeExpressAD = null; NativeExpressAD.NativeExpressADListener nativeExpressADListener = new NativeExpressAD.NativeExpressADListener() { @@ -115,7 +115,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { if (ecpm < 0) { ecpm = 0; } - LogK.e(TAG + " ecpm:" + ecpm); + LogAd.e(TAG + " ecpm:" + ecpm); gdtNativeAd.setBiddingPrice(ecpm); //回传竞价广告价格 } mListenerMap.put(feedAd, gdtNativeAd); @@ -126,7 +126,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onRenderFail(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onRenderFail"); + LogAd.i(TAG + "onRenderFail"); GdtNativeExpressAd gdtNativeAd = mListenerMap.get(nativeExpressADView); if (gdtNativeAd != null) { gdtNativeAd.callRenderFail(nativeExpressADView, 99999, "render fail"); @@ -135,7 +135,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onRenderSuccess(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onRenderSuccess"); + LogAd.i(TAG + "onRenderSuccess"); GdtNativeExpressAd gdtNativeAd = mListenerMap.get(nativeExpressADView); if (gdtNativeAd != null) { gdtNativeAd.callRenderSuccess(ADSize.FULL_WIDTH, ADSize.AUTO_HEIGHT); @@ -144,7 +144,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onADExposure(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onADExposure"); + LogAd.i(TAG + "onADExposure"); GdtNativeExpressAd gdtNativeAd = mListenerMap.get(nativeExpressADView); if (gdtNativeAd != null) { gdtNativeAd.callAdShow(); @@ -153,7 +153,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onADClicked(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onADClicked"); + LogAd.i(TAG + "onADClicked"); GdtNativeExpressAd gdtNativeAd = mListenerMap.get(nativeExpressADView); if (gdtNativeAd != null) { gdtNativeAd.callAdClick(); @@ -162,7 +162,7 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onADClosed(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onADClosed"); + LogAd.i(TAG + "onADClosed"); GdtNativeExpressAd gdtNativeAd = mListenerMap.get(nativeExpressADView); if (gdtNativeAd != null) { gdtNativeAd.onDestroy(); @@ -172,13 +172,13 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { @Override public void onADLeftApplication(NativeExpressADView nativeExpressADView) { - LogK.i(TAG + "onADLeftApplication"); + LogAd.i(TAG + "onADLeftApplication"); } @Override public void onNoAD(AdError adError) { if (adError != null) { - LogK.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); + LogAd.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); callLoadFail(adError.getErrorCode(), adError.getErrorMsg()); } else { callLoadFail(40000, "no ad"); @@ -193,10 +193,10 @@ public class GdtCustomerNative extends MediationCustomNativeLoader { } nativeExpressAD.loadAD(1); } else { - LogK.i(TAG + "其他类型"); + LogAd.i(TAG + "其他类型"); //其他类型,开发者如果有需要,请在平台自行配置json,然后通过 serviceConfig.getCustomAdapterJson() 获取配置 - LogK.i(TAG + "1111111111111111111111111111111111111111111111"); - LogK.i(TAG + "serviceConfig.getCustomAdapterJson()=" + serviceConfig.getCustomAdapterJson()); + LogAd.i(TAG + "1111111111111111111111111111111111111111111111"); + LogAd.i(TAG + "serviceConfig.getCustomAdapterJson()=" + serviceConfig.getCustomAdapterJson()); } } }); diff --git a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerSplash.java b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerSplash.java index f0360f4..412a3a5 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerSplash.java +++ b/LibraryAd/src/main/java/com/tfq/ad/ad/gdt/GdtCustomerSplash.java @@ -11,7 +11,7 @@ import com.bytedance.sdk.openadsdk.mediation.custom.MediationCustomServiceConfig import com.qq.e.ads.splash.SplashAD; import com.qq.e.ads.splash.SplashADListener; import com.qq.e.comm.util.AdError; -import com.tfq.library.utils.LogK; +import com.tfq.ad.utils.LogAd; import java.util.concurrent.Callable; import java.util.concurrent.Future; @@ -32,14 +32,14 @@ public class GdtCustomerSplash extends MediationCustomSplashLoader { /** * 在子线程中进行广告加载 */ - LogK.e(TAG + " load gdt custom splash ad-----"); + LogAd.e(TAG + " load gdt custom splash ad-----"); ThreadUtils.runOnThreadPool(new Runnable() { @Override public void run() { SplashADListener splashADListener = new SplashADListener() { @Override public void onADDismissed() { - LogK.i(TAG + "onADDismissed"); + LogAd.i(TAG + "onADDismissed"); callSplashAdDismiss(); } @@ -47,7 +47,7 @@ public class GdtCustomerSplash extends MediationCustomSplashLoader { public void onNoAD(AdError adError) { isLoadSuccess = false; if (adError != null) { - LogK.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); + LogAd.i(TAG + "onNoAD errorCode = " + adError.getErrorCode() + " errorMessage = " + adError.getErrorMsg()); callLoadFail(adError.getErrorCode(), adError.getErrorMsg()); } else { callLoadFail(40000, "no ad"); @@ -56,29 +56,29 @@ public class GdtCustomerSplash extends MediationCustomSplashLoader { @Override public void onADPresent() { - LogK.i(TAG + "onADPresent"); + LogAd.i(TAG + "onADPresent"); } @Override public void onADClicked() { - LogK.i(TAG + "onADClicked"); + LogAd.i(TAG + "onADClicked"); callSplashAdClicked(); } @Override public void onADTick(long l) { - LogK.i(TAG + "onADTick"); + LogAd.i(TAG + "onADTick"); } @Override public void onADExposure() { - LogK.i(TAG + "onADExposure"); + LogAd.i(TAG + "onADExposure"); callSplashAdShow(); } @Override public void onADLoaded(long expireTimestamp) { - LogK.i(TAG + "onADLoaded"); + LogAd.i(TAG + "onADLoaded"); long timeIntervalSec = expireTimestamp - SystemClock.elapsedRealtime(); if (timeIntervalSec > 1000) { isLoadSuccess = true; @@ -87,7 +87,7 @@ public class GdtCustomerSplash extends MediationCustomSplashLoader { if (ecpm < 0) { ecpm = 0; } - LogK.e(TAG + " ecpm:" + ecpm); + LogAd.e(TAG + " ecpm:" + ecpm); callLoadSuccess(ecpm); //bidding广告成功回调,回传竞价广告价格 } else { //普通类型广告 callLoadSuccess(); @@ -130,19 +130,19 @@ public class GdtCustomerSplash extends MediationCustomSplashLoader { @Override public void onPause() { super.onPause(); - LogK.i(TAG + "onPause"); + LogAd.i(TAG + "onPause"); } @Override public void onResume() { super.onResume(); - LogK.i(TAG + "onResume"); + LogAd.i(TAG + "onResume"); } @Override public void onDestroy() { super.onDestroy(); - LogK.i(TAG + "onDestroy"); + LogAd.i(TAG + "onDestroy"); mSplashAD = null; } diff --git a/LibraryAd/src/main/java/com/tfq/ad/app/ADConstants.java b/LibraryAd/src/main/java/com/tfq/ad/app/ADConstants.java new file mode 100644 index 0000000..afa82ec --- /dev/null +++ b/LibraryAd/src/main/java/com/tfq/ad/app/ADConstants.java @@ -0,0 +1,66 @@ +package com.tfq.ad.app; + +public class ADConstants { + public static boolean AD_APP_DEBUG_PRINT = false; + + public static boolean _isShow; + + // 1.开屏 2.激励视频 3.信息流 4.插全屏 5.banner 6.draw信息流 + public static boolean AD_SPLASH = false;//开屏广告 + public static boolean AD_REWARD = false;//激励视频 + public static boolean AD_CQP = false;//插全屏广告 + public static boolean AD_NATIVE = false;//原生信息流广告 + public static boolean AD_BANNER = false;//banner广告 + public static boolean AD_DRAW = false;//draw信息流广告 + public static int ADV_Wait = 60;//插全屏两个相差时间 + public static boolean adv_csj = true;//穿山甲正常 + + public static long request_splash_time = 30; + public static boolean AD_Switch_Requested = false;//请求过广告开关 + public static String CODE_AD_FEED = "CODE_AD_FEED"; + + /** + * 自定义APP_ID + */ + public final static String AD_APPID = "APPID"; + /** + * 自定义穿山甲ID + */ + public final static String AD_CSJID = "CSJID"; + /** + * 自定义穿山甲开屏ID + */ + public final static String AD_CODE_SPLASH = "AD_CODE_SPLASH"; + /** + * 自定义穿山甲插全屏ID + */ + public final static String AD_CODE_CQP = "AD_CODE_CQP"; + /** + * 自定义穿山甲激励视频ID + */ + public final static String AD_CODE_REWARD = "AD_CODE_REWARD"; + /** + * 自定义穿山甲信息流1_ID + */ + public final static String AD_CODE_FEED1 = "AD_CODE_FEED1"; + /** + * 自定义穿山甲信息流2_ID + */ + public final static String AD_CODE_FEED2 = "AD_CODE_FEED2"; + /** + * 自定义穿山甲信息流3_ID + */ + public final static String AD_CODE_FEED3 = "AD_CODE_FEED3"; + /** + * 自定义穿山甲bannerID + */ + public final static String AD_CODE_BANNER = "AD_CODE_BANNER"; + /** + * 自定义穿山甲DRAW_ID + */ + public final static String AD_CODE_DRAW = "AD_CODE_DRAW"; + /** + * 穿山甲广告是否关闭,true:无广告;false:有广告; + */ + public final static String NO_AD = "NO_AD"; +} diff --git a/LibraryAd/src/main/java/com/tfq/ad/app/AdApp.java b/LibraryAd/src/main/java/com/tfq/ad/app/AdApp.java index 33b3b2d..86a5d97 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/app/AdApp.java +++ b/LibraryAd/src/main/java/com/tfq/ad/app/AdApp.java @@ -1,75 +1,124 @@ package com.tfq.ad.app; -import android.app.Activity; -import android.app.Application; import android.content.Context; -import android.content.pm.ApplicationInfo; -import android.content.pm.PackageManager; -import android.os.Bundle; -import com.tfq.ad.ad.LoopAd; -import com.tfq.library.app.IConstituteApp; +import com.tfq.ad.ad.CacheADManager; +import com.tfq.ad.ad.TTAdManagerHolder; +import com.tfq.ad.utils.LogAd; -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; +import java.util.Collections; +import java.util.HashMap; +import java.util.LinkedHashMap; +import java.util.Map; +import java.util.Objects; -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; +public final class AdApp { + private static volatile AdApp instance; + private final Context context; + private final String appName; + private final String channel; + private final int splashConfig; + private final Map adSlots; -/** - * Created by Administrator on 2016/10/28. - */ -public class AdApp implements IConstituteApp { - public static Activity activityTop; - private static Context mContext; - private static AdApp instance; - public Application application; + private AdApp(Builder builder) { + this.context = builder.context; + this.appName = builder.appName; + this.channel = builder.channel; + this.splashConfig = builder.splashConfig; + this.adSlots = Collections.unmodifiableMap(new HashMap<>(builder.adSlots)); + } + + private static String validateNonEmpty(String value) { + if (value == null || value.trim().isEmpty()) { + return ""; +// throw new IllegalArgumentException("Parameter cannot be empty"); + } + return value; + } public static AdApp getInstance() { + if (instance == null) { + throw new IllegalStateException("Call Builder.initialize() first"); + } return instance; } - public static Context getContext() { - return mContext; + // 参数暴露接口 + public String getAppName() { + return appName; } - public static Activity getActivityTop() { - return activityTop; + public String getChannel() { + return channel; } - public static String getChannel() { - try { - PackageManager pm = mContext.getPackageManager(); - ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); - return appInfo.metaData.getString("UMENG_CHANNEL"); - } catch (PackageManager.NameNotFoundException ignored) { + public int getSplash() { + return splashConfig; + } + + public String getSlotConfig(String slotType) { + return adSlots.getOrDefault(slotType, "0"); // 未配置返回默认值 + } + + public boolean isSlotConfig(String slotType) { + return Boolean.parseBoolean(adSlots.getOrDefault(slotType, String.valueOf(false))); // 未配置返回默认值 + } + + public static class Builder { + private final Context context; + private final String appName; + private final String channel; + private final int splashConfig; + private final Map adSlots = new LinkedHashMap<>(); + + /** + * 必传的几个选项 + * @param ctx + * @param name + * @param channel + * @param splash + */ + public Builder(Context ctx, String name, String channel, int splash) { + this.context = Objects.requireNonNull(ctx); + this.appName = validateNonEmpty(name); + this.channel = validateNonEmpty(channel); + this.splashConfig = splash; } - return "other"; - } - public static String getJson(String fileName, Context context) { - StringBuilder stringBuilder = new StringBuilder(); - try { - InputStream is = context.getAssets().open(fileName); - BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(is)); - String line; - while ((line = bufferedReader.readLine()) != null) { - stringBuilder.append(line); + public Builder addSlot(String slotType, String config) { + if (slotType != null) { + adSlots.put(slotType, config != null ? config : "0"); // 默认值处理 } - } catch (IOException e) { - e.printStackTrace(); + return this; } - return stringBuilder.toString(); - } - @Override - public void onCreate(Application application) { - mContext = application.getApplicationContext(); - instance = this; - this.application = application; + public synchronized void initialize() { + if (instance == null) { + instance = new AdApp(this); + } - new LoopAd(); + // 初始化ad SDK + if (!getInstance().getSlotConfig(ADConstants.AD_CSJID).equals("0")) { + CacheADManager.init(); + + if (!AdApp.getInstance().isSlotConfig(ADConstants.NO_AD)) { + LogAd.e("初始化AD"); + initAdSdk(); + }else { + TTAdManagerHolder.init_not(); + } + } + try { + if (getInstance().getChannel() != null && getInstance().getChannel().equals("other")) { + LogAd.setDebug(true); + } + } catch (Exception e) { + e.printStackTrace(); + } + } + + private void initAdSdk() { + TTAdManagerHolder.init(context); + } } } diff --git a/LibraryAd/src/main/java/com/tfq/ad/app/AdUrlCenter.java b/LibraryAd/src/main/java/com/tfq/ad/app/AdUrlCenter.java deleted file mode 100644 index 1d98525..0000000 --- a/LibraryAd/src/main/java/com/tfq/ad/app/AdUrlCenter.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.tfq.ad.app; - -public class AdUrlCenter { - //base url - public static String BASE_URL = "http://www.90000li.com/app-api/"; - //根据广告平台id获取开关 - public static String advFlag = BASE_URL + "jwl/app-advertisement/flag"; - //问题反馈 - public static String feedback = BASE_URL + "jwl/feedback/add"; - -} diff --git a/LibraryAd/src/main/java/com/tfq/ad/app/MyOkHttp.java b/LibraryAd/src/main/java/com/tfq/ad/app/MyOkHttp.java deleted file mode 100644 index 5d08731..0000000 --- a/LibraryAd/src/main/java/com/tfq/ad/app/MyOkHttp.java +++ /dev/null @@ -1,36 +0,0 @@ -package com.tfq.ad.app; - -import android.widget.Toast; - -import com.tfq.library.app.BaseConstants; -import com.tfq.library.app.LibraryApp; -import com.tfq.library.utils.AppUtil; - -import okhttp3.Interceptor; -import okhttp3.OkHttpClient; -import okhttp3.logging.HttpLoggingInterceptor; - -public class MyOkHttp { - - private static OkHttpClient client; - - public static OkHttpClient myClient() { - Interceptor logInterceptor; - if (BaseConstants.BASE_APP_DEBUG_PRINT) { - logInterceptor = new HttpLoggingInterceptor(new HttpLog()).setLevel(HttpLoggingInterceptor.Level.BODY); - } else { - logInterceptor = new HttpLoggingInterceptor(new HttpLog()).setLevel(HttpLoggingInterceptor.Level.NONE); - } - - if (client == null) { - client = new OkHttpClient() - .newBuilder() - .addNetworkInterceptor(logInterceptor) - .build(); - } - if (!AppUtil.connectStatus()) { - Toast.makeText(LibraryApp.getContext(), "无网络连接", Toast.LENGTH_SHORT).show(); - } - return client; - } -} diff --git a/LibraryAd/src/main/java/com/tfq/ad/bean/AdvBean.java b/LibraryAd/src/main/java/com/tfq/ad/bean/AdvBean.java deleted file mode 100644 index 68f2932..0000000 --- a/LibraryAd/src/main/java/com/tfq/ad/bean/AdvBean.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.tfq.ad.bean; - -public class AdvBean { - - private int code; - private DataDTO data; - private String msg; - - public int getCode() { - return code; - } - - public void setCode(int code) { - this.code = code; - } - - public DataDTO getData() { - return data; - } - - public void setData(DataDTO data) { - this.data = data; - } - - public String getMsg() { - return msg; - } - - public void setMsg(String msg) { - this.msg = msg; - } - - public static class DataDTO { - private String adv1Flag; - private String adv2Flag; - private String adv3Flag; - private String adv4Flag; - private String adv5Flag; - private String adv6Flag; - private int adv4Wait; - - public String getAdv1Flag() { - return adv1Flag; - } - - public void setAdv1Flag(String adv1Flag) { - this.adv1Flag = adv1Flag; - } - - public String getAdv2Flag() { - return adv2Flag; - } - - public void setAdv2Flag(String adv2Flag) { - this.adv2Flag = adv2Flag; - } - - public String getAdv3Flag() { - return adv3Flag; - } - - public void setAdv3Flag(String adv3Flag) { - this.adv3Flag = adv3Flag; - } - - public String getAdv4Flag() { - return adv4Flag; - } - - public void setAdv4Flag(String adv4Flag) { - this.adv4Flag = adv4Flag; - } - - public String getAdv5Flag() { - return adv5Flag; - } - - public void setAdv5Flag(String adv5Flag) { - this.adv5Flag = adv5Flag; - } - - public String getAdv6Flag() { - return adv6Flag; - } - - public void setAdv6Flag(String adv6Flag) { - this.adv6Flag = adv6Flag; - } - - public int getAdv4Wait() { - return adv4Wait; - } - - public void setAdv4Wait(int adv4Wait) { - this.adv4Wait = adv4Wait; - } - } -} diff --git a/LibraryAd/src/main/java/com/tfq/ad/bean/UserInfo.java b/LibraryAd/src/main/java/com/tfq/ad/bean/UserInfo.java deleted file mode 100644 index 8cb4292..0000000 --- a/LibraryAd/src/main/java/com/tfq/ad/bean/UserInfo.java +++ /dev/null @@ -1,105 +0,0 @@ -package com.tfq.ad.bean; - -import android.text.TextUtils; - -import com.tfq.ad.app.AdUrlCenter; -import com.tfq.ad.app.MyOkHttp; -import com.tfq.library.app.BaseConstants; -import com.tfq.library.utils.AppUtil; -import com.tfq.library.utils.LogK; - -import org.json.JSONObject; - -import java.io.IOException; - -import okhttp3.Call; -import okhttp3.Callback; -import okhttp3.MediaType; -import okhttp3.OkHttpClient; -import okhttp3.Request; -import okhttp3.RequestBody; -import okhttp3.Response; - -public class UserInfo { - - private final OkHttpClient client = MyOkHttp.myClient(); - - private void regexDate(Response response, Success listener) { - try { - String data = response.body().string(); - LogK.e(data); - JSONObject jsonObject = new JSONObject(data); - String code = jsonObject.getString("code"); - String msg = ""; - try { - msg = jsonObject.getString("message"); - } catch (Exception e) { - e.printStackTrace(); - try { - msg = jsonObject.getString("msg"); - } catch (Exception e1) { - e1.printStackTrace(); - msg = ""; - } - } - if (!TextUtils.isEmpty(code)) { - switch (code) { - case "200": - case "0": - listener.Success(data, msg); - break; - default: - listener.fail(Integer.parseInt(code), msg); - break; - } - } else { - listener.fail(BaseConstants.URL_REQUEST_ERROR, msg); - } - } catch (Exception e) { - e.printStackTrace(); - listener.fail(BaseConstants.URL_REQUEST_ERROR, BaseConstants.URL_REQUEST_ERROR + ""); - } - } - - public void getAdvertising(Success listener) { - new Thread() { - @Override - public void run() { - super.run(); - String marketKey = ""; - if (!TextUtils.isEmpty(BaseConstants.CHANNEL)) { - marketKey = BaseConstants.CHANNEL; - } - String url = AdUrlCenter.advFlag; - String json = "{" + - " \"appId\":\"" + BaseConstants.APP_ID + "\"," + - " \"appPacketname\": \"" + AppUtil.getPackageName() + "\"," + - " \"channel\": \"" + marketKey + "\"," + - " \"appVersion\": \"" + AppUtil.getAppVersionCode() + "\"" + - "}"; - final Request request = new Request.Builder() - .url(url) - .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), json)) - .build(); - Call call = client.newCall(request); - call.enqueue(new Callback() { - @Override - public void onFailure(Call call, IOException e) { - listener.fail(BaseConstants.URL_REQUEST_ERROR, ""); - } - - @Override - public void onResponse(Call call, Response response) { - regexDate(response, listener); - } - }); - } - }.start(); - } - - public interface Success { - void Success(String data, String msg); - - void fail(int num, String msg); - } -} diff --git a/LibraryAd/src/main/java/com/tfq/ad/utils/AdAppUtil.java b/LibraryAd/src/main/java/com/tfq/ad/utils/AdAppUtil.java new file mode 100644 index 0000000..fec825a --- /dev/null +++ b/LibraryAd/src/main/java/com/tfq/ad/utils/AdAppUtil.java @@ -0,0 +1,51 @@ +package com.tfq.ad.utils; + +import android.app.Activity; +import android.app.ActivityManager; +import android.content.Context; + +import com.gyf.immersionbar.BarHide; +import com.gyf.immersionbar.ImmersionBar; + +import java.util.List; + +public class AdAppUtil { + + /** + * 隐藏状态栏和导航栏(带安全校验) + */ + public static void setHideBar_StatusAndNavigation(Context context) { + if (!(context instanceof Activity)) { + LogAd.e("Context must be Activity instance"); + return; + } + + try { + ImmersionBar.with((Activity) context) + .hideBar(BarHide.FLAG_HIDE_BAR) + .init(); + } catch (Exception e) { + LogAd.e("Hide bar failed: " + e.getMessage()); + } + } + + /** + * 判断是否处于后台行为 + */ + public static boolean isRunningForeground(Context mContext) { + try { + ActivityManager activityManager = (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE); + List appProcesses = activityManager.getRunningAppProcesses(); + for (ActivityManager.RunningAppProcessInfo appProcess : appProcesses) { + if (appProcess.processName.equals(mContext.getPackageName())) { + return appProcess.importance != ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND; + } + } + } catch (Exception e) { + e.printStackTrace(); + return false; + } + return false; + } + +} diff --git a/LibraryAd/src/main/java/com/tfq/ad/utils/DateUtils.java b/LibraryAd/src/main/java/com/tfq/ad/utils/DateUtils.java new file mode 100644 index 0000000..1b41b81 --- /dev/null +++ b/LibraryAd/src/main/java/com/tfq/ad/utils/DateUtils.java @@ -0,0 +1,75 @@ + +package com.tfq.ad.utils; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.Locale; +import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ConcurrentMap; + +public final class DateUtils { + private static final String DEFAULT_PATTERN = "yyyy-MM-dd HH:mm:ss"; + private static final ConcurrentMap> FORMATTER_CACHE = new ConcurrentHashMap<>(); + + private DateUtils() { + throw new AssertionError("Utility class cannot be instantiated"); + } + + /** + * 获取当前时间戳(秒) + */ + public static long currentTimeStamp() { + return System.currentTimeMillis() / 1000; + } + + /** + * 获取当前格式化时间(默认格式) + */ + public static String currentFormattedTime() { + return formatTimestamp(currentTimeStamp()); + } + + /** + * 获取当前格式化时间(自定义格式) + */ + public static String currentFormattedTime(String pattern) { + return formatTimestamp(currentTimeStamp(), pattern); + } + + /** + * 时间戳转日期字符串(默认格式) + */ + public static String formatTimestamp(long timestamp) { + return formatTimestamp(timestamp, DEFAULT_PATTERN); + } + + /** + * 时间戳转日期字符串(自定义格式) + */ + public static String formatTimestamp(long timestamp, String pattern) { + return getFormatter(pattern).format(new Date(timestamp * 1000)); + } + + /** + * 日期字符串转时间戳(默认格式) + */ + public static long parseToTimestamp(String dateString) throws ParseException { + return parseToTimestamp(dateString, DEFAULT_PATTERN); + } + + /** + * 日期字符串转时间戳(自定义格式) + */ + public static long parseToTimestamp(String dateString, String pattern) throws ParseException { + return getFormatter(pattern).parse(dateString).getTime() / 1000; + } + + private static SimpleDateFormat getFormatter(String pattern) { + String actualPattern = pattern == null ? DEFAULT_PATTERN : pattern; + return FORMATTER_CACHE + .computeIfAbsent(actualPattern, p -> ThreadLocal.withInitial(() -> + new SimpleDateFormat(p, Locale.getDefault()))) + .get(); + } +} diff --git a/LibraryAd/src/main/java/com/tfq/ad/utils/LogAd.java b/LibraryAd/src/main/java/com/tfq/ad/utils/LogAd.java new file mode 100644 index 0000000..1c69aad --- /dev/null +++ b/LibraryAd/src/main/java/com/tfq/ad/utils/LogAd.java @@ -0,0 +1,52 @@ +package com.tfq.ad.utils; + +import android.util.Log; + +public class LogAd { + private static final String TAG_PREFIX = "AdLog_http"; + private static boolean DEBUG = false; + + public static boolean isDebug() { + return DEBUG; + } + + public static void setDebug(boolean debug) { + DEBUG = debug; + } + + public static void d(String msg) { + if (DEBUG) Log.d(TAG_PREFIX, buildMessage(msg)); + } + + public static void e(String msg) { + if (DEBUG) Log.e(TAG_PREFIX, buildMessage(msg)); + } + + public static void i(String msg) { + if (DEBUG) Log.i(TAG_PREFIX, buildMessage(msg)); + } + + public static void w(String msg) { + if (DEBUG) Log.w(TAG_PREFIX, buildMessage(msg)); + } + + public static void v(String msg) { + if (DEBUG) Log.v(TAG_PREFIX, buildMessage(msg)); + } + + private static String buildMessage(String msg) { + StackTraceElement[] trace = new Throwable().getStackTrace(); + String caller = ""; + + for (int i = 3; i < trace.length; i++) { + if (!trace[i].getClassName().equals(LogAd.class.getName())) { + String className = trace[i].getClassName(); + caller = className.substring(className.lastIndexOf('.') + 1) + + "." + trace[i].getMethodName() + + ":" + trace[i].getLineNumber(); + break; + } + } + return "[" + Thread.currentThread().getId() + "] " + caller + " ▶ " + msg; + } +} diff --git a/LibraryAd/src/main/res/anim/actionsheet_dialog_in.xml b/LibraryAd/src/main/res/anim/actionsheet_dialog_in.xml deleted file mode 100644 index cfd58a9..0000000 --- a/LibraryAd/src/main/res/anim/actionsheet_dialog_in.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/LibraryAd/src/main/res/anim/actionsheet_dialog_out.xml b/LibraryAd/src/main/res/anim/actionsheet_dialog_out.xml deleted file mode 100644 index 5439a7a..0000000 --- a/LibraryAd/src/main/res/anim/actionsheet_dialog_out.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/LibraryAd/src/main/res/anim/activity_in_animation.xml b/LibraryAd/src/main/res/anim/activity_in_animation.xml deleted file mode 100644 index 5f704aa..0000000 --- a/LibraryAd/src/main/res/anim/activity_in_animation.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/activity_out_animation.xml b/LibraryAd/src/main/res/anim/activity_out_animation.xml deleted file mode 100644 index 3eb5162..0000000 --- a/LibraryAd/src/main/res/anim/activity_out_animation.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/anim_float_window_enter.xml b/LibraryAd/src/main/res/anim/anim_float_window_enter.xml deleted file mode 100644 index 5790fe7..0000000 --- a/LibraryAd/src/main/res/anim/anim_float_window_enter.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/anim_float_window_exit.xml b/LibraryAd/src/main/res/anim/anim_float_window_exit.xml deleted file mode 100644 index 04818af..0000000 --- a/LibraryAd/src/main/res/anim/anim_float_window_exit.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/bottom_menu_enter.xml b/LibraryAd/src/main/res/anim/bottom_menu_enter.xml deleted file mode 100644 index 01c4795..0000000 --- a/LibraryAd/src/main/res/anim/bottom_menu_enter.xml +++ /dev/null @@ -1,5 +0,0 @@ - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/anim/bottom_menu_exit.xml b/LibraryAd/src/main/res/anim/bottom_menu_exit.xml deleted file mode 100644 index e197528..0000000 --- a/LibraryAd/src/main/res/anim/bottom_menu_exit.xml +++ /dev/null @@ -1,5 +0,0 @@ - - diff --git a/LibraryAd/src/main/res/anim/dialog_show_exis.xml b/LibraryAd/src/main/res/anim/dialog_show_exit.xml similarity index 100% rename from LibraryAd/src/main/res/anim/dialog_show_exis.xml rename to LibraryAd/src/main/res/anim/dialog_show_exit.xml diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_1.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_1.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_1.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_1.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_10.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_10.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_10.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_10.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_11.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_11.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_11.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_11.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_12.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_12.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_12.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_12.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_2.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_2.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_2.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_2.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_3.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_3.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_3.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_3.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_4.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_4.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_4.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_4.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_5.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_5.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_5.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_5.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_6.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_6.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_6.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_6.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_7.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_7.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_7.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_7.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_8.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_8.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_8.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_8.png diff --git a/LibraryAd/src/main/res/drawable-hdpi/loading_9.png b/LibraryAd/src/main/res/drawable-hdpi/ad_loading_9.png similarity index 100% rename from LibraryAd/src/main/res/drawable-hdpi/loading_9.png rename to LibraryAd/src/main/res/drawable-hdpi/ad_loading_9.png diff --git a/LibraryAd/src/main/res/drawable/anim_loading.xml b/LibraryAd/src/main/res/drawable/ad_anim_loading.xml similarity index 54% rename from LibraryAd/src/main/res/drawable/anim_loading.xml rename to LibraryAd/src/main/res/drawable/ad_anim_loading.xml index 0fe34bd..4d85e70 100644 --- a/LibraryAd/src/main/res/drawable/anim_loading.xml +++ b/LibraryAd/src/main/res/drawable/ad_anim_loading.xml @@ -3,51 +3,51 @@ android:oneshot="false" > \ No newline at end of file diff --git a/LibraryAd/src/main/res/drawable/ll_radio_loading.xml b/LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml similarity index 100% rename from LibraryAd/src/main/res/drawable/ll_radio_loading.xml rename to LibraryAd/src/main/res/drawable/ad_ll_radio_loading.xml diff --git a/LibraryAd/src/main/res/layout/layout_dialog_loading.xml b/LibraryAd/src/main/res/layout/ad_dialog_loading.xml similarity index 75% rename from LibraryAd/src/main/res/layout/layout_dialog_loading.xml rename to LibraryAd/src/main/res/layout/ad_dialog_loading.xml index 73d523f..9fad07c 100644 --- a/LibraryAd/src/main/res/layout/layout_dialog_loading.xml +++ b/LibraryAd/src/main/res/layout/ad_dialog_loading.xml @@ -3,7 +3,7 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" - android:background="@drawable/ll_radio_loading" + android:background="@drawable/ad_ll_radio_loading" > \ No newline at end of file diff --git a/LibraryAd/src/main/res/layout/layout_dialog_permission.xml b/LibraryAd/src/main/res/layout/layout_dialog_permission.xml deleted file mode 100644 index 8bb6f71..0000000 --- a/LibraryAd/src/main/res/layout/layout_dialog_permission.xml +++ /dev/null @@ -1,107 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/LibraryAd/src/main/res/values/styles.xml b/LibraryAd/src/main/res/values/styles.xml index ac65023..c3d7d78 100644 --- a/LibraryAd/src/main/res/values/styles.xml +++ b/LibraryAd/src/main/res/values/styles.xml @@ -1,222 +1,21 @@ - - - - - - - - - - - - - - - - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/android_data/data.gradle b/android_data/data.gradle index d74df78..2728328 100644 --- a/android_data/data.gradle +++ b/android_data/data.gradle @@ -5,7 +5,6 @@ ext { versionCode : 100, versionName : "1.0.0", company_name : "济宁同风起网络科技有限公司", - noAD : "false",//无广告true APP_DEBUG_PRINT : "false",//true: 打印log need_login : "true",//临时用来判断需要登录等功能 diff --git a/android_data/flavors.gradle b/android_data/flavors.gradle index 43fc4d0..a9013c5 100644 --- a/android_data/flavors.gradle +++ b/android_data/flavors.gradle @@ -70,7 +70,6 @@ android { flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name, app_icon: rootProject.ext.channel["appLogo"]] } - resValue "bool", "noAD", rootProject.ext.base["noAD"] resValue "string", "company_name", rootProject.ext.base["company_name"] resValue "string", "appid", rootProject.ext.base["appId"] //后台appid diff --git a/app/build.gradle b/app/build.gradle index 3bc6294..92b4942 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -28,7 +28,7 @@ android { namespace rootProject.ext.base.applicationId // 添加这一行 defaultConfig { applicationId rootProject.ext.base.applicationId - minSdkVersion 21 + minSdkVersion 24 targetSdkVersion 34 multiDexEnabled true versionCode rootProject.ext.base.versionCode diff --git a/app/src/main/java/com/tfq/finances/app/App.java b/app/src/main/java/com/tfq/finances/app/App.java index fe8ed94..f77cf78 100644 --- a/app/src/main/java/com/tfq/finances/app/App.java +++ b/app/src/main/java/com/tfq/finances/app/App.java @@ -1 +1 @@ -package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.CacheADManager; import com.tfq.ad.ad.TTAdManagerHolder; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.jzrcj.R; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.IConstituteApp; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private boolean noAD; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; private List applications; private boolean need_login; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); LogK.e("sha1= " + AppSigning.getSha1(this)); LogK.e("build " + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); CacheADManager.init(); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public boolean getNeedLogin() { return need_login = mContext.getResources().getBoolean(R.bool.need_login); } public void agreeSercurity() { initApplications(); SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { initCSJ(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void initApplications() { BaseConstants.BASE_APP_DEBUG_PRINT = Constants.APP_DEBUG_PRINT; BaseConstants.APP_NAME = Constants.APP_NAME; BaseConstants.APP_ID = Constants.APP_ID; BaseConstants.CSJ_ID = App.getInstances().getCsjId(); BaseConstants.CHANNEL = getChannel(); BaseConstants.csjIdFeed1 = getCsjIdFeed1(); BaseConstants.csjIdFeed2 = getCsjIdFeed2(); BaseConstants.NO_AD = getNoAd(); BaseConstants.CODE_AD_SPLASH = getCsjIdSplash(); BaseConstants.CODE_AD_CQP = getCsjIdCQP(); BaseConstants.CODE_AD_FEED1 = getCsjIdFeed1(); BaseConstants.CODE_AD_FEED2 = getCsjIdFeed2(); BaseConstants.CODE_AD_FEED3 = getCsjIdFeed3(); BaseConstants.CODE_AD_BANNER = getCsjIdBanner(); BaseConstants.CODE_AD_REWARD = getCsjIdReward(); BaseConstants.CODE_AD_DRAW = getCsjIdDraw(); BaseConstants.appSplash = getAppSplash(); applications = new ArrayList<>(); applications.add("com.tfq.library.app.LibraryApp"); applications.add("com.tfq.ad.app.AdApp"); for (String item : applications) { try { Class clazz = Class.forName(item); if (clazz != null) { Object obj = clazz.newInstance(); if (obj instanceof IConstituteApp) { IConstituteApp a = (IConstituteApp) obj; a.onCreate(this); } } } catch (Exception e) { e.printStackTrace(); } } LogK.e("BaseConstants.BASE_APP_DEBUG_PRINT=" + BaseConstants.BASE_APP_DEBUG_PRINT + "\n" + "BaseConstants.APP_NAME=" + BaseConstants.APP_NAME + "\n" + "BaseConstants.APP_ID=" + BaseConstants.APP_ID + "\n" + "BaseConstants.CHANNEL=" + BaseConstants.CHANNEL + "\n" + "BaseConstants.csjIdFeed1=" + BaseConstants.csjIdFeed1 + "\n" + "BaseConstants.csjIdFeed2=" + BaseConstants.csjIdFeed2 + "\n" + "BaseConstants.NO_AD=" + BaseConstants.NO_AD + "\n" + "BaseConstants.CODE_AD_SPLASH=" + BaseConstants.CODE_AD_SPLASH + "\n" + "BaseConstants.CODE_AD_CQP=" + BaseConstants.CODE_AD_CQP + "\n" + "BaseConstants.CODE_AD_FEED1=" + BaseConstants.CODE_AD_FEED1 + "\n" + "BaseConstants.CODE_AD_FEED2=" + BaseConstants.CODE_AD_FEED2 + "\n" + "BaseConstants.appSplash=" + BaseConstants.appSplash + "\n" ); } private void initCSJ() { if (!getNoAd()) { TTAdManagerHolder.init(mContext); } } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public boolean getNoAd() { noAD = mContext.getResources().getBoolean(R.bool.noAD); return noAD; } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file +package com.tfq.finances.app; import android.app.Application; import android.content.Context; import android.content.SharedPreferences; import android.content.pm.ApplicationInfo; import android.content.pm.PackageManager; import android.database.sqlite.SQLiteDatabase; import android.text.TextUtils; import com.tfq.ad.ad.ADStateUtils; import com.tfq.ad.app.ADConstants; import com.tfq.ad.app.AdApp; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.db.DaoMaster; import com.tfq.finances.db.DaoSession; import com.tfq.finances.db.db.GDOpenHelper; import com.tfq.finances.jzrcj.R; import com.tfq.finances.main.AdUtils; import com.tfq.library.app.BaseConstants; import com.tfq.library.app.IConstituteApp; import com.tfq.library.utils.AppSigning; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; import com.umeng.commonsdk.UMConfigure; import java.util.ArrayList; import java.util.List; public class App extends Application { public static Context mContext; public static App instance; public static DaoSession mSession; private String appid; //新增参数,固定值,后台app逻辑id,优化接口调用使用 private String appinfoId; private String csjId; private String umId; private boolean noAD; private String csjIdSplash, csjIdCQP, csjIdFeed1, csjIdFeed2, csjIdFeed3, csjIdReward, csjIdBanner, csjIdDraw; private List applications; private boolean need_login; public static App getInstances() { return instance; } public static String getChannel() { try { PackageManager pm = mContext.getPackageManager(); ApplicationInfo appInfo = pm.getApplicationInfo(mContext.getPackageName(), PackageManager.GET_META_DATA); String umeng_channel = appInfo.metaData.getString("UMENG_CHANNEL"); if (umeng_channel != null) { return umeng_channel; } return "other"; } catch (PackageManager.NameNotFoundException ignored) { } return "other"; } public static Context getContext() { return mContext; } public static void setNavigationBarColor(String navigationBarColor) { BaseConstants.navigationBarColor = navigationBarColor; } @Override public void onCreate() { super.onCreate(); instance = this; mContext = getApplicationContext(); UMConfigure.preInit(mContext, getUmId(), getChannel()); LogK.e("sha1= " + AppSigning.getSha1(this)); LogK.e("build " + "\n" + AppUtil.getPackageName(mContext) + "\n" + getChannel() + "\n" + getCsjId() + "\n" + mContext.getResources().getString(R.string.app_name) + "\n" + AppUtil.getAppVersionName(mContext) + "\n" + AppUtil.getAppVersionCode(mContext) + "\n" ); // AppUtil.getPublicKey(AppUtil.getSign(mContext)); // LogK.e(GetPublicKey.getSignInfo(mContext)); initDb(); // setNavigationBarColor("#ffffff"); agreeSercurity(); } private void initDb() { try { GDOpenHelper gdOpenHelper = new GDOpenHelper(this, "tfq.db"); SQLiteDatabase db = gdOpenHelper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); mSession = daoMaster.newSession(); } catch (Exception e) { e.printStackTrace(); } } public DaoSession getDaoSession() { return mSession; } public String getUmId() { if (TextUtils.isEmpty(umId)) { umId = mContext.getResources().getString(R.string.umId); } return umId; } public String getAppid() { if (TextUtils.isEmpty(appid)) { appid = mContext.getResources().getString(R.string.appid); } return appid; } /** * 获取appinfoId * * @return */ public String getAppinfoId() { if (TextUtils.isEmpty(appinfoId)) { appinfoId = mContext.getResources().getString(R.string.appinfoId); } return appinfoId; } public String getCsjId() { if (TextUtils.isEmpty(csjId)) { csjId = mContext.getResources().getString(R.string.csjId); } return csjId; } public boolean getNeedLogin() { return need_login = mContext.getResources().getBoolean(R.bool.need_login); } public void agreeSercurity() { SharedPreferences sharedPreferences = SpManager.startRead(mContext, Constants.SP_NAME); boolean openNoFirst = sharedPreferences.getBoolean("no_first_open", false); if (openNoFirst) { initApplications(); UMConfigure.init(this, getUmId(), getChannel(), UMConfigure.DEVICE_TYPE_PHONE, ""); } } private void initApplications() { BaseConstants.BASE_APP_DEBUG_PRINT = Constants.APP_DEBUG_PRINT; applications = new ArrayList<>(); applications.add("com.tfq.library.app.LibraryApp"); // applications.add("com.tfq.ad.app.AdApp"); for (String item : applications) { try { Class clazz = Class.forName(item); if (clazz != null) { Object obj = clazz.newInstance(); if (obj instanceof IConstituteApp) { IConstituteApp a = (IConstituteApp) obj; a.onCreate(this); } } } catch (Exception e) { e.printStackTrace(); } } new AdApp.Builder(this, Constants.APP_NAME, getChannel(), getAppSplash()) .addSlot(ADConstants.AD_APPID, Constants.APP_ID) // APPID .addSlot(ADConstants.AD_CSJID, App.getInstances().getCsjId()) // CSJID .addSlot(ADConstants.AD_CODE_SPLASH, getCsjIdSplash()) // 添加横幅广告位 .addSlot(ADConstants.AD_CODE_REWARD, getCsjIdReward()) // 激励视频广告位 .addSlot(ADConstants.AD_CODE_FEED1, getCsjIdFeed1()) // 信息流1广告位 .addSlot(ADConstants.AD_CODE_BANNER, getCsjIdBanner()) // banner广告位 .initialize(); ADStateUtils.setSwitchRequestListener(new ADStateUtils.SwitchRequestListener() { @Override public void onSwitchRequestChanged(boolean isRequested) { if (isRequested) { AdUtils.getAdvFlag(); } } }); } @Override protected void attachBaseContext(Context base) { super.attachBaseContext(base); } public String getCsjIdSplash() { if (TextUtils.isEmpty(csjIdSplash)) { csjIdSplash = mContext.getResources().getString(R.string.csjIdSplash); } return csjIdSplash; } public String getCsjIdCQP() { if (TextUtils.isEmpty(csjIdCQP)) { csjIdCQP = mContext.getResources().getString(R.string.csjIdCQP); } return csjIdCQP; } public String getCsjIdFeed1() { if (TextUtils.isEmpty(csjIdFeed1)) { csjIdFeed1 = mContext.getResources().getString(R.string.csjIdFeed1); } return csjIdFeed1; } public String getCsjIdFeed2() { if (TextUtils.isEmpty(csjIdFeed2)) { csjIdFeed2 = mContext.getResources().getString(R.string.csjIdFeed2); } return csjIdFeed2; } public String getCsjIdFeed3() { if (TextUtils.isEmpty(csjIdFeed3)) { csjIdFeed3 = mContext.getResources().getString(R.string.csjIdFeed3); } return csjIdFeed3; } public String getCsjIdReward() { if (TextUtils.isEmpty(csjIdReward)) { csjIdReward = mContext.getResources().getString(R.string.csjIdReward); } return csjIdReward; } public String getCsjIdBanner() { if (TextUtils.isEmpty(csjIdBanner)) { csjIdBanner = mContext.getResources().getString(R.string.csjIdBanner); } return csjIdBanner; } public String getCsjIdDraw() { if (TextUtils.isEmpty(csjIdDraw)) { csjIdDraw = mContext.getResources().getString(R.string.csjIdDraw); } return csjIdDraw; } public int getAppSplash() { return R.drawable.app_splash; } } \ No newline at end of file diff --git a/LibraryAd/src/main/java/com/tfq/ad/app/HttpLog.java b/app/src/main/java/com/tfq/finances/core/utils/HttpLog.java similarity index 86% rename from LibraryAd/src/main/java/com/tfq/ad/app/HttpLog.java rename to app/src/main/java/com/tfq/finances/core/utils/HttpLog.java index 9b6453f..c15e3c7 100644 --- a/LibraryAd/src/main/java/com/tfq/ad/app/HttpLog.java +++ b/app/src/main/java/com/tfq/finances/core/utils/HttpLog.java @@ -1,4 +1,4 @@ -package com.tfq.ad.app; +package com.tfq.finances.core.utils; import android.util.Log; diff --git a/app/src/main/java/com/tfq/finances/core/utils/TfqMyOkHttp.java b/app/src/main/java/com/tfq/finances/core/utils/TfqMyOkHttp.java index 6375123..dd841f3 100644 --- a/app/src/main/java/com/tfq/finances/core/utils/TfqMyOkHttp.java +++ b/app/src/main/java/com/tfq/finances/core/utils/TfqMyOkHttp.java @@ -2,7 +2,6 @@ package com.tfq.finances.core.utils; import android.widget.Toast; -import com.tfq.ad.app.HttpLog; import com.tfq.library.utils.AppUtil; import com.tfq.finances.core.constants.Constants; import com.tfq.finances.app.App; diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java index 12fcc40..f5ce67d 100644 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java +++ b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Budgets.java @@ -8,6 +8,8 @@ import android.widget.ImageView; import android.widget.TextView; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; import com.tfq.finances.finances.view.CircleProgressBarWithAnimation; import com.tfq.finances.jzrcj.R; import com.tfq.finances.network.api.finances.BudgetsService; @@ -72,7 +74,7 @@ public class Activity_Budgets extends BaseActivity { } private void initAd() { - AdFeedUtils.show_ad(this, BaseConstants.CODE_AD_FEED1, fl_content, 20, "budgets", 3); + AdFeedUtils.show_ad(this, AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), fl_content, 20, "budgets", 3); } @Override diff --git a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java index b195dcb..274f8db 100644 --- a/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java +++ b/app/src/main/java/com/tfq/finances/finances/activity/Activity_Transactions.java @@ -11,6 +11,8 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; import com.tfq.finances.finances.adapter.TransactionsAdapter; import com.tfq.finances.jzrcj.R; import com.tfq.finances.network.api.finances.BillsService; @@ -92,7 +94,7 @@ public class Activity_Transactions extends BaseActivity { } private void initAd() { - AdFeedUtils.show_ad(this, BaseConstants.CODE_AD_FEED1, fl_content, 20, "budgets", 3); + AdFeedUtils.show_ad(this, AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), fl_content, 20, "budgets", 3); } @Override diff --git a/app/src/main/java/com/tfq/finances/main/Activity_Splash.java b/app/src/main/java/com/tfq/finances/main/Activity_Splash.java index 4d516b3..206afc0 100644 --- a/app/src/main/java/com/tfq/finances/main/Activity_Splash.java +++ b/app/src/main/java/com/tfq/finances/main/Activity_Splash.java @@ -22,21 +22,17 @@ import android.widget.TextView; import com.tfq.ad.ad.AdSplashUtils; import com.tfq.ad.ad.SplashUtils; import com.tfq.ad.ad.TTAdManagerHolder; -import com.tfq.finances.jzrcj.R; +import com.tfq.finances.app.App; +import com.tfq.finances.core.constants.Constants; import com.tfq.finances.finances.activity.Activity_Login; -import com.tfq.finances.network.config.ApiCallback; +import com.tfq.finances.jzrcj.R; +import com.tfq.finances.main.activity.Activity_Tw; +import com.tfq.finances.main.activity.Activity_WebView; +import com.tfq.finances.network.api.adv.AdService; import com.tfq.finances.network.config.token.TokenManager; -import com.tfq.finances.network.model.response.adv.AdvFlagResp; -import com.tfq.library.app.BaseConstants; import com.tfq.library.utils.AppUtil; import com.tfq.library.utils.LogK; import com.tfq.library.utils.SpManager; -import com.tfq.finances.network.api.adv.AdService; -import com.tfq.finances.core.enums.AdvFlagEnum; -import com.tfq.finances.core.constants.Constants; -import com.tfq.finances.app.App; -import com.tfq.finances.main.activity.Activity_Tw; -import com.tfq.finances.main.activity.Activity_WebView; import androidx.annotation.NonNull; @@ -45,9 +41,9 @@ public class Activity_Splash extends Activity { private final AdService adService = new AdService(App.getContext()); - FrameLayout frameLayout; - boolean onResume = true; - AdSplashUtils adSplashUtils; + private FrameLayout frameLayout; + private boolean onResume = true; + private AdSplashUtils adSplashUtils; @Override protected void onCreate(Bundle savedInstanceState) { @@ -58,6 +54,8 @@ public class Activity_Splash extends Activity { ImageView ivSplash = findViewById(R.id.iv_splash); ivSplash.setBackgroundResource(App.getInstances().getAppSplash()); run_start(); + + } private void run_start() { @@ -120,66 +118,28 @@ public class Activity_Splash extends Activity { } private void toMain() { - adService.getAdvFlag(new ApiCallback() { + AdUtils.getAdvFlag(new AdUtils.AdCallback() { @Override - public void onSuccess(AdvFlagResp response) { - runOnUiThread(() -> { - try { - // 更新广告开关状态 - updateAdFlags(response); - - // 处理广告等待时间 - if (response.getAdv4Wait() > 0) { - BaseConstants.ADV_Wait = response.getAdv4Wait(); - } - - // 根据是否禁用广告决定后续流程 - if (getResources().getBoolean(R.bool.noAD)) { - toDmMain(500); - } else { - initAdManager(); - } - } catch (Exception e) { - e.printStackTrace(); - toDmMain(500); - } - }); + public void onSuccess() { + initAdManager(); } @Override - public void onFailure(int errorCode, String errorMessage) { + public void onFailure(String errorMessage) { + // 处理获取广告开关状态失败的情况 + LogK.e("Failed to get adv flag: " + errorMessage); toDmMain(0); } }); } private void toDmMain(long delayMillis) { - runOnUiThread(new Runnable() { + new Handler().postDelayed(new Runnable() { @Override public void run() { - new Handler().postDelayed(new Runnable() { - @Override - public void run() { - to_main(); - } - }, delayMillis); + to_main(); } - }); - } - - - /** - * 更新广告开关状态 - */ - private void updateAdFlags(AdvFlagResp response) { - BaseConstants.AD_SPLASH = AdvFlagEnum.ON.getValue().equals(response.getAdv1Flag()); - BaseConstants.AD_REWARD = AdvFlagEnum.ON.getValue().equals(response.getAdv2Flag()); - BaseConstants.AD_NATIVE = AdvFlagEnum.ON.getValue().equals(response.getAdv3Flag()); - BaseConstants.AD_CQP = AdvFlagEnum.ON.getValue().equals(response.getAdv4Flag()); - BaseConstants.AD_BANNER = AdvFlagEnum.ON.getValue().equals(response.getAdv5Flag()); - BaseConstants.AD_DRAW = AdvFlagEnum.ON.getValue().equals(response.getAdv6Flag()); - - BaseConstants.AD_Switch_Requested = true; + }, delayMillis); } /** @@ -194,6 +154,7 @@ public class Activity_Splash extends Activity { toAd(); }); } + @Override public void error() { runOnUiThread(() -> toDmMain(500)); @@ -205,9 +166,9 @@ public class Activity_Splash extends Activity { private void to_main() { TokenManager instance = TokenManager.getInstance(this); boolean tokenValid = instance.isTokenValid(); - if (!tokenValid){ + if (!tokenValid) { startActivity(new Intent(Activity_Splash.this, Activity_Login.class)); - }else { + } else { startActivity(new Intent(Activity_Splash.this, Activity_Main.class)); } finish(); diff --git a/app/src/main/java/com/tfq/finances/main/AdUtils.java b/app/src/main/java/com/tfq/finances/main/AdUtils.java new file mode 100644 index 0000000..7424f47 --- /dev/null +++ b/app/src/main/java/com/tfq/finances/main/AdUtils.java @@ -0,0 +1,67 @@ + +package com.tfq.finances.main; + +import android.content.Context; +import com.tfq.finances.network.api.adv.AdService; +import com.tfq.finances.network.config.ApiCallback; +import com.tfq.finances.network.model.response.adv.AdvFlagResp; +import com.tfq.finances.app.App; +import com.tfq.finances.core.enums.AdvFlagEnum; +import com.tfq.ad.app.ADConstants; +import com.tfq.library.app.BaseConstants; + +public class AdUtils { + private static final AdService adService = new AdService(App.getContext()); + + private AdUtils() {} + + // 新增无回调版本 + public static void getAdvFlag() { + getAdvFlag(null); + } + + // 修改原有方法支持可选回调 + public static void getAdvFlag(final AdCallback callback) { + adService.getAdvFlag(new ApiCallback() { + @Override + public void onSuccess(AdvFlagResp response) { + try { + updateAdFlags(response); + if (response.getAdv4Wait() > 0) { + ADConstants.ADV_Wait = response.getAdv4Wait(); + } + if (callback != null) { + callback.onSuccess(); + } + } catch (Exception e) { + e.printStackTrace(); + if (callback != null) { + callback.onFailure("Exception: " + e.getMessage()); + } + } + } + + @Override + public void onFailure(int errorCode, String errorMessage) { + if (callback != null) { + callback.onFailure("Error: " + errorCode + ", " + errorMessage); + } + } + }); + } + + private static void updateAdFlags(AdvFlagResp response) { + ADConstants.AD_SPLASH = AdvFlagEnum.ON.getValue().equals(response.getAdv1Flag()); + ADConstants.AD_REWARD = AdvFlagEnum.ON.getValue().equals(response.getAdv2Flag()); + ADConstants.AD_NATIVE = AdvFlagEnum.ON.getValue().equals(response.getAdv3Flag()); + ADConstants.AD_CQP = AdvFlagEnum.ON.getValue().equals(response.getAdv4Flag()); + ADConstants.AD_BANNER = AdvFlagEnum.ON.getValue().equals(response.getAdv5Flag()); + ADConstants.AD_DRAW = AdvFlagEnum.ON.getValue().equals(response.getAdv6Flag()); + ADConstants.AD_Switch_Requested = true; + } + + public interface AdCallback { + void onSuccess(); + void onFailure(String errorMessage); + } +} diff --git a/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java b/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java index a081eaf..5dd0964 100644 --- a/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java +++ b/app/src/main/java/com/tfq/finances/main/activity/Activity_About_Us.java @@ -11,6 +11,8 @@ import android.widget.LinearLayout; import android.widget.TextView; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; import com.tfq.finances.jzrcj.R; import com.tfq.library.app.BaseConstants; import com.tfq.library.base.BaseActivity; @@ -64,7 +66,7 @@ public class Activity_About_Us extends BaseActivity { @Override public void onResume() { super.onResume(); - AdFeedUtils.show_ad(this, BaseConstants.CODE_AD_FEED1, flContent, 20, "page_about_us", 2); + AdFeedUtils.show_ad(this, AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), flContent, 20, "page_about_us", 2); } @Override @@ -117,7 +119,7 @@ public class Activity_About_Us extends BaseActivity { new AuthDialog(this, "authorizatio", new AuthDialog.Listener() { @Override public void callBack() { - BaseConstants.AD_Switch_Requested = false; + ADConstants.AD_Switch_Requested = false; SharedPreferences.Editor editor = SpManager.startWrite(Activity_About_Us.this, Constants.SP_NAME); editor.putBoolean("no_first_open", false); editor.commit(); diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java index d681347..3cc39fc 100644 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java +++ b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_A.java @@ -19,6 +19,7 @@ import com.alibaba.fastjson.JSON; import com.chad.library.adapter.base.BaseQuickAdapter; import com.tfq.ad.ad.AdBannerUtils; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.ad.LoadingDialog; import com.tfq.finances.finances.activity.Activity_Budgets; import com.tfq.finances.finances.activity.Activity_Detail_Add; import com.tfq.finances.finances.activity.Activity_Transactions; diff --git a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java index d3d20e6..2fe4717 100644 --- a/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java +++ b/app/src/main/java/com/tfq/finances/main/fragment/Fm_Page_S.java @@ -15,6 +15,8 @@ import android.widget.TextView; import com.airbnb.lottie.LottieAnimationView; import com.airbnb.lottie.RenderMode; import com.tfq.ad.ad.AdFeedUtils; +import com.tfq.ad.app.ADConstants; +import com.tfq.ad.app.AdApp; import com.tfq.finances.core.enums.AvatarEnum; import com.tfq.finances.finances.activity.Activity_Setting_More; import com.tfq.finances.jzrcj.R; @@ -139,7 +141,7 @@ public class Fm_Page_S extends BaseFragment { super.onResume(); // AdFeedUtils.show_ad(getActivity(), flContent, 20, "page_setting"); - AdFeedUtils.show_ad(getActivity(), BaseConstants.CODE_AD_FEED1, flContent, 20, "page_setting", 1); + AdFeedUtils.show_ad(getActivity(), AdApp.getInstance().getSlotConfig(ADConstants.AD_CODE_FEED1), flContent, 20, "page_setting", 1); if (Activity_Setting_More.avatar_Id != -1) { LogK.e("设置页 onResume 设置头像"); diff --git a/app/src/main/res/drawable/music_loading_anim.xml b/app/src/main/res/drawable/music_loading_anim.xml index ff4486c..04d37cb 100644 --- a/app/src/main/res/drawable/music_loading_anim.xml +++ b/app/src/main/res/drawable/music_loading_anim.xml @@ -1,16 +1,16 @@ - - - - - - - - - - - - + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 725f690..f762002 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -65,7 +65,7 @@ true true @anim/dialog_show_enter - @anim/dialog_show_exis + @anim/dialog_show_exit @@ -77,7 +77,7 @@ true true @anim/dialog_show_enter - @anim/dialog_show_exis + @anim/dialog_show_exit