À propos du partage multimédia

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 :

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:

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 mediaPerformanceClass pour 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()