0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

[OutSystems]モバイルアプリケーションの画面を操作中にスリープさせない

Last updated at Posted at 2022-08-01

個人的なペットプロジェクトで作っているToDoアプリのために、アプリケーションを表示しているうちは画面スリープさせない機能が欲しくなった。
(入力内容を考えている間にロックされないように)
Forgeにあるプラグインで実現できたのでメモ。

以下の情報は2022/8頭頃のもの。

履歴

2022/08/22 OnApplicationReadyでKeepAwakeを追記

環境

Personal Environment(Version 11.16.0 (Build 35766))
Service Studio(Version 11.53.7)
Insomnia Plugin (Version 1.0.0)
Android (機種名 SH-M08 Android バージョン 10)

今回はiOSの開発用ライセンスが切れてしまったのでAndroidのみで確認。

Forgeコンポーネント

評価と選択

この機能を実現するプラグインは、(見つけた範囲では)Forgeに2つ登録されていた。
KeepAwake PluginとInsomnia Plugin。
実体は、

  • 同じCordovaの同じバージョンをラップしている
  • 提供するAction構成が同じ
    • 内部的に呼んでいるCordova PluginのAPIも同じ
  • 使い方も同じ
  • OutSystems 10向けに作られたかなり古いモジュールである点も同じ

とほぼ同じモジュールといってもよい。

  • License Blockを含んでいる
  • User Provider moduleの設定がおかしくない
  • Common Pluginへの参照を含んでいない

という点で、Insomniaの方が良さそうなのでこちらで実装を確認してみる。

KeepAwake Plugin

URL
 https://www.outsystems.com/forge/component-overview/1743/keepawake-plugin
最終更新
 2016/12/23
Version
 1.0.1
オリジナルのプラグイン
 https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin#4.2.0
 MITライセンス
注意点
 Common PluginのError Structureを参照しているため、インストール時にNot compatibleになる。
 User Provider moduleとして(Current eSpace)を指定してあるのは多分間違い。
 最終更新の日付からも明らかなようにOutSystems 10で作られたモジュール。
 License Blockを含まない。

Insomnia Plugin

URL
 https://www.outsystems.com/forge/component-overview/1740/insomnia-plugin
最終更新
 2016/12/22
Version
 1.0.0
オリジナルのプラグイン
 https://github.com/EddyVerbruggen/Insomnia-PhoneGap-Plugin#4.2.0
 KeepAwakeと同じ。
注意点
 最終更新の日付からも明らかなようにOutSystems 10で作られたモジュール。

使い方

参照

Consumerとなるモバイルアプリケーションから、Insomnia Pluginの全要素を参照する。

実装

スリープさせないようにしたいScreenのOnInitializeで以下のように実装する。
image.png

image.png

KeepAwake Actionを読んだ時点から、アプリケーションの操作中はスリープしなくなる。
再びスリープさせたいときは、AllowSleepAgain Actionを呼べば良い。
実験したところ、どうもKeepAwakeは特定の画面のみに聞くわけではなさそう。スリープさせたい画面があるときは、AllowSleepAgainを忘れずに呼ぶ必要がありそう。

License ScreenのPlaceholderにPluginに含まれるLicense Blockを配置する。

(追記)OnApplicationReadyでKeepAwake

書き忘れていたので追記。
アプリケーション全体で、使用中はスリープさせたくない場合は、System EventのOn Application ReadyのタイミングでKeepAwake Actionを実行するのが自然。

On Application Readyのタイミングで動作するActionを作るには、Client Actionsフォルダを右クリック → Add System Event → On Application Readyを選ぶ。

注意

オリジナルのCordova PluginのQuirksの項に

on iOS the app would fall asleep after the Camera has been used, even if you previously called keepAwake. A similar issue on Android where the photo library was accessed during app usage.

というのがあるので注意。
(iOSではカメラを使ったあとで、Androidではフォトライブラリにアクセスした後で、再びSleepするようになる現象がある、という意味)。
こういうイベントが起こったあとは、再びKeepAwakeを呼ぶように気をつける。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?