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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • การบีบอัดรูปภาพ: ใช้รูปแบบการบีบอัดรูปภาพที่ทันสมัย เช่น 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()