我发现在某些设备上,在以横向模式拍照后,该应用程序会出现问题。我的应用程序设计为仅处于垂直(纵向)模式,这在清单和活动定义中都有说明。当我调用 MediaStore.CaptureImage 意图并以横向模式拍摄照片时,然后返回到我的应用程序时,它会崩溃,因为我的应用程序无法以横向模式呈现。
正如我所说,这不会发生在每个安卓设备上,一些设备可以毫无问题地切换回纵向/垂直模式。一般来说,在我看来,这主要发生在 android 11 上,但这可能不是原因。
在活动类定义中:
ScreenOrientation = Android.Content.PM.ScreenOrientation.Portrait
在清单中:
<activity android:name=".MainActivity" android:windowSoftInputMode="adjustPan"
android:screenOrientation="portrait"/>
调用图像捕获的意图:
Intent intent = new Intent(MediaStore.ActionImageCaptureSecure);
FotkaFile = new Java.IO.File(CestaKFotkam, String.Format(NavstevaPriFoceniRepresentativ + "_{0}.jpg", Guid.NewGuid()));
(new Java.IO.File(CestaKFotkam.ToString())).SetWritable(true, false);
intent.PutExtra(MediaStore.ExtraOutput, Android.Net.Uri.FromFile(FotkaFile));
StartActivityForResult(intent, 0);
在我发现该错误仅在以横向模式拍摄照片时发生后,我尝试在从图像捕获返回时以编程方式修复应用程序方向。这没有帮助。
protected override void OnActivityResult(int requestCode, Result resultCode, Intent data)
{
try
{
/*process the photo here*/
}
catch (Exception ex)
{
ShowAlert("Error during image processing:", ex.ToString());
}
RequestedOrientation = Android.Content.PM.ScreenOrientation.Portrait;
}
我感谢任何建议和意见,谢谢。