Giới thiệu về tính năng chia sẻ nội dung nghe nhìn

Cho dù đó là một hình ảnh vui nhộn, một video chứa nhiều thông tin hay một đoạn âm thanh hấp dẫn, cho phép người dùng chia sẻ nội dung làm phong phú trải nghiệm của họ và quảng bá tương tác. Tài liệu này khám phá những điều cơ bản về việc chia sẻ nội dung nghe nhìn trên Android, bao gồm cả các API và kỹ thuật bạn cần để tích hợp khả năng này.

Được thiết kế để chia sẻ

Thiết kế của Android thúc đẩy khả năng tương tác giữa các ứng dụng bằng cách sử dụng một hệ thống dựa trên Ý định. Ý định là nội dung mô tả trừu tượng về thao tác cần thực hiện. Ý định cho phép các ứng dụng giao tiếp với nhau mà không cần phải biết về nhau.

Khi muốn chia sẻ dữ liệu hoặc bắt đầu một hành động, ứng dụng đó sẽ tạo một Ý định chỉ định loại nội dung và thao tác. Hệ thống Android đưa ra một danh sách ứng dụng phù hợp có thể xử lý Ý định đó, cho phép người dùng chọn để sử dụng. Cách tiếp cận này thúc đẩy một hệ sinh thái cộng tác.

Văn bản chia sẻ chỉ bao gồm vài dòng mã:

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)

Dòng createChooser hiển thị giao diện người dùng của Trang chia sẻ nội dung Android. Giao diện này cho phép người dùng chia sẻ thông tin với mọi người — bao gồm cả các đề xuất ứng dụng phù hợp — chỉ bằng một lần nhấn. Những việc khác bạn có thể làm với Trang chia sẻ nội dung Android bao gồm:

Xem bài viết Gửi dữ liệu đơn giản đến các ứng dụng khác để biết thêm thông tin về Android Trang tính chia sẻ và cách sử dụng.

Cung cấp mục tiêu Chia sẻ trực tiếp để giúp người dùng của các ứng dụng khác để chia sẻ URL, hình ảnh hoặc các loại dữ liệu khác với ứng dụng của bạn. Trực tiếp Tính năng Chia sẻ hoạt động bằng cách trình bày trực tiếp danh bạ từ các ứng dụng nhắn tin và mạng xã hội trên Trang chia sẻ nội dung của Android mà người dùng không phải chọn ứng dụng rồi tìm kiếm người liên hệ đó.

Hỗ trợ nhận nội dung đa dạng thức thông qua OnReceiveContentListener. API này cung cấp một nơi duy nhất để để xử lý việc nhận tất cả nội dung, từ văn bản thuần tuý và có kiểu cho đến mã đánh dấu, hình ảnh, video, tệp âm thanh và các tệp khác. Nội dung có thể đến từ hình ảnh bàn phím, kéo và thả hoặc bảng nhớ tạm.

Chia sẻ tệp nội dung nghe nhìn

Ý định chỉ có thể chứa một lượng nhỏ dữ liệu, vì vậy, Android cung cấp một cách để Ý định chứa một tên người dùng bảo mật cho các tệp. Chia sẻ tệp đa phương tiện một cách an toàn từ ứng dụng của bạn liên quan đến:

Hãy xem phần Giới thiệu về cách chia sẻ tệp để biết thêm thông tin về cách chia sẻ an toàn tệp.

Tối ưu hoá nội dung nghe nhìn để chia sẻ

Cho dù bạn đang chia sẻ nội dung nghe nhìn với người dùng khác trong ứng dụng của mình hay chia sẻ nội dung nghe nhìn với một ứng dụng khác, bạn đều muốn đảm bảo rằng nội dung nghe nhìn bạn chia sẻ mang lại trải nghiệm chia sẻ chất lượng cao.

Cân bằng giữa chất lượng và kích thước

Các tệp nội dung đa phương tiện có dung lượng lớn có thể nhanh chóng tiêu thụ băng thông và bộ nhớ, dẫn đến tình trạng trễ gây khó chịu và có thể phải trả phí dữ liệu vượt mức cho người dùng. Nén là người bạn tốt nhất của bạn.

  • Nén hình ảnh: Sử dụng các định dạng nén hình ảnh hiện đại như WebP và AVIF, cung cấp tỷ lệ nén vượt trội so với giao thức truyền thống Ảnh JPEG mà không làm giảm chất lượng đáng kể. Thử nghiệm với chất lượng khác để tìm ra điểm phù hợp.
  • Nén video: Khai thác sức mạnh của video AV1 hoặc H.265 (HEVC) nén để mang lại hiệu quả nén tốt hơn trong khi vẫn duy trì có chất lượng hình ảnh tuyệt vời. Bạn có thể kiểm tra xem có tính năng mã hoá phần cứng trên thiết bị Android 10 trở lên hay không, cũng như mediaPerformanceClass để xác định thiết bị của bạn có thể hỗ trợ tính năng nào tốt nhất. Hãy cân nhắc cung cấp các phương án giải quyết để phục vụ cho nhiều sở thích của người dùng và mạng .
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")

Điều chỉnh nội dung nghe nhìn

Các nền tảng mạng xã hội thường áp dụng những kích thước và tỷ lệ khung hình cụ thể cho nội dung nghe nhìn được chia sẻ. Bằng cách tích cực đổi kích thước và cắt tệp phương tiện trước khi chia sẻ, bạn có thể tránh các vấn đề về định dạng hoặc méo hình không mong muốn khi người dùng đăng lên các nền tảng mà họ yêu thích.

Cung cấp chỉ dẫn và hướng dẫn rõ ràng về cách người dùng có thể tối ưu hoá nội dung nghe nhìn trước khi chia sẻ. Chẳng hạn như các mẹo điều chỉnh tốc độ bit mã hoá, cài đặt thông số lượng tử, chọn định dạng video, cách chọn kích thước tệp phù hợp hoặc tìm hiểu tác động của các tuỳ chọn chia sẻ.

Nâng cao khả năng phát hiện nội dung nghe nhìn

Việc thêm siêu dữ liệu phù hợp, chẳng hạn như tiêu đề, nội dung mô tả và thẻ vào các tệp nội dung nghe nhìn có thể giúp tăng khả năng người dùng tìm thấy các tệp đó. Khuyến khích người dùng thêm nội dung mô tả và phụ đề khi chia sẻ, giúp cá nhân hoá trải nghiệm hơn nữa.

Thêm siêu dữ liệu vào hình ảnh

Lớp Jetpack ExifInterface ghi siêu dữ liệu vào tệp JPEG, PNG và WebP hình ảnh dưới dạng thẻ 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()