package com.runt.open.mvvm.ui.splash; import android.content.Context; import android.os.Handler; import android.util.Log; import androidx.lifecycle.MutableLiveData; import com.bytedance.sdk.openadsdk.AdSlot; import com.bytedance.sdk.openadsdk.TTAdNative; import com.bytedance.sdk.openadsdk.TTAdSdk; import com.bytedance.sdk.openadsdk.TTSplashAd; import com.runt.open.mvvm.base.model.BaseViewModel; import java.util.Date; /** * Created by Administrator on 2021/11/15 0015. */ public class SplashViewModel extends BaseViewModel { final String TAG = "SplashViewModel"; long cTime = new Date().getTime(),limitTime = 2000; private MutableLiveData splashAd = new MutableLiveData<>(); private MutableLiveData timeOut = new MutableLiveData<>(); public MutableLiveData getSplashAd() { return splashAd; } public MutableLiveData getTimeOut() { return timeOut; } public void countdown(){ new Handler().postDelayed(new Runnable() { @Override public void run() { timeOut.setValue(0); } },limitTime); } /** * 请求广告 * @param context */ public void applyTdAd(Context context){ countdown(); TTAdNative mTTAdNative = TTAdSdk.getAdManager().createAdNative(context); AdSlot adSlot = new AdSlot.Builder() .setCodeId("887382769")//广告id .setSupportDeepLink(true) .setImageAcceptedSize(1080,1920) //模板广告需要设置期望个性化模板广告的大小,单位dp,代码位是否属于个性化模板广告,请在穿山甲平台查看 //.setExpressViewAcceptedSize(expressViewWidth, expressViewHeight) .build(); mTTAdNative.loadSplashAd(adSlot,new TTAdNative.SplashAdListener() { @Override public void onError(int i, String s) { Log.i(TAG,"code:"+i+" message:"+s); } @Override public void onTimeout() { Log.i(TAG,"超时"); } @Override public void onSplashAdLoad(TTSplashAd ttSplashAd) { Log.d(TAG, "开屏广告请求成功"); long waitTime = limitTime - (new Date().getTime() - cTime); if(waitTime > 0){//是否超过限定时间 没有超时则继续 new Handler().postDelayed(new Runnable() { @Override public void run() { splashAd.setValue(ttSplashAd); } }, waitTime > 0 ? waitTime : 0); } } }); } }