admin
2022-07-25 3a01c2df2522acec74565b343a1dbb7294667a55
广告SDK升级,自启动权限删除
18个文件已修改
9个文件已添加
1673 ■■■■■ 已修改文件
BuWanVideo/AndroidManifest.xml 17 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/build.gradle 23 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/SplashActivity.java 41 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java 35 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/DownloadConfirmHelper.java 42 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/FullVideoAdManager.java 11 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/GMAdManagerHolder.java 113 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/RewardVideoAdManager.java 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/TTAdManagerHolder.java 30 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdBannerManager.java 187 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdFeedManager.java 204 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdFullVideoManager.java 183 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdInterstitialFullManager.java 188 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdInterstitialManager.java 180 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdRewardManager.java 196 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdSplashManager.java 157 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/src/com/weikou/beibeivideo/util/video/DPHolder.java 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
build.gradle 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
library-DownloadProvider/AndroidManifest.xml 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
library-GDTSDK/build.gradle 3 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
BuWanVideo/AndroidManifest.xml
@@ -25,6 +25,8 @@
        android:label="@string/permlab_downloadCompletedIntent"
        android:protectionLevel="normal" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.INTERNET" />
@@ -37,7 +39,6 @@
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.GET_TASKS" />
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="com.ddysvideo.mozillaonline.permission.ACCESS_DOWNLOAD_MANAGER" />
    <uses-permission android:name="com.ddysvideo.mozillaonline.permission.ACCESS_DOWNLOAD_MANAGER_ADVANCED" />
@@ -49,7 +50,15 @@
        android:protectionLevel="signature" />
    <uses-permission android:name="${applicationId}.permission.KW_SDK_BROADCAST" />
    <uses-sdk tools:overrideLibrary="com.bytedance.pangrowthsdk,com.bytedance.novel.pangolin,com.bytedance.sdk.dp.dpsdk_lite,com.bytedance.sdk.dp.dpsdk_live,com.byted.live.api,com.bytedance.pangolin.game,com.bytedance.miniapp,com.volcengine.mars.utility,com.shuyu.gsyvideoplayer.lib,com.shuyu.gsyvideoplayer,tv.danmaku.ijk.media.exo2,com.shuyu.gsyvideoplayer.armv5,com.shuyu.gsyvideoplayer.armv7a,com.shuyu.gsyvideoplayer.armv64,com.shuyu.gsyvideoplayer.x86_64,com.shuyu.gsyvideoplayer.x86,com.shuyu.gsy.base,shuyu.com.androidvideocache" />
    <!-- gromore -->
    <permission
        android:name="${applicationId}.openadsdk.permission.TT_PANGOLIN"
        android:protectionLevel="signature" />
    <uses-permission android:name="${applicationId}.openadsdk.permission.TT_PANGOLIN" />
    <uses-sdk tools:overrideLibrary="com.pangrowth.adclog,com.bytedance.pangrowthsdk,com.bytedance.novel.pangolin,com.bytedance.sdk.dp.dpsdk_lite,com.bytedance.sdk.dp.dpsdk_live,com.byted.live.api,com.bytedance.pangolin.game,com.bytedance.miniapp,com.volcengine.mars.utility,com.shuyu.gsyvideoplayer.lib,com.shuyu.gsyvideoplayer,tv.danmaku.ijk.media.exo2,com.shuyu.gsyvideoplayer.armv5,com.shuyu.gsyvideoplayer.armv7a,com.shuyu.gsyvideoplayer.armv64,com.shuyu.gsyvideoplayer.x86_64,com.shuyu.gsyvideoplayer.x86,com.shuyu.gsy.base,shuyu.com.androidvideocache" />
    <application
@@ -323,7 +332,7 @@
            android:value="570f28a578d6e12cba6f7f200b8d1c83"></meta-data>
        <meta-data
            android:name="UMENG_CHANNEL"
            android:value="VIVO"></meta-data>
            android:value="QQ"></meta-data>
        <provider
@@ -356,8 +365,6 @@
            android:name="com.mozillaonline.providers.downloads.DownloadReceiver"
            android:exported="false">
            <intent-filter>
                <!-- <action android:name="android.intent.action.BOOT_COMPLETED" /> -->
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
BuWanVideo/build.gradle
@@ -17,7 +17,7 @@
    implementation files('libs/wup-1.0.0.E-SNAPSHOT.jar')
    implementation files('libs/FunshionAD-1.3.16.aar')
//    implementation files('libs/FunshionBase-1.6.1.aar')
    implementation files('libs/FunshionBase-2.0.0.0.aar')
    implementation files('libs/FunshionBase-2.0.0.2.aar')
    implementation files('libs/FunshionPlaySDK-2.0.0.2-buwanysdq.aar')
@@ -87,17 +87,14 @@
    implementation 'com.qhutch.elevationimageview:elevationimageview:2.4'
    //穿山甲
    implementation 'com.pangle.cn:ads-sdk-pro:4.3.0.8'
    implementation 'com.pangle.cn:ads-sdk-pro:4.6.0.7'
    implementation('com.pangle.cn:pangrowth-sdk:2.3.0.0') {
    implementation('com.pangle.cn:pangrowth-sdk:2.7.0.0') {
        exclude group: 'com.pangle.cn', module: 'pangrowth-dpsdk-live'
        exclude group: 'com.pangle.cn', module: 'pangrowth-game-sdk'
        exclude group: 'com.pangle.cn', module: 'pangrowth-luckycat-sdk'
        exclude group: 'com.squareup.okhttp3', module: 'okhttp'
//        exclude group: 'com.pangle.cn', module: 'pangrowth-dpsdk'
    }
    implementation('com.bytedance.applog:RangersAppLog-Lite-cn:6.6.2')
@@ -106,6 +103,7 @@
    //indicator
    implementation 'com.github.hackware1993:MagicIndicator:1.7.0'
}
android {
    signingConfigs {
@@ -134,8 +132,8 @@
    defaultConfig {
        applicationId "com.doudou.ysvideo"
        versionCode 132
        versionName "3.10.14"
        versionCode 134
        versionName "3.10.16"
        multiDexEnabled = true
        minSdkVersion 17
        targetSdkVersion 29
@@ -178,10 +176,12 @@
    }
    //配置自定义打包名称
    applicationVariants.all { variant ->
        def stringsFile = android.sourceSets.main.res.sourceFiles.find { it.name.equals 'strings.xml' }
        def appName = new XmlParser().parse(stringsFile).string.find { it.@name.equals 'app_name' }.text()
        variant.outputs.all {
            def fileName
            if (variant.buildType.name.equals('release')) {
                fileName = "buwan_${variant.mergedFlavor.versionName}_release.apk"
                fileName = "${appName}_${variant.mergedFlavor.versionName}_release.apk"
            } else if (variant.buildType.name.equals('debug')) {
                fileName = "${variant.mergedFlavor.versionName}_debug.apk"
            }
@@ -262,9 +262,4 @@
    maven { url 'https://jitpack.io' }
    maven {
        url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
    }
}
BuWanVideo/src/com/weikou/beibeivideo/BeibeiVideoApplication.java
@@ -61,6 +61,7 @@
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.GDTConstant;
import com.weikou.beibeivideo.util.ad.GMAdManagerHolder;
import com.weikou.beibeivideo.util.ad.TTAdManagerHolder;
import com.weikou.beibeivideo.util.downutil.StringUtils;
import com.yeshi.appupdate.util.PackageUtils2;
@@ -218,10 +219,10 @@
            e.printStackTrace();
        }
        initWX(application);
        initX5(application);
        initNovel(application);
        initDPSDK(application);
    }
    private static String getProcessName(Context context) {
@@ -301,12 +302,13 @@
    /**
     * 穿山甲广告初始化
     */
    private static void initCSJAd(Context context, InitListener initListener) {
    private static void initCSJAd(Application context, InitListener initListener) {
        TTAdManagerHolder.init(context, new TTAdSdk.InitCallback() {
            @Override
            public void success() {
                if (initListener != null)
                    initListener.onFinish();
                initDPSDK(context);
            }
            @Override
@@ -377,7 +379,7 @@
                    .needInitAppLog(false)
                    .initListener(new DPSdkConfig.InitListener() {
                        @Override
                        public void onInitComplete(boolean b) {
                        public void onInitComplete(boolean b, String s) {
                            dpSDKIninted = b;
                        }
                    }) //接入了红包功能需要传入的参数,没有接入的话可以忽略该配置
BuWanVideo/src/com/weikou/beibeivideo/ui/SplashActivity.java
@@ -1,7 +1,6 @@
package com.weikou.beibeivideo.ui;
import android.Manifest;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.content.Context;
@@ -12,23 +11,19 @@
import android.content.pm.PackageManager;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.provider.Settings;
import androidx.annotation.NonNull;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.fragment.app.FragmentActivity;
import android.telephony.TelephonyManager;
import android.view.KeyEvent;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.bytedance.sdk.openadsdk.AdSlot;
import com.google.gson.Gson;
import com.lcjian.library.dialog.DialogUtil;
import com.lcjian.library.util.ScreenUtils;
@@ -55,6 +50,7 @@
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.GDTConstant;
import com.weikou.beibeivideo.util.ad.KSConstant;
import com.weikou.beibeivideo.util.ad.manager.gm.GMAdSplashManager;
import com.weikou.beibeivideo.util.ui.TopStatusSettings;
import org.apache.http.Header;
@@ -85,6 +81,8 @@
    private static final int REQUEST_CODE = 0; // 请求码
    private PermissionsChecker mPermissionsChecker; // 权限检测器
    private GMAdSplashManager mGMAdSplashManager;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
@@ -101,15 +99,6 @@
        ad_close_time = findViewById(R.id.ad_close_time);
        iv_bg = findViewById(R.id.iv_bg);
        SharedPreferences preferences = getSharedPreferences("link_page",
                Context.MODE_PRIVATE);
        isInput = preferences.getBoolean("isInput", false);
        mPermissionsChecker = new PermissionsChecker(this);
        // 初始化大设备
        SDCardUtil.initStorage(this);
        showProtocol();
        //设置背景图片
        Drawable drawable = getResources().getDrawable(R.drawable.ic_splash_bg);
@@ -120,6 +109,16 @@
        iv_bg.setImageBitmap(bitmap1);
    }
    private void init(){
        SharedPreferences preferences = getSharedPreferences("link_page",
                Context.MODE_PRIVATE);
        isInput = preferences.getBoolean("isInput", false);
        mPermissionsChecker = new PermissionsChecker(this);
        // 初始化大设备
        SDCardUtil.initStorage(this);
        myRequetPermission();
    }
    private void showProtocol() {
        String data = "尊敬的用户:<br>感谢您对" + getResources().getString(R.string.app_name) + "一直以来的信任!<br>";
@@ -127,7 +126,7 @@
        data += String.format("<a href='%s'>《隐私政策》</a>和", BeibeiConstant.PRIVACY_POLICY);
        data += String.format("<a href='%s'>《用户协议》</a>", BeibeiConstant.USER_AGREEMENT);
        data += "内的所有条款,<b>尤其是:<br>" +
                "1、我们对您的个人信息(包括但不限于<font color='#FF0000'>设备MAC地址、IMEI/Android ID</font>等信息)的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br>" +
                "1、我们对您的个人信息(包括但不限于<font color='#FF0000'>设备MAC地址、IMEI/AndroidID/OAID/IMSI/ICCID/GAID/MEID</font>等信息)的收集/保存/使用/对外提供/保护等规则条款,以及您的用户权利等条款;<br>" +
                "2、约定我们的限制责任、免责条款;<br>" +
                "3、其他以加粗或斜体字进行标识的重要条款。</b><br>" +
                "如您对协议有任何疑虑,可通过电子邮箱: yesbd@qq.com 向我们询问,我们将为您竭诚解答。您点击“同意并继续”的行为代表您已阅读完毕并接受以上协议全部条款。如您同意以上协议内容,请您点击“同意并继续”,开始使用您的产品。";
@@ -152,7 +151,7 @@
                                @Override
                                public void onClick(DialogInterface dialogInterface, int i) {
                                    dialogInterface.dismiss();
                                    myRequetPermission();
                                    init();
                                }
                            }).create().show();
@@ -171,7 +170,7 @@
            vg_ad.post(new Runnable() {
                @Override
                public void run() {
                    myRequetPermission();
                   init();
                }
            });
        }
@@ -406,6 +405,9 @@
    @Override
    protected void onDestroy() {
        super.onDestroy();
        if (mGMAdSplashManager != null) {
           // mGMAdSplashManager.destroy();
        }
    }
@@ -429,6 +431,7 @@
    private SplashADFragment splashADFragment;
    private void loadSplashAd(AdUtil.AD_TYPE adType, String pid) {
        AdPidInfo adPidInfo2 = null;
        if (adType == AdUtil.AD_TYPE.gdt) {
            adPidInfo2 = new AdPidInfo(AdUtil.AD_TYPE.csj, CSJConstant.SPLASH_AD);
@@ -576,7 +579,7 @@
        if (requestCode == REQUEST_CODE) {
            for (int i = 0; i < permissions.length; i++) {
                if (grantResults[i] == PERMISSION_GRANTED) {//选择了“始终允许”
                    myRequetPermission();
                    init();
                } else {
                    //拒绝了授权
                    if (grantResults[i] == PERMISSION_DENIED) {
BuWanVideo/src/com/weikou/beibeivideo/ui/ad/PlayVideoPreADFragment.java
@@ -37,6 +37,7 @@
import com.weikou.beibeivideo.util.DimenUtils;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.DownloadConfirmHelper;
import com.weikou.beibeivideo.util.downutil.StringUtils;
import com.weikou.beibeivideo.util.ui.IPageEventListener;
@@ -205,7 +206,7 @@
            }
        });
//        loadCSJ(CSJConstant.PLAY_VIDEO_PRE, videoAdListener);
        loadGDT( pid, videoAdListener);
        loadGDT(pid, videoAdListener);
    }
@@ -262,7 +263,7 @@
     * @param pid
     * @param videoAdListener
     */
    private void loadGDT( String pid, IVideoAdListener videoAdListener) {
    private void loadGDT(String pid, IVideoAdListener videoAdListener) {
        Log.i(TAG, "loadGDT");
        fl_ad.setVisibility(View.GONE);
        mContainer.setVisibility(View.VISIBLE);
@@ -281,6 +282,7 @@
            public void onADLoaded(List<NativeUnifiedADData> list) {
                Log.i(TAG, "onADLoaded");
                final NativeUnifiedADData ad = list.get(0);
                ad.setDownloadConfirmListener(DownloadConfirmHelper.DOWNLOAD_CONFIRM_LISTENER);
                //填充内容
                mGDTAdData = ad;
                List<View> clickableViews = new ArrayList<>();
BuWanVideo/src/com/weikou/beibeivideo/ui/main/MainActivity.java
@@ -224,24 +224,25 @@
        //拉取详情问题
        UserUtil.updateUserInfo(getApplicationContext(), null);
        //暂时取消推送
        //推送
        PushUtil.inintPush(getApplication(), new PushUtil.ITokenListener() {
            @Override
            public void onToken(String romType, String regId) {
                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        BeibeiVideoAPI.pushBindToken(getApplication(), romType, regId, new BasicTextHttpResponseHandler() {
                            @Override
                            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
                            }
                        }, true);
                    }
                });
            }
        });
//        PushUtil.inintPush(getApplication(), new PushUtil.ITokenListener() {
//
//            @Override
//            public void onToken(String romType, String regId) {
//                runOnUiThread(new Runnable() {
//                    @Override
//                    public void run() {
//                        BeibeiVideoAPI.pushBindToken(getApplication(), romType, regId, new BasicTextHttpResponseHandler() {
//                            @Override
//                            public void onSuccessPerfect(int statusCode, Header[] headers, JSONObject jsonObject) throws Exception {
//
//                            }
//                        }, true);
//                    }
//                });
//            }
//        });
//显示广告
        showInterstitialAd();
    }
BuWanVideo/src/com/weikou/beibeivideo/ui/media/EpisodeFragment.java
@@ -29,6 +29,7 @@
import com.google.gson.reflect.TypeToken;
import com.lcjian.library.RetainViewFragment;
import com.lcjian.library.dialog.DialogUtil;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.SingleToast;
import com.lcjian.library.util.common.DimenUtils;
import com.lcjian.library.util.common.StringUtils;
@@ -504,6 +505,11 @@
    // 加载播放页第一条广告,先设置加载上下文环境和条件
    private void loadAD1() {
        //vivo无广告
        if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(getContext(), "UMENG_CHANNEL"))) {
            return;
        }
        if (AdUtil.getAdType(getContext(), AdPositionEnum.splash) == null) {
            return;
BuWanVideo/src/com/weikou/beibeivideo/ui/media/VideoDetailActivity2.java
@@ -80,8 +80,10 @@
import com.weikou.beibeivideo.util.JsonUtil;
import com.weikou.beibeivideo.util.UmengEventUtil;
import com.weikou.beibeivideo.util.VideoUtil;
import com.weikou.beibeivideo.util.ad.AdUtil;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import com.weikou.beibeivideo.util.ad.FullVideoAdManager;
import com.weikou.beibeivideo.util.ad.InterstitialAdUtil;
import com.weikou.beibeivideo.util.goldcorn.GoldCornUtil;
import com.weikou.beibeivideo.util.ui.IPageEventListener;
import com.weikou.beibeivideo.util.ui.TopStatusSettings;
@@ -336,6 +338,12 @@
    private TTFullScreenVideoAd mTTFullScreenVideoAd;
    private void showInterstitialAd() {
//        InterstitialAdUtil.showAd(this, AdUtil.AD_TYPE.csj,"946608275");
//        if(1>0){
//            return;
//        }
        TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(VideoDetailActivity2.this);
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId("946608275")
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchActivity.java
@@ -40,6 +40,7 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.common.StringUtils;
import com.lcjian.library.widget.FlowLayout;
import com.lcjian.library.widget.MyGridView;
@@ -448,6 +449,11 @@
    // 1.加载广告,先设置加载上下文环境和条件
    private void initAdvertisement() {
        //vivo无广告
        if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(getApplicationContext(), "UMENG_CHANNEL"))) {
            return;
        }
        AdUtil.AD_TYPE adType1 = AdUtil.getAdType(getApplicationContext(), AdPositionEnum.videoSearch);
        if (adType1 == AdUtil.AD_TYPE.gdt) {
            adType1 = AdUtil.AD_TYPE.gdt2;
BuWanVideo/src/com/weikou/beibeivideo/ui/recommend/SearchResultActivity.java
@@ -31,6 +31,7 @@
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.common.SoftKeyboardUtils;
import com.lcjian.library.util.common.StringUtils;
import com.qq.e.ads.cfg.VideoOption;
@@ -428,6 +429,11 @@
    //拉取2.0的自渲染广告
    private void loadAd() {
        //vivo无广告
        if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(getApplicationContext(), "UMENG_CHANNEL"))) {
            return;
        }
        String pid = GDTConstant.PID_2_SEARCH_RESULT_ALBUM;
        NativeUnifiedAD mAdManager = new NativeUnifiedAD(this, pid, new NativeADUnifiedListener() {
BuWanVideo/src/com/weikou/beibeivideo/util/ExitDialog.java
@@ -10,6 +10,7 @@
import android.view.ViewGroup;
import android.widget.FrameLayout;
import com.lcjian.library.util.ManifestDataUtil;
import com.lcjian.library.util.SystemCommon;
import com.qq.e.ads.nativ.NativeExpressAD;
import com.weikou.beibeivideo.R;
@@ -141,6 +142,10 @@
        // 1.加载广告,先设置加载上下文环境和条件
        private void loadAd(boolean show) {
            //vivo无广告
            if ("vivo".equalsIgnoreCase(ManifestDataUtil.getAppMetaData(context, "UMENG_CHANNEL"))) {
                return;
            }
            expressAdManager.loadAppExitAd(new ExpressAdManager.IAdLoadListener() {
                @Override
BuWanVideo/src/com/weikou/beibeivideo/util/ad/DownloadConfirmHelper.java
New file
@@ -0,0 +1,42 @@
package com.weikou.beibeivideo.util.ad;
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.util.Log;
import com.qq.e.comm.compliance.DownloadConfirmCallBack;
import com.qq.e.comm.compliance.DownloadConfirmListener;
public class DownloadConfirmHelper {
    private static final String TAG = "DownloadConfirmHelper";
    public static final DownloadConfirmListener DOWNLOAD_CONFIRM_LISTENER =
            new DownloadConfirmListener() {
                @Override
                public void onDownloadConfirm(Activity context, int scenes, String infoUrl,
                                              DownloadConfirmCallBack callBack) {
                    Log.d(TAG, "scenes:" + scenes + " info url:" + infoUrl);
                    //获取对应的json数据并自定义显示
                    new AlertDialog.Builder(context).setMessage("是否下载该应用?").setNegativeButton("取消", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            callBack.onCancel();
                        }
                    }).setPositiveButton("下载", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                            callBack.onConfirm();
                        }
                    }).create().show();
                    //如果不想自己解析json数据可以直接使用webView展示应用信息,和上面二选一
                    //new DownloadApkConfirmDialogWebView(context, infoUrl, callBack).show();//使用webview显示
                }
            };
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/FullVideoAdManager.java
@@ -10,11 +10,13 @@
import com.bytedance.sdk.openadsdk.TTAdManager;
import com.bytedance.sdk.openadsdk.TTAdNative;
import com.bytedance.sdk.openadsdk.TTFullScreenVideoAd;
import com.lcjian.library.util.ManifestDataUtil;
import com.qq.e.ads.cfg.VideoOption;
import com.qq.e.ads.interstitial2.UnifiedInterstitialAD;
import com.qq.e.ads.interstitial2.UnifiedInterstitialADListener;
import com.qq.e.ads.interstitial2.UnifiedInterstitialMediaListener;
import com.qq.e.comm.util.AdError;
import com.weikou.beibeivideo.ui.VBrowserActivity;
import com.weikou.beibeivideo.util.BeibeiConstant;
import com.weikou.beibeivideo.util.DimenUtils;
@@ -47,8 +49,15 @@
    private void loadCSJ(final Context context, final IFullVideoAdListener adListener) {
        int w = DimenUtils.getScreenWidth(context);
        int h = DimenUtils.getScreenHeight(context);
        String channel = ManifestDataUtil.getAppMetaData(context, "UMENG_CHANNEL");
        String pid = "945393854";
        if ("huawei".equalsIgnoreCase(channel)) {
            pid = "948943768";
        }
        AdSlot adSlot = new AdSlot.Builder()
                .setCodeId("945393854")
                .setCodeId(pid)
                .setSupportDeepLink(true)
                .setExpressViewAcceptedSize(w, h)
                .setOrientation(TTAdConstant.VERTICAL)
BuWanVideo/src/com/weikou/beibeivideo/util/ad/GMAdManagerHolder.java
New file
@@ -0,0 +1,113 @@
package com.weikou.beibeivideo.util.ad;
import android.app.Activity;
import android.content.Context;
import android.provider.Settings;
//import com.bytedance.msdk.api.UserInfoForSegment;
//import com.bytedance.msdk.api.v2.GMAdConfig;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.GMConfigUserInfoForSegment;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMPangleOption;
//import com.bytedance.msdk.api.v2.GMPrivacyConfig;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
import com.lcjian.library.util.ManifestDataUtil;
import java.util.HashMap;
import java.util.Map;
import androidx.annotation.NonNull;
public class GMAdManagerHolder {
//
//    private static boolean sInit;
//
//    public static void init(Context context, GMSettingConfigCallback callback) {
//        doInit(context, callback);
//    }
//
//    public static void initUnitySdkBanner(Activity activity) {
//        GMMediationAdSdk.initUnityForBanner(activity);
//    }
//
//
//    //step1:接入网盟广告sdk的初始化操作,详情见接入文档和穿山甲平台说明
//    private static void doInit(@NonNull Context context, GMSettingConfigCallback callback) {
//        if (!sInit) {
//            GMMediationAdSdk.registerConfigCallback(callback);
//            GMMediationAdSdk.initialize(context, buildV2Config(context));
//            sInit = true;
//        }
//    }
//
//    public static GMAdConfig buildV2Config(Context context) {
//        GMConfigUserInfoForSegment userInfo = new GMConfigUserInfoForSegment();
//        userInfo.setUserId("msdk-demo");
//        userInfo.setGender(UserInfoForSegment.GENDER_MALE);
//        userInfo.setChannel(ManifestDataUtil.getAppMetaData(context, "UMENG_CHANNEL"));
//        userInfo.setSubChannel("msdk-sub-channel");
//        userInfo.setAge(999);
//        userInfo.setUserValueGroup("msdk-demo-user-value-group");
//
//        Map<String, String> customInfos = new HashMap<>();
//        customInfos.put("aaaa", "test111");
//        customInfos.put("bbbb", "test222");
//        userInfo.setCustomInfos(customInfos);
//
//        Map<String, Object> initConfig = new HashMap<>();
//        initConfig.put("1111", "22222");
//        initConfig.put("22222", "33333");
//        initConfig.put("44444", "5555");
//        return new GMAdConfig.Builder()
//                .setAppId("5095354")
//                .setAppName("影视大全")
//                .setDebug(true)
//                .setPublisherDid(getAndroidId(context))
//                .setOpenAdnTest(false)
//                .setConfigUserInfoForSegment(userInfo)
//                .setPangleOption(new GMPangleOption.Builder()
//                        .setIsPaid(false)
//                        .setTitleBarTheme(GMAdConstant.TITLE_BAR_THEME_DARK)
//                        .setAllowShowNotify(true)
//                        .setAllowShowPageWhenScreenLock(true)
//                        .setDirectDownloadNetworkType(GMAdConstant.NETWORK_STATE_WIFI, GMAdConstant.NETWORK_STATE_3G)
//                        .setIsUseTextureView(true)
//                        .setNeedClearTaskReset()
//                        .setKeywords("")
//                        .build())
//                .setPrivacyConfig(new GMPrivacyConfig() {
//                    // 重写相应的函数,设置需要设置的权限开关,不重写的将采用默认值
//                    // 例如,重写isCanUsePhoneState函数返回true,表示允许使用ReadPhoneState权限。
//                    @Override
//                    public boolean isCanUsePhoneState() {
//                        return true;
//                    }
//
//                    //当isCanUseWifiState=false时,可传入Mac地址信息,穿山甲sdk使用您传入的Mac地址信息
//                    @Override
//                    public String getMacAddress() {
//                        return "";
//                    }
//
//                    // 设置青少年合规,默认值GMAdConstant.ADULT_STATE.AGE_ADULT为成年人
//                    @Override
//                    public GMAdConstant.ADULT_STATE getAgeGroup() {
//                        return GMAdConstant.ADULT_STATE.AGE_ADULT;
//                    }
//                })
//                .setLocalExtra(initConfig)
//                .build();
//    }
//
//    public static String getAndroidId(Context context) {
//        String androidId = null;
//        try {
//            androidId = Settings.System.getString(context.getContentResolver(), Settings.System.ANDROID_ID);
//        } catch (Exception e) {
//            e.printStackTrace();
//        }
//        return androidId;
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/RewardVideoAdManager.java
@@ -2,6 +2,7 @@
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import com.bytedance.sdk.openadsdk.AdSlot;
@@ -188,6 +189,11 @@
                    }
                }
                @Override
                public void onRewardArrived(boolean b, int i, Bundle bundle) {
                }
                //跳过视频播放回调
                @Override
                public void onSkippedVideo() {
BuWanVideo/src/com/weikou/beibeivideo/util/ad/TTAdManagerHolder.java
@@ -3,10 +3,12 @@
import android.content.Context;
import android.util.Log;
import com.bytedance.sdk.openadsdk.LocationProvider;
import com.bytedance.sdk.openadsdk.TTAdConfig;
import com.bytedance.sdk.openadsdk.TTAdConstant;
import com.bytedance.sdk.openadsdk.TTAdManager;
import com.bytedance.sdk.openadsdk.TTAdSdk;
import com.bytedance.sdk.openadsdk.TTCustomController;
import com.weikou.beibeivideo.R;
import com.weikou.beibeivideo.entity.ad.AdPositionEnum;
@@ -50,15 +52,31 @@
                .appName(context.getString(R.string.app_name))
                .titleBarTheme(TTAdConstant.TITLE_BAR_THEME_DARK)
                .allowShowNotify(true) //是否允许sdk展示通知栏提示
                .debug(true) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
//                .directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI)
                .supportMultiProcess(true)//是否支持多进程
                .debug(false) //测试阶段打开,可以通过日志排查问题,上线时去除该调用
                .directDownloadNetworkType(null)
                .supportMultiProcess(false)//是否支持多进程
                .customController(new TTCustomController() {
                    @Override
                    public boolean isCanUseLocation() {
                        return false;
                    }
                    @Override
                    public LocationProvider getTTLocation() {
                        return null;
                    }
                    @Override
                    public boolean isCanUseAndroidId() {
                        return false;
                    }
                })
                .asyncInit(true)
                .needClearTaskReset();
        //.httpStack(new MyOkStack3())//自定义网络库,demo中给出了okhttp3版本的样例,其余请自行开发或者咨询工作人员。
        if (AdUtil.getAdType(context, AdPositionEnum.splashHotStart) != null) {
            builder.directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI);
        }
        //if (AdUtil.getAdType(context, AdPositionEnum.splashHotStart) != null) {
        //  builder.directDownloadNetworkType(TTAdConstant.NETWORK_STATE_WIFI);
        //}
        return builder.build();
    }
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdBannerManager.java
New file
@@ -0,0 +1,187 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMAdSize;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.banner.GMBannerAd;
//import com.bytedance.msdk.api.v2.ad.banner.GMBannerAdListener;
//import com.bytedance.msdk.api.v2.ad.banner.GMBannerAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotBanner;
//import com.weikou.beibeivideo.util.ad.GMAdManagerHolder;
import java.util.List;
public class GMAdBannerManager {
//    private static final String TAG = GMAdBannerManager.class.getSimpleName();
//
//    private GMBannerAd mBannerViewAd;
//    private Activity mActivity;
//    private GMBannerAdLoadCallback mBannerAdLoadCallback;
//    private GMBannerAdListener mAdBannerListener;
//    private String mAdUnitId; //广告位
//
//    public GMAdBannerManager(Activity activity, GMBannerAdLoadCallback bannerAdLoadCallback, GMBannerAdListener adBannerListener) {
//        //如果接入了Unity sdk 建议提前初始化
//        GMAdManagerHolder.initUnitySdkBanner(activity);
//        mActivity = activity;
//        mBannerAdLoadCallback = bannerAdLoadCallback;
//        mAdBannerListener = adBannerListener;
//    }
//
//    public GMBannerAd getBannerAd() {
//        return mBannerViewAd;
//    }
//
//    public void loadAdWithCallback(final String adUnitId) {
//        this.mAdUnitId = adUnitId;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadBannerAd(adUnitId);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    private void loadBannerAd(String unitId) {
//        /**
//         * 注:每次加载banner的时候需要新建一个GMBannerAd,一个广告对象只能load一次,banner广告对象getBannerView只能一次,第二次调用会返回空
//         */
//        if (mBannerViewAd != null) {
//            mBannerViewAd.destroy();
//        }
//        mBannerViewAd = new GMBannerAd(mActivity, unitId);
//
//        //设置广告事件监听
//        mBannerViewAd.setAdBannerListener(mAdBannerListener);
//
//        //设置广告配置
//        GMAdSlotBanner slotBanner = new GMAdSlotBanner.Builder()
//                .setBannerSize(GMAdSize.BANNER_CUSTOME)
//                .setImageAdSize(320, 150)// GMAdSize.BANNER_CUSTOME可以调用setImageAdSize设置大小
////                .setRefreshTime(30) // 从v3100版本开始,不支持sdk端设置banner轮播时间,只能从GroMore平台进行配置。sdk端设置无效。
//                .setAllowShowCloseBtn(true)//如果广告本身允许展示关闭按钮,这里设置为true就是展示。注:目前只有mintegral支持。
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//        //请求广告,对请求回调的广告作渲染处理
//        mBannerViewAd.loadAd(slotBanner, mBannerAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mBannerViewAd != null) {
//            mBannerViewAd.destroy();
//        }
//        mActivity = null;
//        mBannerViewAd = null;
//        mBannerAdLoadCallback = null;
//        mAdBannerListener = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadAdWithCallback(mAdUnitId);
//        }
//    };
//
//
////-----------以下方法非必须 ,按需使用--------------
//
//    //展示已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mBannerViewAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mBannerViewAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//         */
//        GMAdEcpmInfo gmAdEcpmInfo = mBannerViewAd.getBestEcpm();
//        if (gmAdEcpmInfo != null) {
//            Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                    + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                    + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                    + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                    + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                    + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                    + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                    + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                    + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mBannerViewAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mBannerViewAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "InterstitialFull ad loadinfos: " + mBannerViewAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printShowAdInfo() {
//        if (mBannerViewAd == null) {
//            return;
//        }
//        GMAdEcpmInfo gmAdEcpmInfo = mBannerViewAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdFeedManager.java
New file
@@ -0,0 +1,204 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
import android.view.Gravity;
import android.widget.FrameLayout;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.adapter.util.UIUtils;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.nativeAd.GMNativeAd;
//import com.bytedance.msdk.api.v2.ad.nativeAd.GMNativeAdLoadCallback;
//import com.bytedance.msdk.api.v2.ad.nativeAd.GMUnifiedNativeAd;
//import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotNative;
//import com.bytedance.msdk.api.v2.slot.paltform.GMAdSlotGDTOption;
import com.weikou.beibeivideo.util.DimenUtils;
import java.util.List;
public class GMAdFeedManager {
    private static final String TAG = GMAdFeedManager.class.getSimpleName();
//    private GMUnifiedNativeAd mGMUnifiedNativeAd;
//    private Activity mActivity;
//    private GMNativeAdLoadCallback mGMNativeAdLoadCallback;
//    private String mAdUnitId; //广告位
//    private int mAdCount; //广告数量
//    private int mStyleType; //模板类型,可以不传
//
//    public GMAdFeedManager(Activity activity, GMNativeAdLoadCallback gmNativeAdLoadCallback) {
//        mActivity = activity;
//        mGMNativeAdLoadCallback = gmNativeAdLoadCallback;
//    }
//
//    public GMUnifiedNativeAd getGMUnifiedNativeAd() {
//        return mGMUnifiedNativeAd;
//    }
//
//
//    /**
//     *
//     * @param adUnitId 广告位ID
//     * @param adCount 广告数量
//     *
//     */
//    /**
//     * @param adUnitId  广告位ID
//     * @param adCount   广告数量
//     * @param styleType //模板类型,兜底使用,可以不传(AdSlot.TYPE_EXPRESS_AD:模板广告 ; AdSlot.TYPE_NATIVE_AD:原生广告)
//     */
//    public void loadAdWithCallback(final String adUnitId, int adCount, int styleType) {
//        this.mAdUnitId = adUnitId;
//        this.mAdCount = adCount;
//        this.mStyleType = styleType;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadAd(adUnitId, adCount, styleType);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    private void loadAd(String adUnitId, int adCount, int styleType) {
//        mGMUnifiedNativeAd = new GMUnifiedNativeAd(mActivity, adUnitId);//模板视频
//
//        // 针对Gdt Native自渲染广告,可以自定义gdt logo的布局参数。该参数可选,非必须。
//        FrameLayout.LayoutParams gdtNativeAdLogoParams =
//                new FrameLayout.LayoutParams(
//                        DimenUtils.dip2px(mActivity.getApplicationContext(), 40),
//                        DimenUtils.dip2px(mActivity.getApplicationContext(), 13),
//                        Gravity.RIGHT | Gravity.TOP); // 例如,放在右上角
//
//
//        GMAdSlotGDTOption.Builder adSlotNativeBuilder = GMAdOptionUtil.getGMAdSlotGDTOption()
//                .setNativeAdLogoParams(gdtNativeAdLogoParams);
//
//        /**
//         * 创建feed广告请求类型参数GMAdSlotNative,具体参数含义参考文档
//         * 备注
//         * 1: 如果是信息流自渲染广告,设置广告图片期望的图片宽高 ,不能为0
//         * 2:如果是信息流模板广告,宽度设置为希望的宽度,高度设置为0(0为高度选择自适应参数)
//         */
//        GMAdSlotNative adSlotNative = new GMAdSlotNative.Builder()
//                .setGMAdSlotBaiduOption(GMAdOptionUtil.getGMAdSlotBaiduOption().build())//百度相关的配置
//                .setGMAdSlotGDTOption(adSlotNativeBuilder.build())//gdt相关的配置
//                .setAdmobNativeAdOptions(GMAdOptionUtil.getAdmobNativeAdOptions())//admob相关配置
//                .setAdStyleType(styleType)//必传,表示请求的模板广告还是原生广告,AdSlot.TYPE_EXPRESS_AD:模板广告 ; AdSlot.TYPE_NATIVE_AD:原生广告
//                // 备注
//                // 1:如果是信息流自渲染广告,设置广告图片期望的图片宽高 ,不能为0
//                // 2:如果是信息流模板广告,宽度设置为希望的宽度,高度设置为0(0为高度选择自适应参数)
//                .setImageAdSize((int) DimenUtils.px2dip(mActivity, DimenUtils.getScreenWidth(mActivity.getApplicationContext())), 340)// 必选参数 单位dp ,详情见上面备注解释
//                .setAdCount(adCount)//请求广告数量为1到3条
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//
//        //请求广告,调用feed广告异步请求接口,加载到广告后,拿到广告素材自定义渲染
//        /**
//         * 注:每次加载信息流广告的时候需要新建一个GMUnifiedNativeAd,否则可能会出现广告填充问题
//         * (例如:mTTAdNative = new GMUnifiedNativeAd(this, mAdUnitId);)
//         */
//        mGMUnifiedNativeAd.loadAd(adSlotNative, mGMNativeAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mGMUnifiedNativeAd != null) {
//            mGMUnifiedNativeAd.destroy();
//        }
//        mActivity = null;
//        mGMNativeAdLoadCallback = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadAd(mAdUnitId, mAdCount, mStyleType);
//        }
//    };
//
//
//    //-----------以下方法非必须 ,按需使用--------------
//
//    //打印已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mGMUnifiedNativeAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mGMUnifiedNativeAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mGMUnifiedNativeAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "   ");
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mGMUnifiedNativeAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "reward ad loadinfos: " + mGMUnifiedNativeAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printShowAdInfo(GMNativeAd gmNativeAd) {
//        if (gmNativeAd == null) {
//            return;
//        }
//        GMAdEcpmInfo gmAdEcpmInfo = gmNativeAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdFullVideoManager.java
New file
@@ -0,0 +1,183 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.fullvideo.GMFullVideoAd;
//import com.bytedance.msdk.api.v2.ad.fullvideo.GMFullVideoAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotFullVideo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GMAdFullVideoManager {
//    private static final String TAG =  GMAdFullVideoManager.class.getSimpleName();
//
//    private GMFullVideoAd mFullVideoAd;
//    private Activity mActivity;
//    private GMFullVideoAdLoadCallback mGMFullVideoAdLoadCallback;
//    private int mOrientation; //方向
//    private String mAdUnitId; //广告位
//
//    public GMAdFullVideoManager(Activity activity, GMFullVideoAdLoadCallback fullVideoAdLoadCallback) {
//        mActivity = activity;
//        mGMFullVideoAdLoadCallback = fullVideoAdLoadCallback;
//    }
//
//    public GMFullVideoAd getFullVideoAd() {
//        return mFullVideoAd;
//    }
//
//    public void laodAdWithCallback(final String adUnitId, final int orientation) {
//        this.mOrientation = orientation;
//        this.mAdUnitId = adUnitId;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadAd(adUnitId, orientation);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    private void loadAd(String unitId, int orientation) {
//        /**
//         * 注:每次加载全屏视频广告的时候需要新建一个GMFullVideoAd,否则可能会出现广告填充问题
//         */
//        mFullVideoAd = new GMFullVideoAd(mActivity, unitId);
//
//        Map<String, String> customData = new HashMap<>();
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_GDT, "gdt custom data");//目前仅支持gdt
//        // 其他需要透传给adn的数据。
//
//        GMAdSlotFullVideo adSlotFullVideo = new GMAdSlotFullVideo.Builder()
//                .setGMAdSlotGDTOption(GMAdOptionUtil.getGMAdSlotGDTOption().build())
//                .setGMAdSlotBaiduOption(GMAdOptionUtil.getGMAdSlotBaiduOption().build())
//                .setUserID("user123")//用户id,必传参数
//                .setOrientation(orientation)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL;
//                .setRewardName("金币") //奖励的名称
//                .setRewardAmount(3)  //奖励的数量
//                .setCustomData(customData) //服务端验证
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//        mFullVideoAd.loadAd(adSlotFullVideo, mGMFullVideoAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mFullVideoAd != null) {
//            mFullVideoAd.destroy();
//        }
//        mActivity = null;
//        mGMFullVideoAdLoadCallback = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadAd(mAdUnitId, mOrientation);
//        }
//    };
//
//
//    //-----------以下方法非必须 ,按需使用--------------
//
//    //打印已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mFullVideoAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mFullVideoAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//         */
//        GMAdEcpmInfo gmAdEcpmInfo = mFullVideoAd.getBestEcpm();
//        if (gmAdEcpmInfo != null) {
//            Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                    + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                    + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                    + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                    + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                    + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                    + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                    + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                    + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mFullVideoAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mFullVideoAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "reward ad loadinfos: " + mFullVideoAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printSHowAdInfo() {
//        if (mFullVideoAd == null) {
//            return;
//        }
//        GMAdEcpmInfo gmAdEcpmInfo = mFullVideoAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdInterstitialFullManager.java
New file
@@ -0,0 +1,188 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.interstitialFull.GMInterstitialFullAd;
//import com.bytedance.msdk.api.v2.ad.interstitialFull.GMInterstitialFullAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotInterstitialFull;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GMAdInterstitialFullManager {
//    private static final String TAG = GMAdInterstitialFullManager.class.getSimpleName();
//
//    private GMInterstitialFullAd mGMInterstitialFullAd;
//    private Activity mActivity;
//    private GMInterstitialFullAdLoadCallback mGMInterstitialFullAdLoadCallback;
//    private String mAdUnitId; //广告位
//
//    public GMAdInterstitialFullManager(Activity activity, GMInterstitialFullAdLoadCallback gmInterstitialFullAdLoadCallback) {
//        mActivity = activity;
//        mGMInterstitialFullAdLoadCallback = gmInterstitialFullAdLoadCallback;
//    }
//
//    public GMInterstitialFullAd getGMInterstitialFullAd() {
//        return mGMInterstitialFullAd;
//    }
//
//
//    public void loadAdWithCallback(final String adUnitId) {
//        this.mAdUnitId = adUnitId;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadAd(adUnitId);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    private void loadAd(String unitId) {
//        /**
//         * 注:每次加载插全屏广告的时候需要新建一个GMInterstitialFullAd,否则可能会出现广告填充问题
//         * ( 例如:mInterstitialFullAd = new GMInterstitialFullAd(this, adUnitId);)
//         */
//        //Context 必须传activity
//        mGMInterstitialFullAd = new GMInterstitialFullAd(mActivity, unitId);
//
//        Map<String, String> customData = new HashMap<>();
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_GDT, "gdt custom data");//目前仅支持gdt
//        // 其他需要透传给adn的数据。
//
//        GMAdSlotInterstitialFull adSlotInterstitialFull = new GMAdSlotInterstitialFull.Builder()
//                .setGMAdSlotBaiduOption(GMAdOptionUtil.getGMAdSlotBaiduOption().build())
//                .setGMAdSlotGDTOption(GMAdOptionUtil.getGMAdSlotGDTOption().build())
//                .setImageAdSize(600, 600)  //设置宽高 (插全屏类型下_插屏广告使用)
//                .setVolume(0.5f) //admob 声音配置,与setMuted配合使用
//                .setUserID("user123")//用户id,必传参数 (插全屏类型下_全屏广告使用)
//                .setCustomData(customData)
//                .setRewardName("金币") //奖励的名称
//                .setRewardAmount(3)  //奖励的数量
//                .setOrientation(GMAdConstant.HORIZONTAL)//必填参数,期望视频的播放方向:TTAdConstant.HORIZONTAL 或 TTAdConstant.VERTICAL; (插全屏类型下_全屏广告使用)
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//
//        //请求广告,调用插屏广告异步请求接口
//        mGMInterstitialFullAd.loadAd(adSlotInterstitialFull, mGMInterstitialFullAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mGMInterstitialFullAd != null) {
//            mGMInterstitialFullAd.destroy();
//        }
//        mActivity = null;
//        mGMInterstitialFullAdLoadCallback = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadAd(mAdUnitId);
//        }
//    };
//
//
//    //-----------以下方法非必须 ,按需使用--------------
//
//    //展示已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mGMInterstitialFullAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mGMInterstitialFullAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//         */
//        GMAdEcpmInfo gmAdEcpmInfo = mGMInterstitialFullAd.getBestEcpm();
//        if (gmAdEcpmInfo != null) {
//            Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                    + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                    + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                    + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                    + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                    + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                    + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                    + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                    + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mGMInterstitialFullAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mGMInterstitialFullAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "InterstitialFull ad loadinfos: " + mGMInterstitialFullAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printSHowAdInfo() {
//        if (mGMInterstitialFullAd == null) {
//            return;
//        }
//        GMAdEcpmInfo gmAdEcpmInfo = mGMInterstitialFullAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdInterstitialManager.java
New file
@@ -0,0 +1,180 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.interstitial.GMInterstitialAd;
//import com.bytedance.msdk.api.v2.ad.interstitial.GMInterstitialAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotInterstitial;
import java.util.List;
public class GMAdInterstitialManager {
//    private static final String TAG =  GMAdInterstitialManager.class.getSimpleName();
//
//    private Activity mActivity;
//    private GMInterstitialAd mInterstitialAd;
//    private GMInterstitialAdLoadCallback mGMInterstitialAdLoadCallback;
//
//    private String mAdUnitId; //广告位
//
//    public GMAdInterstitialManager(Activity activity, GMInterstitialAdLoadCallback interstitialAdLoadCallback) {
//        mActivity = activity;
//        mGMInterstitialAdLoadCallback = interstitialAdLoadCallback;
//    }
//
//    public GMInterstitialAd getInterstitialAd() {
//        return mInterstitialAd;
//    }
//
//
//    public void loadAdWithCallback(final String adUnitId) {
//        this.mAdUnitId = adUnitId;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadInteractionAd(adUnitId);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    /**
//     * 加载插屏广告
//     */
//    private void loadInteractionAd(String unitId) {
//        //Context 必须传activity
//        /**
//         * 注:每次加载插屏广告的时候需要新建一个GMInterstitialAd,否则可能会出现广告填充问题
//         * ( 例如:mInterstitialAd = new GMInterstitialAd(this, adUnitId);)
//         */
//        mInterstitialAd = new GMInterstitialAd(mActivity, unitId);
//
//        GMAdSlotInterstitial adSlotInterstitial = new GMAdSlotInterstitial.Builder()
//                .setGMAdSlotBaiduOption(GMAdOptionUtil.getGMAdSlotBaiduOption().build())
//                .setGMAdSlotGDTOption(GMAdOptionUtil.getGMAdSlotGDTOption().build())
//                .setImageAdSize(600, 600)
//                .setVolume(0.5f)
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//
//        //请求广告,调用插屏广告异步请求接口
//        mInterstitialAd.loadAd(adSlotInterstitial, mGMInterstitialAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mInterstitialAd != null) {
//            mInterstitialAd.destroy();
//        }
//        mActivity = null;
//        mGMInterstitialAdLoadCallback = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadInteractionAd(mAdUnitId);
//        }
//    };
//
//
//    //-----------以下方法非必须 ,按需使用--------------
//
//    //打印已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mInterstitialAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mInterstitialAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//         */
//        GMAdEcpmInfo gmAdEcpmInfo = mInterstitialAd.getBestEcpm();
//        if (gmAdEcpmInfo != null) {
//            Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                    + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                    + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                    + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                    + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                    + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                    + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                    + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                    + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mInterstitialAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mInterstitialAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "reward ad loadinfos: " + mInterstitialAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printShowAdInfo() {
//        if (mInterstitialAd == null) {
//            return;
//        }
//        GMAdEcpmInfo gmAdEcpmInfo = mInterstitialAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdRewardManager.java
New file
@@ -0,0 +1,196 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.GMMediationAdSdk;
//import com.bytedance.msdk.api.v2.GMSettingConfigCallback;
//import com.bytedance.msdk.api.v2.ad.reward.GMRewardAd;
//import com.bytedance.msdk.api.v2.ad.reward.GMRewardedAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdOptionUtil;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotRewardVideo;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class GMAdRewardManager {
//    private static final String TAG = GMAdRewardManager.class.getSimpleName();
//
//    private GMRewardAd mGMRewardAd;
//    private Activity mActivity;
//    private GMRewardedAdLoadCallback mGMRewardedAdLoadCallback;
//    private int mOrientation; //方向
//    private String mAdUnitId; //广告位
//
//    public GMAdRewardManager(Activity activity, GMRewardedAdLoadCallback gmRewardedAdLoadCallback) {
//        mActivity = activity;
//        mGMRewardedAdLoadCallback = gmRewardedAdLoadCallback;
//    }
//
//    public GMRewardAd getGMRewardAd() {
//        return mGMRewardAd;
//    }
//
//
//    public void laodAdWithCallback(final String adUnitId, final int orientation) {
//        this.mOrientation = orientation;
//        this.mAdUnitId = adUnitId;
//
//        /**
//         * 判断当前是否存在config 配置 ,如果存在直接加载广告 ,如果不存在则注册config加载回调
//         */
//        if (GMMediationAdSdk.configLoadSuccess()) {
//            Log.e(TAG, "load ad 当前config配置存在,直接加载广告");
//            loadAd(adUnitId, orientation);
//        } else {
//            Log.e(TAG, "load ad 当前config配置不存在,正在请求config配置....");
//            GMMediationAdSdk.registerConfigCallback(mSettingConfigCallback); //不用使用内部类,否则在ondestory中无法移除该回调
//        }
//    }
//
//    private void loadAd(String unitId, int orientation) {
//        /**
//         * 注:每次加载激励视频广告的时候需要新建一个TTRewardAd,否则可能会出现广告填充问题
//         * ( 例如:mttRewardAd = new GMRewardAd(this, adUnitId);)
//         */
//        mGMRewardAd = new GMRewardAd(mActivity, unitId);
//
//        // 未开启gromore服务端验证
//        Map<String, String> customData = new HashMap<>();
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_PANGLE, "pangle media_extra");
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_GDT, "gdt custom data");
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_KS, "ks custom data");
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_SIGMOB, "sigmob custom data");
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_MINTEGRAL, "mintegral custom data");
//        // 如果开启了gromre服务端激励验证,可以传以下信息,跟adn无关。
//        customData.put(GMAdConstant.CUSTOM_DATA_KEY_GROMORE_EXTRA, "gromore serverside verify extra data"); // 会透传给媒体的服务器
//        // 其他需要透传给adn的数据。
//
//        GMAdSlotRewardVideo adSlotRewardVideo = new GMAdSlotRewardVideo.Builder()
//                .setMuted(true)//对所有SDK的激励广告生效,除需要在平台配置的SDK,如穿山甲SDK
//                .setVolume(0f)//配合Admob的声音大小设置[0-1]
//                .setGMAdSlotGDTOption(GMAdOptionUtil.getGMAdSlotGDTOption().build())
//                .setGMAdSlotBaiduOption(GMAdOptionUtil.getGMAdSlotBaiduOption().build())
//                .setCustomData(customData)
//                .setRewardName("金币") //奖励的名称
//                .setRewardAmount(3)  //奖励的数量
//                .setUserID("user123")//用户id,必传参数
//                .setUseSurfaceView(false)
//                .setOrientation(orientation)//必填参数,期望视频的播放方向:GMAdConstant.HORIZONTAL 或 GMAdConstant.VERTICAL
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .build();
//        mGMRewardAd.loadAd(adSlotRewardVideo, mGMRewardedAdLoadCallback);
//    }
//
//    public void destroy() {
//        if (mGMRewardAd != null) {
//            mGMRewardAd.destroy();
//        }
//        mActivity = null;
//        mGMRewardedAdLoadCallback = null;
//        GMMediationAdSdk.unregisterConfigCallback(mSettingConfigCallback); //注销config回调
//    }
//
//    /**
//     * config回调
//     */
//    private GMSettingConfigCallback mSettingConfigCallback = new GMSettingConfigCallback() {
//        @Override
//        public void configLoad() {
//            Log.e(TAG, "load ad 在config 回调中加载广告");
//            loadAd(mAdUnitId, mOrientation);
//        }
//    };
//
//
//    //-----------以下方法非必须 ,按需使用--------------
//
//    //打印已经加载广告的信息
//    public void printLoadAdInfo() {
//        if (mGMRewardAd == null) {
//            return;
//        }
//        /**
//         * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//         */
//        List<GMAdEcpmInfo> gmAdEcpmInfos = mGMRewardAd.getMultiBiddingEcpm();
//        if (gmAdEcpmInfos != null) {
//            for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                Log.e(TAG, "***多阶+client相关信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//
//        /**
//         * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//         */
//        GMAdEcpmInfo gmAdEcpmInfo = mGMRewardAd.getBestEcpm();
//        if (gmAdEcpmInfo != null) {
//            Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                    + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                    + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                    + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                    + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                    + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                    + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                    + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                    + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//        }
//
//        /**
//         * 获取获取当前缓存池的全部信息
//         */
//        List<GMAdEcpmInfo> gmCacheInfos = mGMRewardAd.getCacheList();
//        if (gmCacheInfos != null) {
//            for (GMAdEcpmInfo info : gmCacheInfos) {
//                Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + info.getReqBiddingType()
//                        + "  PreEcpm:" + info.getPreEcpm()
//                        + "  LevelTag:" + info.getLevelTag()
//                        + "  ErrorMsg:" + info.getErrorMsg()
//                        + "  request_id:" + info.getRequestId()
//                        + "  SdkName:" + info.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//            }
//        }
//    }
//
//    //打印加载失败的adn错误信息
//    public void printLoadFailAdnInfo() {
//        if (mGMRewardAd == null) {
//            return;
//        }
//
//        // 获取本次waterfall加载中,加载失败的adn错误信息。
//        Log.d(TAG, "reward ad loadinfos: " + mGMRewardAd.getAdLoadInfoList());
//    }
//
//    //打印已经展示的广告信息
//    public void printSHowAdInfo() {
//        if (mGMRewardAd == null) {
//            return;
//        }
//
//        GMAdEcpmInfo gmAdEcpmInfo = mGMRewardAd.getShowEcpm();
//        if (gmAdEcpmInfo == null) {
//            return;
//        }
//        Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/ad/manager/gm/GMAdSplashManager.java
New file
@@ -0,0 +1,157 @@
package com.weikou.beibeivideo.util.ad.manager.gm;
import android.app.Activity;
import android.util.Log;
//import com.bytedance.msdk.adapter.pangle.PangleNetworkRequestInfo;
//import com.bytedance.msdk.adapter.util.Logger;
//import com.bytedance.msdk.adapter.util.UIUtils;
//import com.bytedance.msdk.api.GMAdEcpmInfo;
//import com.bytedance.msdk.api.TTNetworkRequestInfo;
//import com.bytedance.msdk.api.v2.GMAdConstant;
//import com.bytedance.msdk.api.v2.ad.splash.GMSplashAd;
//import com.bytedance.msdk.api.v2.ad.splash.GMSplashAdListener;
//import com.bytedance.msdk.api.v2.ad.splash.GMSplashAdLoadCallback;
//import com.bytedance.msdk.api.v2.slot.GMAdSlotSplash;
import com.weikou.beibeivideo.util.ad.CSJConstant;
import java.util.List;
public class GMAdSplashManager {
//    private static final String TAG = "GMAdSplashManager";
//
//    private GMSplashAd mSplashAd;
//    private Activity mActivity;
//    //开屏广告加载超时时间,建议大于1000,这里为了冷启动第一次加载到广告并且展示,示例设置了2000ms
//    private static final int AD_TIME_OUT = 4000;
//    //强制使用兜底广告
//    private boolean mForceLoadBottom = true;
//    private GMSplashAdLoadCallback mGMSplashAdLoadCallback;
//    private GMSplashAdListener mSplashAdListener;
//
//    public GMAdSplashManager(Activity activity, GMSplashAdLoadCallback splashAdLoadCallback, GMSplashAdListener splashAdListener) {
//        mActivity = activity;
//        mGMSplashAdLoadCallback = splashAdLoadCallback;
//        mSplashAdListener = splashAdListener;
//    }
//
//    public GMSplashAd getSplashAd() {
//        return mSplashAd;
//    }
//
//    /**
//     * 加载开屏广告
//     */
//    public void loadSplashAd(String unitId) {
//        /**
//         * 注:每次加载开屏广告的时候需要新建一个TTSplashAd,否则可能会出现广告填充问题
//         * ( 例如:mTTSplashAd = new TTSplashAd(this, mAdUnitId);)
//         */
//        mSplashAd = new GMSplashAd(mActivity, unitId);
//        mSplashAd.setAdSplashListener(mSplashAdListener);
//
//        //创建开屏广告请求参数AdSlot,具体参数含义参考文档
//        GMAdSlotSplash adSlot = new GMAdSlotSplash.Builder()
//                .setImageAdSize(UIUtils.getScreenWidth(mActivity), UIUtils.getScreenHeight(mActivity)) // 单位px
//                .setTimeOut(AD_TIME_OUT)//设置超时
//                .setSplashButtonType(GMAdConstant.SPLASH_BUTTON_TYPE_FULL_SCREEN)
//                .setDownloadType(GMAdConstant.DOWNLOAD_TYPE_POPUP)
//                .setForceLoadBottom(mForceLoadBottom) //强制加载兜底开屏广告,只能在GroMore提供的demo中使用,其他情况设置无效
//                .setBidNotify(true)//开启bidding比价结果通知,默认值为false
//                .setSplashShakeButton(true) //开屏摇一摇开关,默认开启,目前只有gdt支持
//                .build();
//
//        //自定义兜底方案 选择使用
//        //GMNetworkRequestInfo networkRequestInfo = SplashUtils.getGMNetworkRequestInfo();
//
//        TTNetworkRequestInfo ttNetworkRequestInfo;
//        ttNetworkRequestInfo = new PangleNetworkRequestInfo("5095354", CSJConstant.SPLASH_AD);
//        //请求广告,调用开屏广告异步请求接口,对请求回调的广告作渲染处理
//        mSplashAd.loadAd(adSlot, ttNetworkRequestInfo, mGMSplashAdLoadCallback);
//    }
//
//
//    /**
//     * 打印其他信息
//     */
//    public void printInfo() {
//        if (mSplashAd != null) {
//            /**
//             * 获取已经加载的clientBidding ,多阶底价广告的相关信息
//             */
//            List<GMAdEcpmInfo> gmAdEcpmInfos = mSplashAd.getMultiBiddingEcpm();
//            if (gmAdEcpmInfos != null) {
//                for (GMAdEcpmInfo info : gmAdEcpmInfos) {
//                    Log.e(TAG, "多阶+client相关信息 AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                            + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                            + "  ReqBiddingType:" + info.getReqBiddingType()
//                            + "  PreEcpm:" + info.getPreEcpm()
//                            + "  LevelTag:" + info.getLevelTag()
//                            + "  ErrorMsg:" + info.getErrorMsg()
//                            + "  request_id:" + info.getRequestId()
//                            + "  SdkName:" + info.getAdNetworkPlatformName()
//                            + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//                }
//            }
//
//            /**
//             * 获取实时填充/缓存池中价格最优的代码位信息即相关价格信息,每次只有一个信息
//             */
//            GMAdEcpmInfo gmAdEcpmInfo = mSplashAd.getBestEcpm();
//            if (gmAdEcpmInfo != null) {
//                Log.e(TAG, "***实时填充/缓存池中价格最优的代码位信息*** AdNetworkPlatformId" + gmAdEcpmInfo.getAdNetworkPlatformId()
//                        + "  AdNetworkRitId:" + gmAdEcpmInfo.getAdNetworkRitId()
//                        + "  ReqBiddingType:" + gmAdEcpmInfo.getReqBiddingType()
//                        + "  PreEcpm:" + gmAdEcpmInfo.getPreEcpm()
//                        + "  LevelTag:" + gmAdEcpmInfo.getLevelTag()
//                        + "  ErrorMsg:" + gmAdEcpmInfo.getErrorMsg()
//                        + "  request_id:" + gmAdEcpmInfo.getRequestId()
//                        + "  SdkName:" + gmAdEcpmInfo.getAdNetworkPlatformName()
//                        + "  CustomSdkName:" + gmAdEcpmInfo.getCustomAdNetworkPlatformName());
//            }
//
//            /**
//             * 获取获取当前缓存池的全部信息
//             */
//            List<GMAdEcpmInfo> gmCacheInfos = mSplashAd.getCacheList();
//            if (gmCacheInfos != null) {
//                for (GMAdEcpmInfo info : gmCacheInfos) {
//                    Log.e(TAG, "***缓存池的全部信息*** AdNetworkPlatformId" + info.getAdNetworkPlatformId()
//                            + "  AdNetworkRitId:" + info.getAdNetworkRitId()
//                            + "  ReqBiddingType:" + info.getReqBiddingType()
//                            + "  PreEcpm:" + info.getPreEcpm()
//                            + "  LevelTag:" + info.getLevelTag()
//                            + "  ErrorMsg:" + info.getErrorMsg()
//                            + "  request_id:" + info.getRequestId()
//                            + "  SdkName:" + info.getAdNetworkPlatformName()
//                            + "  CustomSdkName:" + info.getCustomAdNetworkPlatformName());
//                }
//            }
//
//            /**
//             * 获取获展示广告的部信息
//             */
//            GMAdEcpmInfo showGMAdEcpmInfo = mSplashAd.getShowEcpm();
//
//            if (showGMAdEcpmInfo != null) {
//                Logger.e(TAG, "展示的广告信息 :adNetworkPlatformName: " + gmAdEcpmInfo.getAdNetworkPlatformName()
//                        + "   CustomAdNetworkPlatformName: " + gmAdEcpmInfo.getCustomAdNetworkPlatformName()
//                        + "   adNetworkRitId: " + gmAdEcpmInfo.getAdNetworkRitId()
//                        + "   preEcpm: " + gmAdEcpmInfo.getPreEcpm());
//            }
//            // 获取本次waterfall加载中,加载失败的adn错误信息。
//            if (mSplashAd != null)
//                Log.d(TAG, "ad load infos: " + mSplashAd.getAdLoadInfoList());
//        }
//    }
//
//    public void destroy() {
//        if (mSplashAd != null) {
//            mSplashAd.destroy();
//        }
//        mActivity = null;
//        mGMSplashAdLoadCallback = null;
//        mSplashAdListener = null;
//    }
}
BuWanVideo/src/com/weikou/beibeivideo/util/video/DPHolder.java
@@ -125,7 +125,8 @@
    private IDPWidgetFactory getFactory() {
        //一定要初始化后才能调用,否则会发生异常问题
        return DPSdk.factory();
        IDPWidgetFactory   factory=DPSdk.factory();
        return factory;
    }
}
build.gradle
@@ -2,10 +2,6 @@
buildscript {
    repositories {
        maven {
            url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
        }
        maven { url 'http://developer.huawei.com/repo/' }
        //字节跳动SDK
@@ -49,10 +45,6 @@
allprojects {
    repositories {
        maven {
            url "http://repo.baichuan-android.taobao.com/content/groups/BaichuanRepositories/"
        }
        maven { url 'http://developer.huawei.com/repo/' }
library-DownloadProvider/AndroidManifest.xml
@@ -55,7 +55,6 @@
            android:name="com.mozillaonline.providers.downloads.DownloadReceiver"
            android:exported="false" >
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
                <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
            </intent-filter>
        </receiver>
library-GDTSDK/build.gradle
@@ -3,7 +3,8 @@
dependencies {
    api fileTree(include: '*.jar', dir: 'libs')
    api 'androidx.legacy:legacy-support-v4:1.0.0'
    api 'com.qq.e.union:union:4.452.1322'
//    api 'com.qq.e.union:union:4.461.1331'
    api 'com.qq.e.union:union:4.480.1350'
//    implementation 'com.qq.e.union:union:4.410.1290'
//    api files("libs/GDTSDK.unionNormal.4.420.1290.aar")
}