強火で進め

このブログではプログラム関連の記事を中心に書いてます。

Android で実行した時に設定している以外の向きに回転してしまう問題の解決方法

原因1:BuildPipeline.BuildPlayer を使ったビルドで発生

BuildPipeline.BuildPlayer でビルドをする時に PlayerSettings の設定を変更しているがその変更が反映されない為に発生します。詳細は以下のページがとても分り易くてオススメです。簡単に説明すると Unity のバグみたいで true に設定する向きを先に、 false に設定する向きを後に記述すると正しく反映されるみたいです。

Landscapeのみのautorotationにしようとしたらportrait設定が活きてしまう問題対応 - Qiita
http://qiita.com/takeswim/items/dff6a6be5afa258ac474

原因2:AndroidManifest.xml を自前で準備した場合に発生

別のパターンとしては AndroidManifest.xml を自前で準備した場合に発生します。
※自分が追加していなくてもなんらかのライブラリ系のアセットを追加された時に自動生成される場合も有るので注意。プロジェクト内で AndroidManifest.xml を検索してみる事をオススメします。

対処方法としては AndroidManifest.xml の activity タグに android:screenOrientation を追加します。
例えば、横向き限定にしたい場合には sensorLandscape を、縦向きの場合には sensorPortrait を指定します。

【記述例】

        <activity
            android:name=".MainActivity"
            android:label="@string/app_name"
            android:theme="@style/AppTheme.NoActionBar"
            android:screenOrientation="sensorLandscape" >
            <intent-filter>

設定可能な向きは公式サイトのこちらのページに記載が有ります。

こちらのサイトでは日本語で解説されています。

screen orientationの設定値とその効果一覧 - 日々精進
http://anton0825.hatenablog.com/entry/2015/05/12/000000