[英]Capture photo using plug in media shows screen as colored retcangles
我正在嘗試使用媒體插件通過相機拍攝照片。 我已經寫了下面的代碼。 但是捕獲的圖像顯示彩色矩形作為附加圖像。 我幾乎嘗試了一切。 但它始終顯示與附圖所示相同的內容。
用於拍攝照片的按鈕是
if (brepeat == false)
{
await CrossMedia.Current.Initialize();
if (!CrossMedia.Current.IsTakePhotoSupported && !CrossMedia.Current.IsPickPhotoSupported)
{
await DisplayAlert("Error", "Photo Capture and pick not supported", "OK");
return;
}
var varFilePhoto = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions()
{
Name = "Img" + DateTime.Now.ToString() + ".jpg"
}); ;
if (varFilePhoto == null)
return;
imgCapture.Source = ImageSource.FromStream(() => {
return varFilePhoto.GetStream();
});
}
brepeat = true;
MainActivity.cs 是
protected override async void OnCreate(Bundle savedInstanceState)
{
TabLayoutResource = Resource.Layout.Tabbar;
ToolbarResource = Resource.Layout.Toolbar;
base.OnCreate(savedInstanceState);
await CrossMedia.Current.Initialize();
int requestPermissions = 1;
string cameraPermission = Android.Manifest.Permission.Camera;
if (!(ContextCompat.CheckSelfPermission(this, cameraPermission) == (int)Permission.Granted))
{
ActivityCompat.RequestPermissions(this, new String[] { cameraPermission, }, requestPermissions);
}
CrossCurrentActivity.Current.Init(this, savedInstanceState);
Xamarin.Essentials.Platform.Init(this, savedInstanceState);
global::Xamarin.Forms.Forms.Init(this, savedInstanceState);
LoadApplication(new App());
}
public override void OnRequestPermissionsResult(int requestCode, string[] permissions, [GeneratedEnum] Android.Content.PM.Permission[] grantResults)
{
PermissionsImplementation.Current.OnRequestPermissionsResult(requestCode, permissions, grantResults);
Xamarin.Essentials.Platform.OnRequestPermissionsResult(requestCode, permissions, grantResults);
base.OnRequestPermissionsResult(requestCode, permissions, grantResults);
}
Android 清單是
<?xml version="1.0" encoding="utf-8"?>
<meta-data android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths"></meta-data>
</provider>
</application>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_INPUT_STATE" />
如果您可以在附加圖像時獲得彩色矩形,則您的代碼運行正常。
您在 Android 仿真器中測試您的代碼。 因為模擬器沒有物理相機,Android 模擬器提供了這個彩色矩形來模擬你打開物理相機時得到的東西。
如果您在物理 android 設備中運行您的代碼,您可以獲得物理相機所獲得的視圖。
但是有什么方法可以測試它,我可以在哪里看到我正在拍攝的照片?
如果您想看拍照,請在您的拍照代碼中添加SaveToAlbum = true,
如下代碼。(注意:如果您想獲得我的相機模擬視圖,請首先更新Android SDK中的Android模擬器和工具和使用Android 9.0或以上模擬器)
var file = await CrossMedia.Current.TakePhotoAsync(new Plugin.Media.Abstractions.StoreCameraMediaOptions
{
Name = "Img" + DateTime.Now.ToString() + ".jpg",
//Sets the properties of the photo file
SaveToAlbum = true,
});
這里正在運行 GIF。 我拍了張照片,然后在臨時文件夾中找到它(單擊文件應用程序,select Image
,選擇temp
文件夾)。
例如。 試圖掃描一些東西
如果要掃描二維碼、條碼等,請使用Android設備進行測試。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.