เกี่ยวกับการแชร์สื่อ

ไม่ว่ารูปภาพจะตลก วิดีโอให้ข้อมูล หรือคลิปเสียงที่ดึงดูดใจ การเปิดโอกาสให้ผู้ใช้แชร์เนื้อหาจะช่วยเพิ่มประสบการณ์การใช้งานและกระตุ้นการมีส่วนร่วม เอกสารนี้จะอธิบายข้อมูลเบื้องต้นเกี่ยวกับการแชร์สื่อใน Android รวมถึง API และเทคนิคที่คุณต้องใช้ในการผสานรวมความสามารถนี้

ออกแบบมาเพื่อการใช้งานร่วมกัน

การออกแบบของ Android ส่งเสริมความสามารถในการทำงานร่วมกันระหว่างแอปต่างๆ โดยใช้ระบบที่ Intent Intent คือคำอธิบายนามธรรมของการดำเนินการที่จะทำ Intent ทำให้แอปสื่อสารกันได้โดยไม่ต้องทราบว่า ที่เจาะจงเกี่ยวกับกันและกัน

เมื่อแอปต้องการแชร์ข้อมูลหรือเริ่มการดำเนินการ ก็จะสร้าง Intent ที่ ระบุประเภทของเนื้อหาและการดำเนินการ ระบบ 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 จะแสดง UI ของชีตการแชร์ของ Android ซึ่งช่วยให้ผู้ใช้แชร์ข้อมูลกับผู้อื่นได้ด้วยการแตะเพียงครั้งเดียว รวมถึงแสดงแอปแนะนำที่เกี่ยวข้อง สิ่งอื่นๆ ที่คุณสามารถทำได้โดยใช้ Android Sharesheet มีดังนี้

ดูข้อมูลเพิ่มเติมเกี่ยวกับ Android Sharesheet และวิธีการใช้งานได้ที่ส่งข้อมูลอย่างง่ายไปยังแอปอื่นๆ

ระบุเป้าหมายการแชร์โดยตรงเพื่อให้ผู้ใช้แอปอื่นๆ แชร์ URL, รูปภาพ หรือข้อมูลประเภทอื่นๆ กับแอปของคุณได้ง่ายและรวดเร็วขึ้น การแชร์โดยตรงจะทำงานโดยการนำเสนอรายชื่อติดต่อจากแอปรับส่งข้อความและแอปโซเชียลในหน้าจอแชร์ของ Android โดยตรง โดยที่ผู้ใช้ไม่ต้องเลือกแอปแล้วค้นหารายชื่อติดต่อ

รองรับการรับเนื้อหาอย่างละเอียดผ่าน OnReceiveContentListener API นี้ช่วยให้โค้ดของคุณจัดการการรับเนื้อหาทั้งหมดได้ในที่เดียว ตั้งแต่ข้อความธรรมดาและข้อความที่มีการจัดรูปแบบ ไปจนถึงมาร์กอัป รูปภาพ วิดีโอ ไฟล์เสียง และอื่นๆ เนื้อหาอาจมาจากรูปภาพ แป้นพิมพ์ การลากและวาง หรือคลิปบอร์ด

แชร์ไฟล์สื่อ

Intents มีข้อมูลได้เพียงเล็กน้อยเท่านั้น Android จึงมีวิธีให้ Intents มีแฮนเดิลที่ปลอดภัยสำหรับไฟล์ การแชร์ไฟล์สื่ออย่างปลอดภัยจากแอปของคุณเกี่ยวข้องกับสิ่งต่อไปนี้

ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีแชร์ไฟล์อย่างปลอดภัยได้ที่เกี่ยวกับการแชร์ไฟล์

เพิ่มประสิทธิภาพสื่อเพื่อการแชร์

ไม่ว่าคุณจะแชร์สื่อกับผู้ใช้รายอื่นในแอปหรือแชร์สื่อกับแอปอื่น คุณต้องตรวจสอบว่าคุณแชร์สื่อที่มอบประสบการณ์การแชร์คุณภาพสูง

สร้างความสมดุลระหว่างคุณภาพและขนาด

ไฟล์สื่อขนาดใหญ่อาจใช้แบนด์วิดท์และพื้นที่จัดเก็บอย่างรวดเร็ว ซึ่งทำให้ ความล่าช้าและค่าบริการข้อมูลที่อาจมากเกินไปสำหรับผู้ใช้ของคุณ การบีบอัดคือเพื่อนที่ดีที่สุดของคุณ

  • การบีบอัดรูปภาพ: ใช้รูปแบบการบีบอัดรูปภาพสมัยใหม่ เช่น 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 เขียนข้อมูลเมตาเป็นไฟล์ JPEG, PNG และ WebP รูปภาพในรูปแบบแท็ก 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()