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'intenzione è una descrizione astratta di un'operazione da eseguire. Gli intent consentono alle app di comunicare tra loro senza dover conoscere dettagli specifiche l'una dell'altra.

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 che possono gestire l'intent, consentendo all'utente di scegliere quale app utilizzare. Questo approccio promuove un ecosistema collaborativo.

La condivisione di 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 Sharesheet di Android, 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:

Per saperne di più sulle schede di condivisione di Android e su come utilizzarle, vedi Inviare dati semplici ad altre app.

Fornisci target di condivisione diretta per consentire agli utenti di altre app di condividere più facilmente e rapidamente URL, immagini o altri tipi di dati con la tua app. Condivisione diretta funziona presentando i contatti delle app di messaggistica e social direttamente nella scheda di condivisione di Android, senza che gli utenti debbano selezionare l'app e poi cercare il contatto.

Supporta la ricezione di contenuti avanzati tramite un OnReceiveContentListener Questa API fornisce un'unica posizione per per gestire la ricezione di tutti i contenuti, dal testo normale e con stili al markup, immagini, video, file audio e altro. I contenuti possono provenire da tastiere per immagini, trascinamento o appunti.

Condividere 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:

Per saperne di più su come condividere file in modo sicuro, consulta Informazioni sulla condivisione di file.

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 della compressione video AV1 o H.265 (HEVC) per offrire una maggiore efficienza di compressione mantenendo un'eccellente qualità visiva. 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 diverse 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 descrizioni e sottotitoli codificati quando condividono i contenuti, personalizzando ulteriormente l'esperienza.

Aggiungere metadati alle immagini

La classe Jetpack ExifInterface scrive i metadati nelle immagini 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()