2017-06-06 71 views
-2

PCLタイプのアプリがあり、私はXam.Plugin.Mediaプラグインを使用しています。ユーザーがカメラから写真を提出してから、続行できるようにする必要があります。Xam.Plugin.Mediaを使用してユーザーの写真を撮影し保管する必要があります

これを行うには、ボタンクリックイベントからカメラページを表示します。この場合、ユーザーがアプリがカメラを再起動することをキャンセルする場合は、写真が保存されるまで繰り返します。ユーザーはカメラの外に私のコードの

添付写真、My codeをキャンセルしたときに

Currenty私のアプリは、MainApplicationファイルのonActivityResumed方法に落ちます。

別にそれは、今日何にユーザーを強制的に通常UXの問題のビットで、質問はまだいくつかのメリットを持っているという事実から
private async void TakePicture() 
     { 
      await CrossMedia.Current.Initialize(); 

      if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) 
      { 
       await App.Current.MainPage.DisplayAlert("No Camera", ":(No camera available.", "Aceptar"); 
      } 



      file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions 
      { 
       Directory = "Sample", 
       Name = "test.jpg", 
       PhotoSize = PhotoSize.Small, 
      }); 

      //IsRunning = true; 


      if (file != null) 
      { 
       ImageSource = ImageSource.FromStream(() => 
       { 
        var stream = file.GetStream(); 
        return stream; 
       }); 
      } 

      IsRunning = false; 
     } 
+1

コードを画像として掲載しないでください。コードを貼り付けてテキストとして書式設定する時間を取ってください。 – Jason

+0

ジェイソンは私のアプリはまだOnActivityResumed OnActivityResumed ....未処理の例外 ます。public void(アクティビティアクティビティ) { CrossCurrentActivity.Current.Activity =活動に失敗し – fytoahse

答えて

-1

これは私が考えているアプローチであり、再帰を伴います。

private async void TakePicture() 
    { 
     await CrossMedia.Current.Initialize(); 

     if (!CrossMedia.Current.IsCameraAvailable || !CrossMedia.Current.IsTakePhotoSupported) 
     { 
      await App.Current.MainPage.DisplayAlert("No Camera", ":(No camera available.", "Aceptar"); 
     } 

     file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions 
     { 
      Directory = "Sample", 
      Name = "test.jpg", 
      PhotoSize = PhotoSize.Small, 
     }); 

     //IsRunning = true; 

     if (file != null) 
     { 
      ImageSource = ImageSource.FromStream(() => 
      { 
       var stream = file.GetStream(); 
       return stream; 
      }); 
     } 
     else 
     { 
      // Recursion - I believe that this would continue until the file is not null, then it would carry on. 
      TakePicture(); 
     } 

     IsRunning = false; 
    } 

頻繁に再帰を使用するとは言えませんが、ここではそのトリックを行う可能性があります。

+0

私のポストを固定しています。 } – fytoahse

+0

これはあなたのカメラの方法とは関係ありません。これは、あなたのonActivityResumedメソッドで何をしているかに関係しています。その方法や完全なエラー(スタックトレース)を投稿していただき、より良いお手伝いをさせてください。 – Digitalsa1nt

関連する問題