【UE4】スマートフォン(iOS,Android)のスリープ機能を無効にする
はじめに
スマートフォン向けに開発していると少し重めのDLCをDLさせる必要があったり、長めのムービーを見せたいことがよくあと思います
その場合、スリープされてしまうとDLが中断したりムービーが途中で終わってしまったりして意図しない結果になってしまいますよね
なのでスリープ機能をOFFにしてしまえば解決するのですがUE4だとどうやればいいのかまとまっている記事が見当たらなかったので備忘録として残りしておきます
環境
Windows10
UE4.21.2
実装
- 〇〇.Build.csのPublicDependencyModuleNamesに「ApplicationCore」モジュールを追加
- 任意のcppファイルで「HAL/PlatformApplicationMisc.h」をinclude
- #ifdefでiOSとAndroidで処理を分ける
- プラットフォーム別のControlScreensaver関数でONとOFFを切り替える
例
MyActor.cpp
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyActor.h"
#if PLATFORM_ANDROID || PLATFORM_IOS
#include "HAL/PlatformApplicationMisc.h"
#endif
void AMyActor::SetEnableScreensaver(bool enabled)
{
#if PLATFORM_ANDROID
FAndroidApplicationMisc::ControlScreensaver(
enabled ? FAndroidApplicationMisc::EScreenSaverAction::Enable : FAndroidApplicationMisc::EScreenSaverAction::Disable);
#elif PLATFORM_IOS
FIOSPlatformApplicationMisc::ControlScreensaver(
enabled ? FIOSPlatformApplicationMisc::EScreenSaverAction::Enable : FIOSPlatformApplicationMisc::EScreenSaverAction::Disable);
#endif
}
備考っぽいもの
// Fill out your copyright notice in the Description page of Project Settings.
#include "MyActor.h"
#if PLATFORM_ANDROID || PLATFORM_IOS
#include "HAL/PlatformApplicationMisc.h"
#endif
void AMyActor::SetEnableScreensaver(bool enabled)
{
#if PLATFORM_ANDROID
FAndroidApplicationMisc::ControlScreensaver(
enabled ? FAndroidApplicationMisc::EScreenSaverAction::Enable : FAndroidApplicationMisc::EScreenSaverAction::Disable);
#elif PLATFORM_IOS
FIOSPlatformApplicationMisc::ControlScreensaver(
enabled ? FIOSPlatformApplicationMisc::EScreenSaverAction::Enable : FIOSPlatformApplicationMisc::EScreenSaverAction::Disable);
#endif
}
備考っぽいもの
今回Includeしている「HAL/PlatformApplicationMisc.h」では単純に必要なヘッダーファイルをプラットフォーム別に読み込めるようにifdefで区切っている
なので、どのプラットフォームだろうがこのヘッダーを読み込んでおけばOK
また、ControlScreensaver関数も共通のクラスから呼び出せば大丈夫になっているかと思いきやVerの問題なのかコンパイルではじかれたので素直にプラットフォーム別に処理をわけたほうが間違いないかなと思いました
あとiOSだけっぽいのですが、無効にする処理をBeginPlayで行っても正常動作しなかったのでTickなどで1秒以上delayさせてから実行するようにすると正常動作しました
Author And Source
この問題について(【UE4】スマートフォン(iOS,Android)のスリープ機能を無効にする), 我々は、より多くの情報をここで見つけました https://qiita.com/JGS_Developer/items/164239d238ac1728f613著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .