2016-12-08 4 views
1

DependencyServiceインターフェイスを使用して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!あなたの返信ありがとう!私は[Full Camera Page](https://github.com/ThatCSharpGuy/Forms-FullCameraPage)で見つけたカスタムページに行くことにしました。私はまだアンドロイドプロジェクトで、ズームするアスペクト比を4:3に設定し、カメラを風景モードでのみ撮影するように、スライダタイプのコントロールを追加する必要があります。 –