關於媒體分享

無論是有趣的圖片、資訊影片或吸引人的音訊片段 讓使用者分享內容、提升體驗, 提高參與度本文件將探討在 Android 上分享媒體的基本要件。 包括整合此功能所需的 API 和技術。

適合分享

Android 的設計可讓使用者運用根據 意圖。「意圖」是待執行作業的摘要說明。 意圖可讓應用程式在不需知情的情況下彼此通訊 好奇心

當應用程式想要分享資料或啟動動作時,就會建立意圖 會指定內容和作業的類型。Android 系統會列出可處理該意圖的相關應用程式,讓使用者選擇要使用的應用程式。這個做法可促進協同合作的生態系統。

分享文字只需要幾行程式碼:

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)

createChooser 行會顯示 Android Sharesheet UI,讓使用者只要輕觸一下,就能與他人分享資訊 (包括相關應用程式建議)。Android Sharesheet 還提供:

如要進一步瞭解 Android,請參閱「傳送簡單資料給其他應用程式」。 共用試算表及使用方式

提供直接分享目標,讓其他應用程式的使用者更輕鬆快速地將網址、圖片或其他類型的資料分享給您的應用程式。直接分享功能會直接在 Android 分享頁面上顯示訊息和社群媒體應用程式的聯絡人,使用者不必選取應用程式,然後搜尋聯絡人。

支援透過 OnReceiveContentListener接收多媒體內容。這個 API 可讓程式碼在單一位置處理接收從純文字和樣式化文字到標記、圖片、影片、音訊檔案等所有內容。內容可以來自圖片 鍵盤、拖曳操作或剪貼簿。

分享媒體檔案

意圖只能包含少量資料,因此 Android 提供一種方法,讓意圖包含檔案的安全處理常式。透過以下裝置安全分享媒體檔案: 包括:

如要進一步瞭解如何安全地分享檔案,請參閱「關於分享檔案」。

最佳化分享用的媒體

你是否要與應用程式中的其他使用者分享媒體,或將媒體內容分享給 也別忘了分享 優質媒體內容 分享經驗

在品質和大小之間取得平衡

大型媒體檔案可能會快速消耗頻寬和儲存空間, 使用者可能會因此遭遇延遲情況,也較有可能產生超額的資料超額費用。 壓縮是你最好的朋友,

  • 圖片壓縮使用新式圖片壓縮格式,例如 WebP 和 AVIF,這些格式比傳統 JPEG 提供更優異的壓縮比,且不會大幅降低圖片品質。嘗試不同的品質設定,找出最合適的設定。
  • 影片壓縮善用 AV1 或 H.265 (HEVC) 影片壓縮功能,提升壓縮效率,同時維持優異的視覺品質。您可以檢查 Android 10 以上版本裝置是否支援硬體編碼,以及 mediaPerformanceClass,以便判斷裝置最適合支援哪些功能。建議提供 配合不同使用者偏好和網路的解決方案 條件。
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")

調整媒體

社群媒體平台經常會強制執行特定尺寸和顯示比例, 分享的媒體。藉由主動調整及裁剪媒體檔案, 共用資料,可避免不小心失真或格式問題。 使用者張貼在自己最愛的平台上。

提供清楚的指示和指引,讓使用者瞭解如何最佳化媒體 再進行分享這可能包括調整編碼位元率、設定量化參數選擇影片格式、選擇適當的檔案大小,或瞭解不同分享選項的影響。

提高媒體曝光度

在媒體中加入相關的中繼資料,例如標題、說明和標記 進而提高曝光度鼓勵使用者自行新增 說明文字和說明文字,為使用體驗增添個人特色。

將中繼資料新增至圖片

Jetpack ExifInterface 類別會以 EXIF 標記的形式,將中繼資料寫入 JPEG、PNG 和 WebP 圖片。

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