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ż:
- Dowiedz się, kiedy i gdzie użytkownicy udostępnią coś
- Przedstawianie podglądów treści z tekstem zaawansowanym, począwszy od Androida 10 (poziom interfejsu API 29)
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:
- Skonfiguruj aplikację tak, aby oferowała bezpieczny uchwyt pliku (w postaci identyfikatora URI treści) za pomocą komponentu
FileProvider
Androida. - Określ katalogi, które można udostępniać, w pliku manifestu.
- Użyj
getUriForFile
, aby utworzyć adres URL treści, który będzie bezpieczny z uchwytem. - Utwórz intencję, która przyznaje uprawnienia do pliku.
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()