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.