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:
- Scoprire quando gli utenti completano una condivisione e dove
- Fornire anteprime dei contenuti di testo avanzato, a partire da Android 10 (livello API 29)
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:
- Configura l'app in modo da offrire un handle sicuro al file, sotto forma di URI dei contenuti, utilizzando il componente
FileProvider
per Android. - Specifica le directory condivisibili nel file manifest.
- Utilizza
getUriForFile
per creare un URL di contenuti che funzioni da URL sicuro al file. - Crea un'intent che conceda le autorizzazioni al file.
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()