Android AdMob。当Interstitalad显示时,是否可以保持屏幕明亮?
我在Unity3d上使用Android游戏。虽然我可以在游戏过程中保持屏幕明亮,但在间隙显示期间我无法控制手机行为-屏幕变暗并被锁定 我试图修改interstitual.java类以设置FLAG_KEEP_SCREEN_ON或为activity设置WAKELOCK,但什么也得不到Android AdMob。当Interstitalad显示时,是否可以保持屏幕明亮?,android,unity3d,admob,Android,Unity3d,Admob,我在Unity3d上使用Android游戏。虽然我可以在游戏过程中保持屏幕明亮,但在间隙显示期间我无法控制手机行为-屏幕变暗并被锁定 我试图修改interstitual.java类以设置FLAG_KEEP_SCREEN_ON或为activity设置WAKELOCK,但什么也得不到 interstitial = new InterstitialAd(activity); interstitial.setAdUnitId(adUnitId); interstitial.setAdListener(n
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();
}
});
有人遇到过这个问题吗?尝试将此代码放入AndroidManifest.xml
<uses-permission android:name="android.permission.WAKE_LOCK" />
看来我找到了解决方案 简言之:如果与标志
PowerManager.ON\u一起使用,则唤醒锁定有效。释放后打开\u | PowerManager.ACQUIRE\u会导致唤醒
。没有它们,屏幕将进入睡眠状态
完整代码:
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();
}
});
当然,
应该在AndroidManifest中的某个地方定义
警告:在此代码中,如果应用程序进入后台,则不会释放wakelock,因此,如果用户在显示广告时折叠了应用程序,CPU仍在工作,屏幕将一直亮着,直到应用程序完全关闭或将被打开,间隙广告将被关闭。对不起,但问题远不止是在清单中缺少权限。