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ần thiết 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 tính 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 thông tin cụ thể 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 sẽ hiển thị danh sách các ứng dụng có liên quan có thể xử lý Ý định đó, cho phép người dùng chọn ứng dụng sẽ sử dụng. Phương pháp 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. Bạn cũng có thể làm những việc khác với Trang chia sẻ trên Android, chẳng hạn như:

Hãy 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ề Trang chia sẻ trên Android 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á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 dễ dàng và nhanh chóng hơn. Tính năng Chia sẻ trực tiếp hoạt động bằng cách hiển thị danh bạ từ các ứng dụng nhắn tin và mạng xã hội ngay trên Trang chia sẻ của Android mà người dùng không cần 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 để mã của bạn 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 các dấu được đánh, hình ảnh, video, tệp âm thanh, v.v. 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 phương tiệ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 xử lý bảo mật cho tệp. Để chia sẻ tệp đa phương tiện một cách an toàn từ ứng dụng, bạn cần:

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

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

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 muốn đảm bảo rằng bạn chia sẻ nội dung nghe nhìn cung cấp chất lượng cao chia sẻ trải nghiệm.

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. Bạn nên dùng tính năng nén ở đây.

  • 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. Các định dạng này cung cấp tỷ lệ nén vượt trội so với JPEG truyền thống mà không làm giảm đáng kể chất lượng. Thử nghiệm với chất lượng khác để tìm ra điểm phù hợp.
  • Nén video: Tận dụng sức mạnh của công nghệ nén video AV1 hoặc H.265 (HEVC) để mang lại hiệu quả nén tốt hơn trong khi vẫn duy trì 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. Cân nhắc việc cung cấp nhiều tuỳ chọn độ phân giải để đáp ứng các lựa chọn ưu tiên và điều kiện mạng khác nhau của người dù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 thực thi các kích thước và tỷ lệ khung hình cụ thể đối với 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ẻ. Nội dung này có thể bao gồm các mẹo về cách điều chỉnh tốc độ bit mã hoá, đặt các tham số lượng tử hoá, chọn định dạng video, 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ẻ.

Tăng khả năng tìm thấy 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à chú thích của riêng họ 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()