Xamarin.Essentials: Výběr média

Třída MediaPicker umožňuje uživateli vybrat nebo pořídit fotografii nebo video v zařízení.

Začínáme

Pokud chcete začít používat toto rozhraní API, přečtěte si příručku Začínáme pro, abyste měli jistotu, že je knihovna správně nainstalovaná a nastavená ve vašich projektech.

Pro přístup k funkci MediaPicker je nutné použít následující nastavení pro konkrétní platformu.

Následující oprávnění jsou povinná a musí být nakonfigurovaná v projektu pro Android. Dá se přidat následujícími způsoby:

Ve složce Properties (vlastnosti ) otevřete soubor AssemblyInfo. cs a přidejte:

// Needed for Picking photo/video
[assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage)]

// Needed for Taking photo/video
[assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage)]
[assembly: UsesPermission(Android.Manifest.Permission.Camera)]

// Add these properties if you would like to filter out devices that do not have cameras, or set to false to make them optional
[assembly: UsesFeature("android.hardware.camera", Required = true)]
[assembly: UsesFeature("android.hardware.camera.autofocus", Required = true)]

NEBO aktualizovat manifest Android:

Ve složce Properties (vlastnosti ) otevřete soubor AndroidManifest.xml a přidejte následující dovnitř uzlu manifestu .

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />

Nebo klikněte pravým tlačítkem na projekt pro Android a otevřete vlastnosti projektu. V části manifest pro Android Najděte požadovaná oprávnění: oblast a zaškrtněte příslušná oprávnění. Tím se automaticky aktualizuje soubor AndroidManifest.xml .

Použití výběru médií

MediaPickerTřída má následující metody, které vrátí všechny FileResult , které lze použít k získání umístění souborů nebo jejich čtení jako Stream .

  • PickPhotoAsync: Otevře prohlížeč multimédií a vybere fotografii.
  • CapturePhotoAsync: Otevře kameru, která bude pořizovat fotografii.
  • PickVideoAsync: Otevře prohlížeč multimédií a vybere video.
  • CaptureVideoAsync: Otevře kameru, aby se převzalo video.

Každá metoda volitelně přebírá MediaPickerOptions parametr, který umožňuje Title nastavení pro některé operační systémy, které se uživatelům zobrazí.

Tip

Všechny metody musí být volány ve vlákně uživatelského rozhraní, protože kontroly oprávnění a požadavky jsou automaticky zpracovány nástrojem Xamarin.Essentials .

Obecné použití

async Task TakePhotoAsync()
{
    try
    {
        var photo = await MediaPicker.CapturePhotoAsync();
        await LoadPhotoAsync(photo);
        Console.WriteLine($"CapturePhotoAsync COMPLETED: {PhotoPath}");
    }
    catch (FeatureNotSupportedException fnsEx)
    {
        // Feature is not supported on the device
    }
    catch (PermissionException pEx)
    {
        // Permissions not granted
    }
    catch (Exception ex)
    {
        Console.WriteLine($"CapturePhotoAsync THREW: {ex.Message}");
    }
}

async Task LoadPhotoAsync(FileResult photo)
{
    // canceled
    if (photo == null)
    {
        PhotoPath = null;
        return;
    }
    // save the file into local storage
    var newFile = Path.Combine(FileSystem.CacheDirectory, photo.FileName);
    using (var stream = await photo.OpenReadAsync())
    using (var newStream = File.OpenWrite(newFile))
        await stream.CopyToAsync(newStream);

    PhotoPath = newFile;
}

Tip

FullPathVlastnost vždy nevrátí fyzickou cestu k souboru. K získání souboru použijte OpenReadAsync metodu.

rozhraní API