Tentang berbagi media

Baik itu gambar lucu, video informatif, atau klip audio yang menawan, memungkinkan pengguna berbagi konten akan memperkaya pengalaman mereka dan mempromosikan engagement. Dokumen ini mengeksplorasi dasar-dasar berbagi media di Android, termasuk API dan teknik yang Anda butuhkan untuk mengintegrasikan kemampuan ini.

Didesain untuk berbagi

Desain Android mempromosikan interoperabilitas antar-aplikasi menggunakan sistem berdasarkan Intent. Intent adalah deskripsi abstrak dari operasi yang akan dilakukan. Intent memungkinkan aplikasi berkomunikasi satu sama lain tanpa harus mengetahui detail satu sama lain.

Bila aplikasi ingin berbagi data atau memulai tindakan, aplikasi akan membuat Intent yang menentukan jenis konten dan operasi. Sistem Android menampilkan daftar aplikasi relevan yang dapat menangani Intent tersebut, sehingga pengguna dapat memilih aplikasi yang akan digunakan. Pendekatan ini mendorong ekosistem kolaboratif.

Berbagi teks hanya memerlukan beberapa baris kode:

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)

Baris createChooser menampilkan UI Android Sharesheet, yang memungkinkan pengguna berbagi informasi dengan orang lain — termasuk saran aplikasi yang relevan — dengan sekali ketuk. Hal-hal lain yang dapat Anda lakukan dengan Android Sharesheet meliputi:

Lihat Mengirim data sederhana ke aplikasi lain untuk mengetahui informasi selengkapnya tentang Android Sharesheet dan cara menggunakannya.

Menyediakan target Berbagi Langsung agar lebih mudah dan lebih cepat bagi pengguna aplikasi lain untuk berbagi URL, gambar, atau jenis data lainnya dengan aplikasi Anda. Langsung Bagikan berfungsi dengan menampilkan kontak dari pesan dan aplikasi sosial secara langsung di Android Sharesheet, tanpa mengharuskan pengguna memilih aplikasi cari kontak.

Mendukung penerimaan konten lengkap melalui OnReceiveContentListener API ini menyediakan satu tempat untuk kode untuk menangani penerimaan semua konten, dari teks biasa dan bergaya hingga markup, gambar, video, file audio, dan lainnya. Konten dapat berasal dari keyboard gambar, tarik lalu lepas, atau papan klip.

Berbagi file media

Intent hanya dapat berisi data dalam jumlah kecil, jadi Android menyediakan cara bagi Intent untuk memuat handle yang aman ke file. Berbagi file media dengan aman dari aplikasi Anda melibatkan:

Lihat Tentang berbagi file untuk informasi selengkapnya tentang cara berbagi dengan aman .

Mengoptimalkan media untuk dibagikan

Apakah Anda membagikan media ke pengguna lain di aplikasi Anda, atau membagikan media ke aplikasi lain, pastikan Anda telah membagikan media yang menawarkan berbagi pengalaman.

Menciptakan keseimbangan antara kualitas dan ukuran

File media berukuran besar dapat dengan cepat menghabiskan bandwidth dan penyimpanan, sehingga menyebabkan keterlambatan yang menjengkelkan dan potensi biaya kelebihan data bagi pengguna Anda. Kompresi adalah teman terbaik Anda.

  • Kompresi gambar: Gunakan format kompresi gambar modern seperti WebP dan AVIF, yang menawarkan rasio kompresi yang lebih baik dibandingkan dengan JPEG tradisional tanpa kehilangan kualitas yang signifikan. Bereksperimen dengan berbagai kualitas {i>setting<i} untuk menemukan titik yang tepat.
  • Kompresi video: Manfaatkan kecanggihan video AV1 atau H.265 (HEVC) kompresi untuk memberikan efisiensi kompresi yang lebih baik dengan tetap kualitas visual yang prima. Anda dapat memeriksa keberadaan encoding hardware di perangkat Android 10 dan yang lebih baru, serta mediaPerformanceClass untuk membantu menentukan apa yang paling dapat didukung oleh perangkat Anda. Pertimbangkan untuk menawarkan pilihan resolusi untuk melayani beragam preferensi pengguna dan jaringan kondisi tertentu.
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")

Mengadaptasi media

Platform media sosial sering kali menerapkan dimensi dan rasio aspek tertentu untuk media yang dibagikan. Dengan secara proaktif mengubah ukuran dan memangkas file media sebelum , Anda dapat menghindari distorsi atau masalah format yang tidak terduga saat yang diposting pengguna ke platform favorit mereka.

Memberikan petunjuk dan panduan yang jelas tentang cara pengguna dapat mengoptimalkan media mereka sebelum berbagi. Hal ini dapat mencakup tips untuk menyesuaikan encoding kecepatan bit, menetapkan parameter kuantisasi, memilih format video, memilih ukuran file yang sesuai, atau memahami dampak berbagai opsi berbagi.

Meningkatkan visibilitas media

Menambahkan metadata yang relevan, seperti judul, deskripsi, dan tag ke media Anda {i>file <i}dapat meningkatkan visibilitasnya. Dorong pengguna untuk menambahkan deskripsi dan teks saat berbagi, yang akan mempersonalisasi pengalaman.

Menambahkan metadata ke gambar

Class Jetpack ExifInterface menulis metadata ke JPEG, PNG, dan WebP gambar dalam bentuk 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()