开发者控制台

设备方向


设备方向

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(),以正确确定相机预览的方向。应用需要传递一个旋转值,该值说明平板电脑的当前旋转和相机的方向。
  • 从OrientationListener调用Camera.Parameters.setRotation(),以确保JPEG PictureCallback接收到正确旋转的图像。你需要调用Camera.Parameters.setRotation(),因为Camera.setDisplayOrientation只影响预览,不更改提供给JPEG PictureCallback事件的数据。向Camera.Parameters.setRotation()提供旋转值时,请确保考虑设备的当前旋转和相机的方向。