À 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 de base du partage de contenu multimédia 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 Intents : Un intent est une description abstraite d'une opération à effectuer. Les intents permettent aux applis 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. Autres fonctionnalités d'Android Sharesheet:

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.

Ils permettent de recevoir du contenu enrichi par le biais d'une OnReceiveContentListener Cette API fournit un emplacement unique du code pour gérer la réception de tout le contenu, du texte brut et stylisé au balisage, des images, des vidéos, des 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 Intents contenant un identifiant sécurisé pour les 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

Que vous partagiez des contenus multimédias avec d'autres utilisateurs dans votre application ou avec une autre application, vous devez vous assurer de partager des contenus multimédias qui offrent une expérience de partage de haute qualité.

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. Tester différentes qualités paramètres pour trouver le juste é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. Envisagez de proposer différentes options de résolution pour répondre aux préférences et aux conditions réseau des utilisateurs.
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")

Adapter les contenus multimédias

Les plates-formes de réseaux sociaux appliquent souvent des dimensions et des formats spécifiques pour des 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 fichiers multimédias, peut améliorer leur visibilité. Encouragez les utilisateurs à ajouter leurs propres descriptions et légendes lorsqu'ils partagent des contenus, ce qui personnalise 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()