2016-12-08 1 views
1

인터페이스를 사용하여 Android 및 iOS 장치 용 카메라 컨트롤에 액세스하는 방법을 보여주는 Visual Studio 용 샘플 Xamarin.Forms을 찾고 있습니다. 휴대용 클래스 라이브러리에서 버튼 클릭 이벤트로 사진을 찍을 수있는 기능을 호출합니다.Xamarin.Forms 카메라 제어 액세스 DependencyService

사진을 찍어 저장하기 전에 작업중인 앱을 사용할 사용자에게 다른 카메라 컨트롤에 대한 액세스를 허용하면서 기기의 특정 카메라 컨트롤 사용을 제한 할 수 있어야합니다.

Camera access with Xamarin.Forms에서 찾은 해결책을 포함하여 여러 가지 해결책을 시도했지만 작동하지 않았습니다.

+0

발견 한 솔루션을 어떻게 시도 했습니까? 프로젝트의 오류 메시지와 일부 키 코드를 표시 할 수 있습니까? –

답변

1

Media plugin for Xamarin은 장치의 기본 제공 카메라 기능에 액세스하는 좋은 예입니다.

귀하의 요구 사항이 약간 다른 것 같습니다. 카메라 페이지의 UI를보다 세부적으로 제어해야합니다. 대신 자신 만의 맞춤 카메라 페이지를 만드는 것이 좋습니다. 이 좋은 예가 here입니다. UI 컨트롤을 만드는 카메라 미리보기 페이지를 구현합니다. 이것은 사용자 정의 렌더러를 사용합니다.

// The control used in shared code 
public class CameraPreview : View 
{ 
    public static readonly BindableProperty CameraProperty = BindableProperty.Create (
    propertyName: "Camera", 
    returnType: typeof(CameraOptions), 
    declaringType: typeof(CameraPreview), 
    defaultValue: CameraOptions.Rear); 

    public CameraOptions Camera { 
    get { return (CameraOptions)GetValue (CameraProperty); } 
    set { SetValue (CameraProperty, value); } 
    } 
} 

// Renderer for iOS, platform specific project 
[assembly: ExportRenderer (typeof(CameraPreview), 
typeof(CameraPreviewRenderer))] 
namespace CustomRenderer.iOS 
{ 
    public class CameraPreviewRenderer : ViewRenderer<CameraPreview, UICameraPreview> 
    { 
     UICameraPreview uiCameraPreview; 

     protected override void OnElementChanged (ElementChangedEventArgs<CameraPreview> e) 
     { 
      base.OnElementChanged (e); 

      if (Control == null) { 
       uiCameraPreview = new UICameraPreview (e.NewElement.Camera); 
       SetNativeControl (uiCameraPreview); 
      } 
      if (e.OldElement != null) { 
       // Unsubscribe 
       uiCameraPreview.Tapped -= OnCameraPreviewTapped; 
      } 
      if (e.NewElement != null) { 
       // Subscribe 
       uiCameraPreview.Tapped += OnCameraPreviewTapped; 
      } 
     } 

     void OnCameraPreviewTapped (object sender, EventArgs e) 
     { 
      if (uiCameraPreview.IsPreviewing) { 
       uiCameraPreview.CaptureSession.StopRunning(); 
       uiCameraPreview.IsPreviewing = false; 
      } else { 
       uiCameraPreview.CaptureSession.StartRunning(); 
       uiCameraPreview.IsPreviewing = true; 
      } 
     } 
     ... 
    } 
} 

은 다른 플랫폼에 대한 위의 링크를 살펴 보자. 사용자 정의 카메라 페이지를 만들고 Moments sample에 이미지를 캡처하는 또 다른 샘플이 있습니다. 각 렌더러에서 이미지 캡처를 처리하는 데 사용되는 버튼을 볼 수 있습니다. 이렇게하면 사용자가 수행 할 수있는 작업과 수행 할 수없는 작업을보다 효과적으로 제어 할 수 있습니다.

카메라에서 제한해야하는 항목에 대한 구체적인 정보를 포함하면이 내용을 더 자세히 편집 할 수 있습니다.

+0

안녕하세요 John! 당신의 답변에 감사드립니다! [전체 카메라 페이지] (https://github.com/ThatCSharpGuy/Forms-FullCameraPage)에서 찾은 사용자 지정 페이지로 이동하기로 결정했습니다. 안드로이드 프로젝트에서 슬라이더 유형 컨트롤을 추가하여 카메라가 확대/축소되고 4 : 3 가로 세로 비율을 설정하고 카메라가 가로 모드에서만 사진을 찍도록하는 데 도움이 필요합니다. –