Sélecteur de médias pour les photos et vidéos
Cet article explique comment utiliser l’interface utilisateur de l’application multiplateforme .NET (.NET MAUI). IMediaPicker Cette interface permet à un utilisateur de choisir ou de prendre une photo ou une vidéo sur l’appareil.
L’implémentation par défaut de l’interface IMediaPicker
est disponible via la MediaPicker.Default propriété. L’interface et MediaPicker
la IMediaPicker
classe sont contenues dans l’espace Microsoft.Maui.Media
de noms.
Démarrage
Pour accéder à la fonctionnalité du sélecteur de médias, la configuration spécifique à la plateforme suivante est requise.
L’autorisation CAMERA
est obligatoire, et doit être configurée dans le projet Android. De plus :
Si votre application cible Android 12 ou inférieur, vous devez demander les autorisations et
WRITE_EXTERNAL_STORAGE
lesREAD_EXTERNAL_STORAGE
autorisations.Si votre application cible Android 13 ou version ultérieure et a besoin d’accéder aux fichiers multimédias que d’autres applications ont créés, vous devez demander une ou plusieurs des autorisations de média granulaires suivantes au lieu de l’autorisation
READ_EXTERNAL_STORAGE
:READ_MEDIA_IMAGES
READ_MEDIA_VIDEO
READ_MEDIA_AUDIO
Ces autorisations peuvent être ajoutées de la manière suivante :
Ajoutez les autorisations basées sur l’assembly :
Ouvrez le fichier Platforms/Android/MainApplication.cs et ajoutez les attributs d’assembly suivants après
using
les directives :// Needed for Picking photo/video [assembly: UsesPermission(Android.Manifest.Permission.ReadExternalStorage, MaxSdkVersion = 32)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaAudio)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaImages)] [assembly: UsesPermission(Android.Manifest.Permission.ReadMediaVideo)] // Needed for Taking photo/video [assembly: UsesPermission(Android.Manifest.Permission.Camera)] [assembly: UsesPermission(Android.Manifest.Permission.WriteExternalStorage, MaxSdkVersion = 32)] // 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)]
- ou -
Mettez à jour le manifeste Android :
Ouvrez le fichier Platforms/Android/AndroidManifest.xml et ajoutez ce qui suit dans le
manifest
nœud :<uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="32" /> <!-- Required only if your app needs to access images or photos that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_IMAGES" /> <!-- Required only if your app needs to access videos that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_VIDEO" /> <!-- Required only if your app needs to access audio files that other apps created --> <uses-permission android:name="android.permission.READ_MEDIA_AUDIO" />
- ou -
Mettez à jour le manifeste Android dans l’éditeur de manifeste :
Dans Visual Studio, double-cliquez sur le fichier Platforms/Android/AndroidManifest.xml pour ouvrir l’éditeur de manifeste Android. Ensuite, sous Autorisations requises case activée les autorisations répertoriées ci-dessus. Cela met automatiquement à jour le fichier AndroidManifest.xml.
Si la version Android cible de votre projet est définie sur Android 11 (API R 30) ou une version ultérieure, vous devez mettre à jour votre manifeste Android avec des requêtes qui utilisent les exigences de visibilité du package Android.
Dans le fichier Platforms/Android/AndroidManifest.xml , ajoutez les nœuds suivants queries/intent
dans le manifest
nœud :
<queries>
<intent>
<action android:name="android.media.action.IMAGE_CAPTURE" />
</intent>
</queries>
Utilisation du sélecteur de supports
L’interface IMediaPicker a les méthodes suivantes qui retournent tous un FileResult, qui peut être utilisé pour obtenir l’emplacement du fichier ou le lire.
PickPhotoAsync
Ouvre le navigateur multimédia pour sélectionner une photo.CapturePhotoAsync
Ouvre l’appareil photo pour prendre une photo.PickVideoAsync
Ouvre le navigateur multimédia pour sélectionner une vidéo.CaptureVideoAsync
Ouvre la caméra pour prendre une vidéo.
Chaque méthode prend éventuellement un MediaPickerOptions type de paramètre qui permet la Title définition sur certains systèmes d’exploitation, qui s’affiche à l’utilisateur.
Important
Toutes les méthodes doivent être appelées sur le thread d’interface utilisateur, car les case activée d’autorisation et les requêtes sont gérées automatiquement par .NET MAUI.
Prendre une photo
Appelez la CapturePhotoAsync méthode pour ouvrir l’appareil photo et laissez l’utilisateur prendre une photo. Si l’utilisateur prend une photo, la valeur de retour de la méthode est une valeur non null. L’exemple de code suivant utilise le sélecteur de supports pour prendre une photo et l’enregistrer dans le répertoire du cache :
public async void TakePhoto()
{
if (MediaPicker.Default.IsCaptureSupported)
{
FileResult photo = await MediaPicker.Default.CapturePhotoAsync();
if (photo != null)
{
// save the file into local storage
string localFilePath = Path.Combine(FileSystem.CacheDirectory, photo.FileName);
using Stream sourceStream = await photo.OpenReadAsync();
using FileStream localFileStream = File.OpenWrite(localFilePath);
await sourceStream.CopyToAsync(localFileStream);
}
}
}
Conseil
La FullPath propriété ne retourne pas toujours le chemin d’accès physique au fichier. Pour obtenir le fichier, utilisez la OpenReadAsync méthode.
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour