無論是有趣的圖片、資訊影片或吸引人的音訊片段 讓使用者分享內容、提升體驗, 提高參與度本文件將探討在 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 提供 意圖包含檔案的安全控制代碼。透過以下裝置安全分享媒體檔案: 包括:
- 設定應用程式以提供檔案的安全控制代碼,格式如下:
內容 URI — 使用 Android
FileProvider
元件。 - 在資訊清單中指定可分享的目錄。
- 使用
getUriForFile
建立內容網址,做為檔案的安全句柄。 - 建立意圖,授予檔案權限。
如要進一步瞭解如何安全地共用檔案,請參閱「關於共用檔案」一文 檔案。
針對分享的媒體進行最佳化調整
你是否要與應用程式中的其他使用者分享媒體,或將媒體內容分享給 也別忘了分享 優質媒體內容 分享經驗
在品質與尺寸之間取得平衡
大型媒體檔案可能會快速消耗頻寬和儲存空間, 使用者可能會因此遭遇延遲情況,也較有可能產生超額的資料超額費用。 壓縮是你最好的朋友,
- 圖片壓縮:採用新型圖片壓縮格式,例如 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()