gpt4 book ai didi

android - AdMob。是否可以在 InterstitialAd 显示时保持屏幕明亮?

转载 作者:行者123 更新时间:2023-11-29 00:08:52 25 4
gpt4 key购买 nike

我正在使用 AdMob plugin适用于 Unity3d 上的 Android 游戏。虽然我可以在游戏 session 期间保持屏幕明亮,但在 InterstitialAd 显示期间我无法控制手机行为 - 屏幕变暗并被锁定。

我尝试修改 Interstitial.java 类以设置 FLAG_KEEP_SCREEN_ON 或为 Activity 设置 WAKELOCK 但什么也没得到。

interstitial = new InterstitialAd(activity);
interstitial.setAdUnitId(adUnitId);
interstitial.setAdListener(new AdListener() {
...

@Override
public void onAdOpened() {
// this not worked!
PowerManager powerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
PowerManager.WakeLock wakeLock = powerManager.newWakeLock(PowerManager.SCREEN_BRIGHT_WAKE_LOCK, "My Tag");
wakeLock.acquire();

// this not worked too
activity.getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

adListener.onAdOpened();
}
});

有人遇到过这个问题吗?

最佳答案

看来我找到了解决方案。

简而言之:如果与标志 PowerManager.ON_AFTER_RELEASE | PowerManager.ACQUIRE_CAUSES_WAKEUP 一起使用,WAKE_LOCK 会起作用.没有它们,屏幕将进入休眠状态。

完整代码:

    PowerManager powerManager = (PowerManager) activity.getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(
PowerManager.SCREEN_BRIGHT_WAKE_LOCK | PowerManager.ON_AFTER_RELEASE | PowerManager.ACQUIRE_CAUSES_WAKEUP,
"com.google.unity.ads.Interstitial"
);

InterstitialAd interstitial = new InterstitialAd(activity);
interstitial.setAdUnitId(adUnitId);
interstitial.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
isLoaded = true;
adListener.onAdLoaded();
}

@Override
public void onAdFailedToLoad(int errorCode) {
adListener.onAdFailedToLoad(PluginUtils.getErrorReason(errorCode));
}

@Override
public void onAdOpened() {
wakeLock.acquire();
adListener.onAdOpened();
}

@Override
public void onAdClosed() {
adListener.onAdClosed();
wakeLock.release();
}

@Override
public void onAdLeftApplication() {
adListener.onAdLeftApplication();
}
});

当然,<uses-permission android:name="android.permission.WAKE_LOCK" />应该在 AndroidManifest 的某处定义。

警告:在此代码中,如果应用程序进入后台,则不会释放唤醒锁,因此如果用户在广告显示时折叠应用程序,CPU 仍在工作并且屏幕将一直亮着,直到应用程序启动完全关闭或将打开,插页式广告将关闭。

关于android - AdMob。是否可以在 InterstitialAd 显示时保持屏幕明亮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31722501/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com