LoginSignup
11
7

More than 5 years have passed since last update.

Android、iOSで画面を固定する

Posted at

こんにちは。最近個人的にアプリ開発をしている時に気になったことについてまとめたいと思います。

はじめに

スマートフォンでアプリを使用している時に、誤作動で他のアプリを起動したり、他アプリの通知が鬱陶しいと感じたことは、皆さん1度は経験したことがあるかと思います。
(私も某ひっぱりアクションゲームをやってる時に通知のせいでミスした時イライラを経験しております)
他には小さいお子さんがいる家庭では、子供にスマートフォンを貸した際に、見られたくないところへ遷移されてしまった、などという経験があるかと思います。

そんな時に使える便利な機能が、Android、iOSには存在します。
Androidは、
アプリのピン留め
iOSは、
アクセスガイドという名前の機能です。
本記事では、それらの呼び出し方について簡単にお話します。

アプリのピン留め

アプリのピン留めはAndroid5.0から実装された機能です。
その名の通り、表示されているアプリを画面に固定してしまう機能です。(他アプリの通知も来なくなります)
startLockTask.PNG

アプリのピン留めを行うには2つ方法があります。
1. 手動で設定する
2. プログラム上でStartLockTask()を呼び出す

1.について
端末上で、設定→セキュリティ→画面のピン留めという項目をonにした上で端末下部の□ボタンを押すと、
アプリの下にピンのマークが表示されますので、そちらを押すとピン留めが始まります。
pinned.PNG
解除したい時には、端末下部の◁ボタンと□ボタンを同時に押すことで、解除することができます
(解除後ロック画面へ遷移します)

2.について
アプリのピン留めを開始するには
android.app.ActivityのStartLockTask()をオーバーライドします。
https://developer.android.com/reference/android/app/Activity.html#startLockTask()

@Override
public void startLockTask() {
    super.startLockTask();
}

上記を呼び出しますと強制的に起動しているアプリで画面を固定することができます。

ピン留めを解除したい時には、StopLockTask()を呼び出すことで解除が可能です。
https://developer.android.com/reference/android/app/Activity.html#stopLockTask()

@Override
public void  stopLockTask() {
    super.stopLockTask();
}

Android5.0以上であれば上記の対応で問題なく機能しますが、Android5未満の対応を考えると、
Build.VERSION.SDK_INTなどで、OSのバージョン取得が必要になってきますね。

アクセスガイド

iOSでの画面固定機能はアクセスガイドという名前で設定されています。
機能としては、アプリのピン留めと大体同じ機能です。(こちらも通知は来なくなります)

アクセスガイドの設定方法
1. はじめから手動で設定する
2. OpenURLなどで設定アプリを呼び出す(遷移まではできるけど設定操作は手動)
※アクセスガイドについては、プログラム上で強制する方法がわかりませんでした・・・
(ご存知の方がいらしたらご教授ください)

1.について
設定アプリを起動後、一般→アクセシビリティ→アクセスガイドの順で設定をonにします
IMG_0013.jpg

その後、固定したいアプリを開きながら、ホームボタンを3回押下します。
諸々の設定事項を設定し、開始を押すとアクセスガイドが起動します。
https://support.apple.com/ja-jp/HT202612

解除する際には、ホームボタンを3回押下すると解除できます。

2.について
iOSは標準アプリにカスタムスキームが設定されており、それを呼び出すことで、
他のアプリから設定アプリ等へ遷移することができます
それを利用して設定アプリのアクセシビリティの項まで遷移することができます。
アクセシビリティのスキーマは、
Prefs:root=General&path=ACCESSIBLITY

で設定されておりますので、以下のような感じで呼び出すことができます

if let url = URL(string: "Prefs:root=General&path=ACCESSIBLITY") {
      UIApplication.shared.openURL(url)
}

まとめ

今回はAndroid、iOSで画面固定の方法をお話しました。
Androidではアプリ起動と同時に画面固定を設定することができますが、
かなり強制力の強い設定のため、ストアに公開するようなアプリに組み込むのは、
中々難しいかもしれません。
しかし、手段としてこのような機能も存在することを覚えていると
何か新しい発想へ繋がるかもしれません。

ご指摘等ありましたら、お気軽にご連絡下さい、
それでは。

11
7
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
11
7