デバイスの向きの設定


デバイスの向きの設定

Fireタブレットではディスプレイを回転できます。優れたユーザーエクスペリエンスを実現するには、アプリがデバイスの向きの変化に対応する必要があります。

横向きと縦向き

次の表に、Fireタブレットの向き設定コードを示します。

タブレット 横向き 縦向き 横向き(逆さ) 縦向き(逆さ)
すべてのタブレット(2015年以降) ROTATION_90 ROTATION_0 ROTATION_270 ROTATION_180
Fire HDX 8.9(2014年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Fire HD 7(2014年) ROTATION_90 ROTATION_0 ROTATION_270 ROTATION_180
Fire HD 6(2014年) ROTATION_90 ROTATION_0 ROTATION_270 ROTATION_180
Kindle Fire HDX 8.9"(2013年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Kindle Fire HDX 7"(2013年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Kindle Fire HD 7"(2013年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Kindle Fire HD 8.9"(2012年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Kindle Fire HD 7"(2012年) ROTATION_270 ROTATION_0 ROTATION_90 ROTATION_180
Kindle Fire(2012年) ROTATION_90 ROTATION_0 ROTATION_270 ROTATION_180
Kindle Fire(2011年) ROTATION_90 ROTATION_0 ROTATION_270 ROTATION_180

センサーベースの向き

横向きモードでのみ実行されるFireタブレット用のアプリを作成する際には、AndroidManifest.xmlでセンサーベースの向きを横に指定してください。センサーベースの向きでは、タブレットの物理的な向きに基づいて横向きか逆さ横向きかが決まります。センサーベースの向きの属性は、Android APIレベル9以降で対応しています。

センサーベースの向きを横にするには、次のコードをAndroidManifest.xmlファイルに含めます。

<activity
    ...
    android:screenOrientation="sensorLandscape"
    android:configChanges="orientation|screenSize">
  ...
</activity>

または、コードで次の定数を使用します。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);

加速度計

たとえば、ゲームなどのアプリを起動中にFireタブレットを横向きにすると、加速度計の未処理の測定値を使用するときに、Display.getRotation()を使用してディスプレイの向きを確認します。Fireタブレットの参照方向は縦向きモードであり、加速度計の測定値は縦向きをベースとし、固定座標系に対して相対的になります。

現在のディスプレイの向きに適合するように、センサーデータを変換する必要があります。この方法により、アプリのロジックが横向きモードで期待どおりの入力を得ることができます。たとえば、ゲームでディスプレイの向きがチェックされないと、ゲームのロジックによりユーザーが意図した方向とは逆の方向にキャラクターが動く場合があります。

カメラの向き

Fireタブレットデバイスの多くは前面にカメラが付いています。ただし、以下を除きます。

  • Kindle Fire HD 7(2013年)
  • Kindle Fire(2012年)
  • Kindle Fire(2011年)

カメラの詳細については、Fireタブレットのデバイス仕様(全一覧)を参照してください。カメラを使用するアプリを作成する際には、前面カメラの位置を考慮し、カメラのプレビューとキャプチャした画像が正しい向きになるようにしてください。カメラアプリで画像を正しく表示して保存するには、次のようにします。

  • カメラのプレビューの正しい向きで表示するために、カメラを初期化する前にCamera.setDisplayOrientation()を呼び出す。アプリはタブレットの現在の向きとカメラの向きに合わせて、回転値を渡す必要があります。
  • JPEG PictureCallbackが正しく回転された画像を受け取るように、OrientationListenerからCamera.Parameters.setRotation()を呼び出す。Camera.setDisplayOrientationはプレビューにのみ影響し、JPEG PictureCallbackイベントに提供されたデータは変更しないため、Camera.Parameters.setRotation()を呼び出す必要があります。Camera.Parameters.setRotation()に回転値を指定する際には、デバイスの現在の向きとカメラの向きを考慮してください。