關於媒體分享

無論是有趣的圖片、資訊影片或吸引人的音訊片段 讓使用者分享內容、提升體驗, 提高參與度本文件將探討在 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,請參閱「傳送簡單資料給其他應用程式」。 共用試算表及使用方式

提供直接分享目標,讓 也能將網址、圖片或其他種類的資料提供給您的應用程式。直接 分享:直接透過訊息和社交應用程式分享聯絡人畫面 使用者不必選取應用程式 搜尋所需聯絡人。

支援透過 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()