無論是有趣的圖片、資訊影片或吸引人的音訊片段 讓使用者分享內容、提升體驗, 提高參與度本文件將探討在 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 提供一種方法,讓意圖包含檔案的安全處理常式。透過以下裝置安全分享媒體檔案: 包括:
- 設定應用程式以提供檔案的安全控制代碼,格式如下:
內容 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()