Qu'il s'agisse d'une image amusante, d'une vidéo informative ou d'un clip audio captivant, Le fait de permettre aux utilisateurs de partager du contenu enrichit leur expérience et favorise et l'engagement. Ce document explore les principes essentiels du partage de contenus multimédias sur Android, y compris les API et les techniques dont vous avez besoin pour intégrer cette fonctionnalité.
Conçu pour le partage
La conception d'Android favorise l'interopérabilité entre les applications à l'aide d'un système basé sur les intents. Un intent est une description abstraite d'une opération à effectuer. Les intents permettent aux applications de communiquer entre elles sans avoir à se connaître leurs spécificités les uns pour les autres.
Lorsqu'une application souhaite partager des données ou initier une action, elle crée un intent qui spécifie le type de contenu et d'opération. Le système Android présente une liste d'applications pertinentes capables de gérer cet intent, permettant à l'utilisateur de choisir l'application à utiliser. Cette approche favorise un écosystème collaboratif.
Le partage de texte ne nécessite que quelques lignes de code:
val sendIntent: Intent = Intent().apply {
action = Intent.ACTION_SEND
putExtra(Intent.EXTRA_TEXT, "This is my text to share.")
type = "text/plain"
}
val shareIntent = Intent.createChooser(sendIntent, null)
startActivity(shareIntent)
La ligne createChooser affiche l'interface utilisateur Android Sharesheet, qui
permet aux utilisateurs de partager des informations, y compris des suggestions d'applications pertinentes,
en un seul geste. Vous pouvez également effectuer les opérations suivantes avec Sharesheet sur Android :
- Déterminer quand vos utilisateurs effectuent un partage et vers qui
- Fournir des aperçus de contenu enrichi à partir d'Android 10 (niveau d'API 29)
Pour en savoir plus sur Android, consultez Envoyer des données simples à d'autres applications. Sharesheet et comment les utiliser.
Fournissez des cibles de partage direct pour permettre aux utilisateurs de d'autres applications pour partager des URL, des images ou d'autres types de données avec votre application. Accès directs Partager fonctionne en présentant directement vos contacts depuis des applications de messagerie et de réseaux sociaux sur Android Sharesheet, sans que les utilisateurs n'aient à sélectionner l'application et recherchez le contact.
Prise en charge de la réception de contenu enrichi via un OnReceiveContentListener. Cette API fournit un emplacement unique pour que votre code gère la réception de tous les contenus, du texte brut et stylisé au balisage, aux images, aux vidéos, aux fichiers audio, etc. Il peut s'agir d'images
claviers, glisser-déposer ou le presse-papiers.
Partager des fichiers multimédias
Les intents ne peuvent contenir qu'une petite quantité de données. Android permet donc aux intents de contenir un gestionnaire sécurisé de fichiers. Partager des fichiers multimédias en toute sécurité depuis votre application implique:
- Configurez votre application de sorte qu'elle offre un identifiant sécurisé au fichier, sous la forme d'un
URI de contenu, à l'aide du composant Android
FileProvider. - Spécifiez les répertoires partageables dans votre fichier manifeste.
- Utilisez
getUriForFilepour créer une URL de contenu qui sert de poignée sécurisée au fichier. - Créez un intent qui accorde des autorisations au fichier.
Consultez À propos du partage de fichiers pour découvrir comment partager de façon sécurisée .
Optimiser les contenus multimédias pour le partage
Si vous partagez des contenus multimédias avec d'autres utilisateurs dans votre appli ou avec une autre application, vous devez vous assurer de partager des contenus multimédias et de partage.
Trouver l'équilibre entre qualité et taille
Les fichiers multimédias volumineux peuvent rapidement utiliser la bande passante et l'espace de stockage, les retards frustrants et les éventuels frais de dépassement de données pour vos utilisateurs. La compression est la meilleure arme.
- Compression d'image : utilisez des formats de compression d'image modernes tels que WebP et AVIF, qui offrent des taux de compression supérieurs aux JPEG traditionnels sans perte de qualité significative. Testez différents paramètres de qualité pour trouver le bon équilibre.
- Compression vidéo: exploitez les performances des vidéos AV1 ou H.265 (HEVC).
pour améliorer l'efficacité de la compression tout en maintenant
d'une excellente qualité visuelle. Vous pouvez vérifier la présence d'encodage matériel
sur les appareils Android 10 et versions ultérieures, ainsi que le
mediaPerformanceClasspour vous aider déterminer ce que votre appareil peut le mieux prendre en charge. Pensez à proposer différentes des options de résolution permettant de s'adapter aux préférences des utilisateurs et aux et conditions d'exploitation.
fun hasHardwareEncodingSupportFor(mimeType: String): Boolean {
val codecList = MediaCodecList(REGULAR_CODECS)
val codecInfos = codecList.codecInfos
for ( codecInfo in codecInfos ) {
if (!codecInfo.isEncoder()) {
continue;
}
if (!codecInfo.isHardwareAccelerated()) {
continue;
}
val types: Array<String> = codecInfo.getSupportedTypes()
for (j in types.indices) {
if (types[j].equals(mimeType, ignoreCase = true)) {
return true
}
}
}
return false
}
// test for AV1 hardware encoding support
val hasAV1 = hasHardwareEncodingSupportFor("video/av01")
Adaptation de contenus multimédias
Les plates-formes de réseaux sociaux appliquent souvent des dimensions et des formats spécifiques aux contenus multimédias partagés. En redimensionnant et recadrant les fichiers multimédias de manière proactive avant de partage, vous pouvez éviter les problèmes de distorsion ou de mise en forme inattendus les utilisateurs publient sur leurs plateformes préférées.
Fournir des instructions et des conseils clairs sur la façon dont les utilisateurs peuvent optimiser leurs contenus multimédias avant de les partager. Il peut s'agir de conseils sur l'ajustement des débits d'encodage, la définition des paramètres de quantification, le choix du format vidéo, la sélection des tailles de fichiers appropriées ou la compréhension de l'impact des différentes options de partage.
Améliorer la visibilité des médias
Ajouter des métadonnées pertinentes, telles que des titres, des descriptions et des tags à vos contenus multimédias peuvent améliorer leur visibilité. Encouragez les utilisateurs à ajouter leurs propres des descriptions et des sous-titres lors du partage, ce qui permet de personnaliser davantage l'expérience.
Ajouter des métadonnées aux images
La classe Jetpack ExifInterface écrit les métadonnées au format JPEG, PNG et WebP. sous forme de tags Exif.
// sets the title of the image in the form of Exif data
val exif = ExifInterface(imageFile)
exif.setAttribute(ExifInterface.TAG_IMAGE_DESCRIPTION, "Beautiful sunset")
exif.saveAttributes()