あなたが参照している他のアプリは、あなたが期待しているものとは異なる何かをします。これらは、デバイスの加速度計に基づいて画面の回転を可能にします。つまり、ユーザーがデバイスを回転させると、向きが変わります。これらは、アプリケーションに特定の方向を設定しません。横向きモードで自動回転を無効にすると、通常、向きは縦向きに戻ります。
私は以前にこれらの他のアプリケーションと同じことをしました。残念ながら、私が共有する立場にないのはプロプライエタリの商用コードです。
このアプローチには2つの要素があります。
- フォアグラウンドアプリケーションがターゲットアプリであるかどうかを検出する
- 表示方向のシステム全体の設定を変更します
明らかに、逆も行う必要があります。つまり、後で元に戻す必要があります。
SOの他の場所にピース1の例がいくつかあります。私の場合、フォアグラウンドアプリが何であるかを確認するために継続的にポーリングするサービスを作成しました(アプリの変更を通知する関連するシステムイベントがないため)。それは些細なことではありませんが、実行することはできます。
ピース2に関連する設定はですSettings.System.ACCELEROMETER_ROTATION
。すべてのバージョンで通常のアプリの許可があればそれを書くことができると思います。そのためのコードスニペットは以下のとおりです。
Settings.System.putInt(
app.getContentResolver(),
Settings.System.ACCELEROMETER_ROTATION,
orientationEnabled ? 1 : 0
);
システムの画面回転を無視するアプリケーションを作成することも可能であることに注意してください。つまり、設計された方向にロックされたままになります。しかし、それは一般的ではありません。