Medienfreigabe

Ganz gleich, ob es sich um ein lustiges Bild, ein informatives Video oder einen fesselnden Audioclip handelt, Die Möglichkeit, Inhalte zu teilen, bereichert das Erlebnis und macht Werbung Interaktion. In diesem Dokument erfahren Sie alles Wissenswerte zum Teilen von Medien auf Android-Geräten, einschließlich der APIs und Techniken, die Sie zur Integration dieser Funktion benötigen.

Fürs Teilen gemacht

Das Design von Android fördert die Interoperabilität zwischen Apps mithilfe eines Systems, das auf Intents: Ein Intent ist eine abstrakte Beschreibung eines durchzuführenden Vorgangs. Intents ermöglichen es Apps, miteinander zu kommunizieren, ohne Einzelheiten zueinander aufzeigen.

Wenn eine App Daten freigeben oder eine Aktion initiieren möchte, wird ein Intent erstellt, in dem die Art der Inhalte und der Vorgang angegeben werden. Das Android-System zeigt eine Liste Apps, die diesen Intent verarbeiten können, sodass Nutzer selbst entscheiden können, zu verwenden. Dieser Ansatz fördert eine auf Zusammenarbeit ausgelegte Umgebung.

Zum Teilen von Text sind nur einige Codezeilen erforderlich:

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)

Die Zeile createChooser zeigt die Benutzeroberfläche von Android Sharesheet, mit der Sie können Nutzer Informationen mit anderen teilen, z. B. relevante App-Vorschläge. mit nur einem Tippen. Weitere Möglichkeiten mit dem Android-Freigabe-Dialogfeld:

Weitere Informationen zu Android finden Sie unter Einfache Daten an andere Apps senden. Sharesheets und deren Verwendung

Stellen Sie Direktfreigabe-Ziele bereit, um dies für Nutzer von anderen Apps, um URLs, Bilder oder andere Daten mit Ihrer App zu teilen. Direkt Teilen funktioniert, indem Kontakte aus Messaging- und sozialen Apps direkt präsentiert werden auf dem Android-Sharesheet ansehen, ohne dass die Nutzer die App auswählen und suchen Sie nach dem Kontakt.

Unterstützung für den Empfang von Rich-Content-Inhalten über eine OnReceiveContentListener Diese API bietet einen zentralen Ort für Ihre für den Empfang aller Inhalte, von Nur- und formatiertem Text bis hin zu Markups, Bilder, Videos, Audiodateien und andere Elemente. Die Inhalte können über Bildtastaturen, Drag-and-drop oder die Zwischenablage eingegeben werden.

Mediendateien freigeben

Intents können nur eine kleine Menge an Daten enthalten. Daher bietet Android eine Möglichkeit, dass Intents einen sicheren Alias für Dateien enthalten. Wenn Sie Mediendateien sicher über Ihre App freigeben möchten, müssen Sie Folgendes beachten:

Weitere Informationen zum sicheren Freigeben von Dateien finden Sie unter Dateien freigeben.

Medien für die Freigabe optimieren

Unabhängig davon, ob Sie Medien mit anderen Nutzern in Ihrer App oder eine andere App verwendet, solltet ihr Medien teilen, die eine hohe Qualität mit anderen teilen.

Die richtige Balance zwischen Qualität und Größe finden

Große Mediendateien können schnell Bandbreite und Speicherplatz verbrauchen, was zu frustrierenden Verzögerungen und möglichen Gebühren für Datenüberschreitungen für Ihre Nutzer führt. Hier ist Komprimierung der Schlüssel.

  • Bildkomprimierung: Verwenden Sie moderne Bildkomprimierungsformate wie WebP und AVIF, die im Vergleich zu herkömmlichen JPEGs ein besseres Komprimierungsverhältnis ohne erhebliche Qualitätseinbußen bieten. Mit unterschiedlicher Qualität experimentieren Einstellungen anpassen, um den perfekten Punkt zu finden.
  • Videokomprimierung: Vorteile von AV1 oder H.265 (HEVC) für eine bessere Kompressionseffizienz bei gleichzeitiger hervorragender Bildqualität. Auf Geräten mit Android 10 und höher kannst du prüfen, ob Hardware-Codierung unterstützt wird. Außerdem kannst du die mediaPerformanceClass prüfen, um herauszufinden, was dein Gerät am besten unterstützt. Bieten Sie verschiedene Auflösungsoptionen an, um den unterschiedlichen Nutzerpräferenzen und Netzwerkbedingungen gerecht zu werden.
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")

Medien anpassen

Social-Media-Plattformen erzwingen häufig bestimmte Abmessungen und Seitenverhältnisse für freigegebene Medien. Wenn Sie Mediendateien vor dem Teilen proaktiv zuschneiden und die Größe anpassen, können Sie unerwartete Verzerrungen oder Formatierungsprobleme vermeiden, wenn Nutzer Inhalte auf ihren bevorzugten Plattformen posten.

Geben Sie eine klare Anleitung und Informationen dazu, wie Nutzer ihre Medien vor dem Teilen optimieren können. Dazu gehören Tipps zum Anpassen von Bitraten für die Codierung, zum Festlegen von Quantisierungsparametern, zum Auswählen des Videoformats, zum Auswählen geeigneter Dateigrößen oder zum Verständnis der Auswirkungen verschiedener Freigabeoptionen.

Sichtbarkeit von Medien verbessern

Ihren Medien relevante Metadaten wie Titel, Beschreibungen und Tags hinzufügen -Dateien ihre Auffindbarkeit verbessern. Nutzer auffordern, eigene hinzuzufügen Beschreibungen und Bildunterschriften verwenden, um die Nutzererfahrung weiter zu personalisieren.

Metadaten zu Bildern hinzufügen

Die Klasse Jetpack ExifInterface schreibt Metadaten in JPEG, PNG und WebP. Bilder in Form von EXIF-Tags.

// 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()