2017-01-02 61 views
0

我正在使用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語句中提到的錯誤?

+0

我找不到任何建議regadring如何修復這個錯誤,如一個在Android Studio中:

Xamarin.Android如下這是可以做到。 – Shahzeb

回答

0

問題是您正在將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.CameraInfowas deprecated in API 21。您應該考慮使用SensorOrientation代替Camera2

var info = Android.Hardware.Camera2.CameraCharacteristics.SensorOrientation; 
相關問題