Android 安卓如果应用程序仅支持纵向模式,如何确定屏幕方向?

Android 安卓如果应用程序仅支持纵向模式,如何确定屏幕方向?,android,bitmap,orientation,landscape,portrait,Android,Bitmap,Orientation,Landscape,Portrait,我的Android应用程序只能在纵向模式下工作。横向模式已被禁用 setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT). 但是我有一个带有签名视图(自定义视图)的对话框,用户使用它来绘制他的签名。结果,它给出了一个位图。我还有一个用于保存签名预览的ImageView,它显示上述位图。用户可以在绘制签名时按需握住设备。所以,我的应用程序应该根据当前屏幕位置旋转生成的位图。例如,用户以角度=90度绘制签名,我希望将位图

我的Android应用程序只能在纵向模式下工作。横向模式已被禁用

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT). 
但是我有一个带有签名视图(自定义视图)的对话框,用户使用它来绘制他的签名。结果,它给出了一个位图。我还有一个用于保存签名预览的ImageView,它显示上述位图。用户可以在绘制签名时按需握住设备。所以,我的应用程序应该根据当前屏幕位置旋转生成的位图。例如,用户以角度=90度绘制签名,我希望将位图旋转90度,我的应用程序将以纵向模式正确显示签名位图。问题是只支持纵向模式,以下方法不起作用:

int rotation = getResources().getConfiguration().orientation;

这些语句的结果始终为0


那么,在方向改变被禁用的情况下,如何获取设备的当前位置呢?

您可以将对话框设置为单独的活动,并且不限于纵向方向。

您可以将对话框设置为单独的活动,并使其不限于纵向。

您可以使用硬件传感器获取手机的精确方向,并确定其朝向,因为我知道硬件传感器使用callback onChanged(),并且只有在发生此回调时才能获取值。此外,传感器会给我原始值,如果将其处理为更方便的值(如Surface.ROTATION\u 0、Surface.ROTATION\u 90、Surface.ROTATION\u 180、,Surface.ROTATION_270.您可以使用硬件传感器获取手机的精确方向,并确定手机的朝向,因为我知道硬件传感器使用callback onChanged(),只有在发生回调时,我才能获取值。此外,传感器会给我原始值,如果要以更方便的值(如Surface.ROTATION_0、Surface.ROTATION_90、Surface.ROTATION_180、Surface.ROTATION_270)处理这些值,工作量将非常大。不幸的是,由于这是客户的要求,我无法使其不限于纵向。创建一个新的活动而不是一个对话框对我来说不是一个出路,因为我的签名视图位于一个带有几个片段的自定义寻呼机上,在启动一个新活动后恢复其状态并不是那么容易。不幸的是,我不能使它不局限于纵向,因为这是客户的要求。创建一个新的活动而不是一个对话框对我来说不是一个出路,因为我的签名视图位于一个带有几个片段的自定义寻呼机上,在启动一个新活动后恢复其状态并不是那么容易。
int rotation = getWindowManager().getDefaultDisplay().getOrientation();