Informazioni sulla condivisione di contenuti multimediali

Che si tratti di un'immagine divertente, di un video informativo o di un clip audio accattivante, consentire agli utenti di condividere contenuti arricchisce la loro esperienza e promuove e il coinvolgimento degli utenti. Questo documento illustra gli elementi essenziali della condivisione di contenuti multimediali su Android. incluse le API e le tecniche necessarie per integrare questa funzionalità.

Progettato per la condivisione

Il design di Android promuove l'interoperabilità tra le app utilizzando un sistema basato su intent. Un intent è una descrizione astratta di un'operazione da eseguire. Gli intent consentono alle app di comunicare tra loro senza che debbano sapere e i dettagli reciproci.

Quando un'app vuole condividere dati o avviare un'azione, crea un'intenzione che specifica il tipo di contenuti e operazioni. Il sistema Android presenta un elenco di app pertinenti in grado di gestire quell'intent, consentendo all'utente di scegliere l'app. Questo approccio favorisce un ecosistema collaborativo.

La condivisione di un testo richiede solo poche righe di codice:

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 riga createChooser mostra l'interfaccia utente di Android Sharesheet, che consente agli utenti di condividere informazioni con altre persone, inclusi suggerimenti di app pertinenti, con un solo tocco. Altre cose che puoi fare con Android Sharesheet includono:

Leggi l'articolo sull'invio di dati semplici ad altre app per ulteriori informazioni su Android. Sharesheet e come utilizzarli.

Fornisci target relativi alla condivisione diretta per rendere più semplice e veloce per gli utenti di altre app per condividere URL, immagini o altri tipi di dati con la tua app. Diretto Condividi funziona presentando i contatti direttamente dalle app di messaggistica e social su Android Sharesheet, senza che gli utenti debbano selezionare l'app e poi cerca il contatto.

Supporta la ricezione di contenuti avanzati tramite un OnReceiveContentListener Questa API fornisce un unico punto in cui il codice può gestire la ricezione di tutti i contenuti, dal testo normale e con stile al markup, alle immagini, ai video, ai file audio e ad altri ancora. I contenuti possono provenire da immagini tastiere, trascina la selezione o gli appunti.

Condividi file multimediali

Gli intent possono contenere solo una piccola quantità di dati, quindi Android offre un modo Intent a contenere un handle sicuro per i file. Condivisione sicura dei file multimediali da la tua app prevede:

Vedi Informazioni sulla condivisione di file per ulteriori informazioni su come condividere in modo sicuro .

Ottimizzare i contenuti multimediali per la condivisione

Che tu stia condividendo contenuti multimediali con altri utenti nella tua app o con un'altra app, devi assicurarti di condividere contenuti multimediali che offrano un'esperienza di condivisione di alta qualità.

L'equilibrio tra qualità e dimensioni

I file multimediali di grandi dimensioni possono consumare rapidamente larghezza di banda e spazio di archiviazione, causando ritardi frustranti e potenziali addebiti per superamento del limite di dati per i tuoi utenti. La compressione è la tua migliore amica.

  • Compressione delle immagini: utilizza i moderni formati di compressione delle immagini, come WebP e AVIF, che offrono rapporti di compressione superiori rispetto ai sistemi JPEG senza una significativa perdita di qualità. Sperimenta con qualità diverse le impostazioni per trovare il punto ottimale.
  • Compressione video: sfrutta la potenza dei video AV1 o H.265 (HEVC) per offrire una maggiore efficienza di compressione mantenendo al contempo una qualità visiva eccellente. Puoi verificare la presenza di una codifica hardware sui dispositivi Android 10 e versioni successive, nonché sul mediaPerformanceClass per determinare cosa può supportare meglio il tuo dispositivo. Valuta la possibilità di offrire diverse opzioni di risoluzione per soddisfare le preferenze degli utenti e le condizioni della rete.
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")

Adattare i contenuti multimediali

Le piattaforme di social media spesso applicano dimensioni e proporzioni specifiche per i contenuti multimediali condivisi. Se regoli e ritaglia in modo proattivo le dimensioni dei file multimediali prima di condividerli, puoi evitare problemi di distorsione o formattazione imprevisti quando gli utenti pubblicano contenuti sulle loro piattaforme preferite.

Fornire istruzioni e indicazioni chiare su come gli utenti possono ottimizzare i propri contenuti multimediali prima della condivisione. Potrebbero essere inclusi suggerimenti per regolare la codifica in bit della velocità in bit. impostare i parametri di quantizzazione, scegliere il formato video, selezionare dimensioni di file appropriate o comprendere l'impatto di opzioni di condivisione.

Migliorare la visibilità dei media

L'aggiunta di metadati pertinenti, come titoli, descrizioni e tag, ai tuoi file multimediali può migliorarne la visibilità. Incoraggia gli utenti ad aggiungere la propria descrizioni e sottotitoli codificati durante la condivisione, personalizzando ulteriormente l'esperienza.

Aggiungere metadati alle immagini

La classe Jetpack ExifInterface scrive i metadati in JPEG, PNG e WebP sotto forma di tag 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()