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