【Unity】【Android】マルチウィンドウを禁止する 
2020/03/27 Fri [edit]
Android 7.0 以降からは画面を分割してアプリを起動できるマルチウィンドウがサポートされているが、Unity で作っている場合、絶対座標で配置されているものは「分割画面←→フルスクリーン画面」に変更したりすると、レイアウトがおかしくなってしまうことがある。もちろん自動でレイアウトを再計算するように作られていれば問題ないのだが、ゲーム画面などで縦または横の長さ固定で考えられている場合、画面分割で正方形に近くなってしまうので、全てのオブジェクトが中央に寄ってしまう、なんてこともある。そして困ったことに、マルチウィンドウのサポートは Android 7.0 以降、デフォルト状態でオンなのである。
・マルチウィンドウのサポート
なのでいっそのことマルチウィンドウを禁止した方が早い場合も多い(可変レイアウトを考えるのには結構手間がかかる)。まぁ、Android 開発に詳しい人ならググればすぐにわかると思うが、Unity のみで開発している人にとってはわかりずらい部分であり、「なぜかたまにレイアウトが崩れる」なんて困っている人もいるかもと思ったので、とりあえず記事にしておくことにした。
(※) Unity 2019.2.21f1 / Android 8.0 で確認
■AndroidManifest.xml でマルチウィンドウを禁止設定する
マルチウィンドウのサポートを設定する AndroidManifest.xml のタグは application または activity タグである(アプリ全体なら application タグ、アクティビティごとなら activity タグだが、Unity の場合、複数アクティビティを使うことは少ないので、機械的に application タグでも良い)。
Unity の場合、「Assets/Plugins/Android/」フォルダ以下に AndroidManifest.xml が置かれるので、それを適当なテキストエディタで開き、application または activity タグを見つけて、「android:resizeableActivity="false"」(禁止) を入れておく(許可にしたいなら true)。
・application タグ
・activity タグ
・アクティビティ

もし、プラグインなど全く使ってないのなら、デフォルトでは AndroidManifest.xml は用意されていないので、フォルダを含めて自分で作る必要がある。テンプレは Windows の場合「(インストールした Unity のフォルダ)\Editor\Data\PlaybackEngines\AndroidPlayer\src\com\unity3d\player」にあり、Mac の場合「(アプリケーションフォルダ)/Unity.app/Contents/PlaybackEngines/AndroidPlayer/src/com/unity3d/player 」にあるので、コピーして手を加えれば良いだろう。詳細は公式マニュアルを参照して欲しい。
・Android 用のプラグインをビルド
ここでは簡略した例を書いておこう。
●AndroidManifest.xml に resizeableActivity="false" を入れ、マルチウィンドウを禁止する
<?xml version="1.0" encoding="utf-8"?>
<manifest ~(中略)~
<application ~(中略)~ android:resizeableActivity="false">
~(中略)~
</application>
</manifest>
あとは Android ビルドをして、実機で試していると良い。
簡単な手順としては、例えば Google Chrome を起動し、メニューボタンを長押し→画面が分割されるので、空白の方のウィンドウをタップして、マルチウィンドウを禁止したアプリを立ち上げてみる、なんて感じでできるだろう。
上手くいったなら「マルチウィンドウ表示では、このアプリを使用できません」等のトースト(メッセージ)が出る。確認してみよう。


(関連記事)
【Unity】【Android】自動バックアップの対象/除外設定をする
【Unity】Android アプリでパーミッション(権限)要求をする
【Unity】【C#】プロジェクト内で Android(Java)プラグインをビルドする
【Unity】標準以外のセンサー(歩数計や心拍数など)を使う(Android)
【Unity】Androidで音声認識を使う
【Unity】Firebase のプッシュ通知と FantomPlugin の共存(Firebase と他のプラグインの共存方法)
【Unity】Unity2019.3 で Android / iOS ネイティブの構成が変わるらしい
- 関連記事
トラックバック
トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/348-928f4891
この記事にトラックバックする(FC2ブログユーザー)
| h o m e |