簡體   English   中英

使用插件媒體捕獲照片將屏幕顯示為彩色矩形

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM