设备方向
设备方向
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()提供旋转值时,请确保考虑设备的当前旋转和相机的方向。