将类型SurfaceOrientation转换为int时出错Xamarin Android Visual Studio
问题描述:
我正在使用windows平台上的visual studio制作xamarin中的视频应用程序。 我已经构建应用程序,但视频预览旋转90度逆时针和难以设置方向显示顺时针旋转90度,然后录制视频。我的代码是:将类型SurfaceOrientation转换为int时出错Xamarin Android Visual Studio
namespace XamarinVideoApp
{
[Activity(Label = "XamarinVideoApp", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Activity
{
MediaRecorder recorder;
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.Main);
...
}
protected override void OnDestroy()
{
base.OnDestroy();
if(recorder != null)
{
...
}
}
public static void setCameraDisplayOrientation(Activity activity, int cameraId, Android.Hardware.Camera camera)
{
Android.Hardware.Camera.CameraInfo info = new Android.Hardware.Camera.CameraInfo();
Android.Hardware.Camera.GetCameraInfo(cameraId, info);
int rotation = (int) activity.WindowManager.DefaultDisplay.Rotation;
int degrees = 0;
switch(rotation)
{
case SurfaceOrientation.Rotation0: /* Shows Error here: Cannot implicitly convert type 'Android.Views.SurfaceOrientation' to 'int'. An explicit conversion exists (are you missing a cast?) */
degrees = 0;
}
}
}
}
我该怎么做才能消除上述switch语句中提到的错误?
答
问题是您正在将activity.WindowManager.DefaultDisplay.Rotation
投射到int
。根本就不是在下面:
Android.Hardware.Camera.CameraInfo info = new
Android.Hardware.Camera.CameraInfo();
Android.Hardware.Camera.GetCameraInfo(0, info);
var rotation = activity.WindowManager.DefaultDisplay.Rotation;
int degrees = 0;
switch (rotation)
{
case SurfaceOrientation.Rotation0:
degrees = 0;
break;
}
还记得break
你的switch
的。
此外,请注意Camera.CameraInfo
was deprecated in API 21。您应该考虑使用SensorOrientation
代替Camera2
。
var info = Android.Hardware.Camera2.CameraCharacteristics.SensorOrientation;
我找不到任何建议regadring如何修复这个错误,如一个在Android Studio中:
在
Xamarin.Android
如下这是可以做到。 – Shahzeb