2017-06-06 71 views
-2

我有一個PCL類型的應用程序,我正在使用Xam.Plugin.Media插件。我需要它來確保用戶在可以繼續之前從照相機提交照片。強制性要求使用Xam.Plugin.Media拍攝和存儲用戶照片

要做到這一點,我從一個按鈕點擊事件顯示相機頁面,我想確保如果用戶取消此應用程序再次啓動相機,這將重複,直到照片存儲。

Currenty我的應用落在MainApplication文件的onActivityResumed方法當用戶取消了攝像頭

我的代碼附照片,My code的。

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

傑森固定我的帖子 – fytoahse

回答

-1

除了一個事實,即它通常是一個有點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; 
      }); 
     } 
     else 
     { 
      // Recursion - I believe that this would continue until the file is not null, then it would carry on. 
      TakePicture(); 
     } 

     IsRunning = false; 
    } 

我不能說我經常使用遞歸,但我認爲它可能會在這裏做詭計。

+0

我的應用程序仍然無法在OnActivityResumed ....未處理的異常 公共無效OnActivityResumed(活動性) { CrossCurrentActivity.Current.Activity =活動; } – fytoahse

+0

那跟你的相機方法沒有關係。這與你在'onActivityResumed'方法中做的任何事情有關。您可以請張貼該方法或完整的錯誤(堆棧跟蹤),以便我們能夠更好地幫助您。 – Digitalsa1nt