Xamarin.Essentials: Medya seçici
MediaPicker sınıfı, bir kullanıcının cihazda fotoğraf veya video çekmesini sağlar.
başlarken
Bu API 'yi kullanmaya başlamak için, kitaplığın projelerinizde düzgün bir şekilde yüklendiğinden ve ayarlandığından emin olmak için Başlarken Kılavuzunu okuyun.
MediaPicker işlevselliğine erişmek için aşağıdaki platforma özgü kurulum gereklidir.
Aşağıdaki izinler gereklidir ve Android projesinde yapılandırılması gerekir. Bu, aşağıdaki yollarla eklenebilir:
Özellikler klasörünün altında AssemblyInfo. cs dosyasını açın ve aşağıdakileri ekleyin:
// 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)]
VEYA Android bildirimini güncelleştir:
Özellikler klasörünün altında AndroidManifest.xml dosyasını açın ve bildirim düğümünün içine aşağıdakini ekleyin.
<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" />
Ya da Android projesine sağ tıklayıp projenin özelliklerini açın. Android bildirimi altında gerekli izinleri bulun: alanı ve bu izinleri denetleyin. Bu, AndroidManifest.xml dosyasını otomatik olarak güncelleştirir.
Medya seçiciyi kullanma
MediaPickerSınıfı, FileResult dosyaların konumunu almak veya bir olarak okumak için kullanılabilecek tüm döndüren aşağıdaki yöntemlere sahiptir Stream .
PickPhotoAsync: Bir fotoğraf seçmek için medya tarayıcısını açar.CapturePhotoAsync: Fotoğraf çekmek için kamerayı açar.PickVideoAsync: Video seçmek için medya tarayıcısını açar.CaptureVideoAsync: Video almak için kamerayı açar.
Her yöntem isteğe bağlı olarak MediaPickerOptions , Title kullanıcılara görüntülenen bazı işletim sistemlerinde ayarlamaya izin veren bir parametreyi alır.
İpucu
İzin denetimleri ve istekleri tarafından otomatik olarak işlendiği için tüm yöntemler UI iş parçacığında çağrılmalıdır Xamarin.Essentials .
Genel kullanım
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;
}
İpucu
FullPathÖzelliği, her zaman fiziksel yolu dosyaya döndürmez. Dosyayı almak için OpenReadAsync yöntemini kullanın.