Informacje o udostępnianiu multimediów

Może to być zabawny obraz, informacyjny film lub wciągający klip audio. że umożliwienie użytkownikom udostępniania treści wzbogaca ich wrażenia i promuje zaangażowanie użytkowników. Ten dokument opisuje podstawy udostępniania multimediów na Androidzie, w tym interfejsy API i techniki, które pozwolą Ci zintegrować tę funkcję.

Udostępnianie

Android zachęca do współdziałania aplikacji z systemem opartym na Intencje. Intencja to abstrakcyjny opis operacji do wykonania. Intencje umożliwiają aplikacjom komunikowanie się ze sobą bez konieczności znajomości szczegółowych informacji o siebie nawzajem.

Gdy aplikacja chce udostępnić dane lub zainicjować działanie, tworzy zamiar, który określa typ treści i operację. System Android wyświetla listę odpowiednich aplikacji, które mogą obsłużyć tę intencję, pozwalając użytkownikowi wybrać aplikację, której chcesz użyć. Takie podejście sprzyja współpracy w ekosystemie.

Aby udostępnić tekst, wystarczy kilka wierszy kodu:

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)

Wiersz createChooser wyświetla interfejs arkusza udostępniania Androida, który umożliwia użytkownikom udostępnianie informacji innym osobom, w tym odpowiednich sugestii dotyczących aplikacji, za pomocą jednego dotknięcia. Arkusz udostępniania Androida pozwala też:

Więcej informacji o Androidzie znajdziesz w sekcji Wysyłanie prostych danych do innych aplikacji. Arkusze udostępniania i informacje o tym, jak z nich korzystać

Podaj cele bezpośredniego udostępniania, aby ułatwić i przyspieszyć innych aplikacji, aby udostępniać swojej aplikacji adresy URL, obrazy lub inne dane. Wizyty bezpośrednie Udostępnianie polega na prezentowaniu kontaktów bezpośrednio z komunikatorów i aplikacji społecznościowych w arkuszu udostępniania Androida, dzięki czemu użytkownicy nie muszą wyszukaj kontakt.

Umożliwiają otrzymywanie szczegółowych treści OnReceiveContentListener. Ten interfejs API zapewnia jedno miejsce na potrzeby kod do obsługi odbierania całej zawartości, od zwykłego tekstu ze stylem po znaczniki, np. pliki graficzne, wideo, dźwiękowe i inne. Zawartość może pochodzić z obrazu klawiatury, przeciągnij i upuść lub schowek.

Udostępnianie plików multimedialnych

Intencje mogą zawierać tylko niewielką ilość danych, więc Android zapewnia sposób intencje zawierające bezpieczny uchwyt plików. Bezpieczne udostępnianie plików multimedialnych z aplikacji:

Więcej informacji na temat bezpiecznego udostępniania znajdziesz w artykule Informacje o udostępnianiu plików. .

Zoptymalizuj multimedia na potrzeby udostępniania

Czy udostępniasz multimedia innym użytkownikom aplikacji, czy udostępniasz je innej aplikacji, upewnij się, że udostępniasz multimedia o wysokiej jakości i podziel się doświadczeniami.

Utrzymywanie równowagi między jakością a rozmiarem

Duże pliki multimedialne mogą szybko zużywać przepustowość i pamięć, co prowadzi do irytujących opóźnień i ewentualnych dodatkowych opłat za przekroczenie limitu danych. Kompresja jest tutaj Twoim najlepszym przyjacielem.

  • Kompresja obrazu: używaj nowoczesnych formatów kompresji obrazu, takich jak WebP i AVIF, które zapewniają lepsze współczynniki kompresji niż tradycyjne pliki JPEG bez znacznej utraty jakości. Eksperymentuj z różnymi ustawieniami jakości, aby znaleźć optymalne rozwiązanie.
  • Kompresja wideo: korzystanie z możliwości kompresji wideo AV1 lub H.265 (HEVC), aby zapewnić większą wydajność kompresji przy zachowaniu doskonałej jakości obrazu. Możesz sprawdzić, czy jest używane kodowanie sprzętowe na urządzeniach z Androidem 10 i nowszym oraz w mediaPerformanceClass, aby pomóc określić, jakie funkcje jest najbardziej obsługiwane przez Twoje urządzenie. Zastanów się nad udostępnieniem różnych opcji rozdzielczości, aby zaspokoić różne preferencje użytkowników i warunki sieci.
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")

Dostosowuję multimedia

Platformy mediów społecznościowych często wymuszają stosowanie określonych wymiarów i współczynników proporcji w przypadku udostępnione multimedia. Dzięki proaktywnej zmianie rozmiaru i przycinaniu plików multimedialnych udostępnianie, można uniknąć nieoczekiwanych zniekształceń lub formatowania zamieszczają treści na ulubionych platformach.

Zapewnij jasne instrukcje i wskazówki ułatwiające użytkownikom optymalizację multimediów przed udostępnieniem. Mogą one obejmować wskazówki dotyczące dostosowywania szybkości transmisji bitów kodowania, ustawienie parametrów kwantyzacji, wybór formatu wideo, wybrać odpowiednie rozmiary plików lub poznać wpływ różnych opcje udostępniania.

Większa wykrywalność w mediach

dodawanie do multimediów odpowiednich metadanych, takich jak tytuły, opisy i tagi; pliki mogą zwiększyć wykrywalność tych plików. Zachęcaj użytkowników do dodawania własnych treści opisy i napisy podczas udostępniania, co pozwala jeszcze bardziej spersonalizować materiał.

Dodawanie metadanych do obrazów

Klasa Jetpack ExifInterface zapisuje metadane w obrazach JPEG, PNG i WebP w postaci tagów 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()