ภาพรวมฟีเจอร์และ API

Android 12 เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาซอฟต์แวร์ ส่วนด้านล่างจะช่วยให้คุณเรียนรู้เกี่ยวกับฟีเจอร์สำหรับแอปและเริ่มต้นใช้งาน กับ API ที่เกี่ยวข้อง

สำหรับรายการโดยละเอียดของ API ใหม่ ที่มีการแก้ไข และที่นำออก โปรดอ่านความแตกต่างของ API รายงาน สำหรับรายละเอียดเกี่ยวกับ API ใหม่ โปรดไปที่ Android การอ้างอิง API — API ใหม่จะมีการไฮไลต์เพื่อแสดงการเปิดเผย และเพื่อ ดูข้อมูลเกี่ยวกับส่วนที่การเปลี่ยนแปลงแพลตฟอร์มอาจส่งผลกระทบต่อแอปของคุณ การเปลี่ยนแปลงลักษณะการทำงานของ Android 12 สำหรับแอปที่กำหนดเป้าหมาย Android 12 และสำหรับทุกคน

ประสบการณ์ของผู้ใช้

Material You

Android 12 เปิดตัวภาษาการออกแบบใหม่ที่มีชื่อว่า Material คุณช่วยสร้าง แอปที่สวยงามและปรับเปลี่ยนในแบบของคุณมากขึ้น เพื่อนำดีไซน์ Material ล่าสุดทั้งหมด 3 อัปเดตลงในแอปของคุณ ลองใช้ Material Design เวอร์ชันอัลฟ่า คอมโพเนนต์

Material You

การปรับปรุงวิดเจ็ต

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

ดูการปรับปรุงวิดเจ็ต Android 12 สำหรับ ข้อมูลเพิ่มเติม

การแทรก Rich Content

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

ดูข้อมูลเพิ่มเติมได้ที่รับริชมีเดีย เนื้อหา

API สำหรับหน้าจอเริ่มต้นของแอป

Android 12 นำเสนอภาพเคลื่อนไหวการเปิดตัวแอปแบบใหม่สำหรับทุกแอปที่มี การเคลื่อนไหวในแอปตั้งแต่ช่วงเปิดตัว หน้าจอแนะนำที่แสดงไอคอนแอป และการเปลี่ยนมาใช้ตัวแอปเอง ดูนักพัฒนาแอปหน้าจอเริ่มต้น (Splash Screen) สำหรับรายละเอียดเพิ่มเติม

API มุมมน

Android 12 เปิดตัว RoundedCorner และ WindowInsets.getRoundedCorner(int position) ซึ่งระบุรัศมีและจุดศูนย์กลางสำหรับมุมโค้ง

โปรดดูข้อมูลเพิ่มเติมที่มุมโค้งมน

ประสบการณ์การโต้ตอบการสัมผัสที่สมบูรณ์

Android 12 เพิ่มเครื่องมือในการสร้างการตอบสนองแบบรู้สึกได้ที่ให้ข้อมูลสำหรับ UI เอฟเฟกต์ที่สมจริงและน่าเพลิดเพลินสำหรับการเล่นเกม และการโต้ตอบการสัมผัสสำหรับ ประสิทธิภาพการทำงาน

เอฟเฟกต์ตัวเปิด

Android 12 เพิ่มเอฟเฟกต์ที่สื่ออารมณ์ชัดเจนเช่น low เลือกที่ ใช้ประโยชน์จากแบนด์วิดท์ความถี่ที่กว้างขึ้นของแอคชูเอเตอร์ล่าสุด เกม ตอนนี้นักพัฒนาซอฟต์แวร์สามารถเข้าถึง แอคซูเอเตอร์อย่างอิสระในเกม ตัวควบคุมเพื่อให้เอฟเฟกต์แบบซิงโครนัสหรือเอฟเฟกต์แบบรู้สึกได้ที่แตกต่างกัน กับแอคชูเอเตอร์หลายตัว สำหรับนักพัฒนาซอฟต์แวร์ เราขอแนะนำให้ใช้ ค่าคงที่และ พื้นฐานเป็น องค์ประกอบที่ใช้สร้างสรรค์สำหรับเอฟเฟกต์การโต้ตอบแบบรู้สึกได้สมบูรณ์ ซึ่งก็คือค่าคงที่ที่จะเพิ่มประสิทธิภาพเหตุการณ์ UI และ Haptic Composer ในลำดับ ประเภทพื้นฐานเพื่อสร้างเอฟเฟกต์ที่ซับซ้อนมากขึ้น API เหล่านี้พร้อมให้ลองใช้ใน Pixel 4 และเรากำลังทำงานร่วมกับพาร์ทเนอร์ผู้ผลิตอุปกรณ์เพื่อ ซึ่งเป็นการรองรับการโต้ตอบการสัมผัสล่าสุดสำหรับผู้ใช้ทั่วทั้งระบบนิเวศ

เอฟเฟกต์การโต้ตอบแบบรู้สึกได้แบบคู่ต่อเสียง

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

โปรดดูHapticGenerator สำหรับข้อมูลเพิ่มเติม

การค้นหาแอป

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

แผนภาพแสดงการจัดทำดัชนีและการค้นหาภายใน AppSearch

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

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

โหมดเกม

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

สำหรับข้อมูลเพิ่มเติม โปรดดูที่โหมดเกม

คำแนะนำและการปรับปรุงการแสดงภาพซ้อนภาพ (PIP)

Android 12 มีการปรับปรุงต่อไปนี้สำหรับโหมด PIP

รองรับท่าทางสัมผัส PIP ใหม่

Android 12 รองรับการซ้อนและบีบเพื่อซูมแล้ว ท่าทางสัมผัสสำหรับ PIP กรอบเวลา:

  • หากต้องการซ่อนหน้าต่าง ผู้ใช้สามารถลากหน้าต่างไปทางซ้ายหรือขวา หากต้องการยกเลิกการเก็บหน้าต่าง ผู้ใช้สามารถแตะส่วนที่ปรากฏของ หน้าต่างที่ซ่อนหรือลากออก

  • ตอนนี้ผู้ใช้ปรับขนาดหน้าต่าง PIP ได้โดยใช้การบีบนิ้วเพื่อซูมแล้ว

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

ฟีเจอร์เหล่านี้มีดังต่อไปนี้

การแจ้งเตือนสายเรียกเข้าแบบใหม่ช่วยจัดอันดับความสำคัญของสายเรียกเข้า

Android 12 เพิ่มรูปแบบการแจ้งเตือนแบบใหม่แล้ว Notification.CallStyle สำหรับการโทรศัพท์ การใช้เทมเพลตนี้จะช่วยให้แอประบุความสำคัญของ สายที่ใช้งานอยู่ด้วยการแสดงชิปที่โดดเด่นซึ่งแสดงเวลาของการโทร แถบสถานะ ผู้ใช้ก็จะแตะชิปนี้เพื่อกลับไปที่การโทรได้

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

ใช้โค้ดต่อไปนี้สำหรับการโทรทุกประเภท

Kotlin

// Create a new call with the user as caller.
val incoming_caller = Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build()

Java

// Create a new call with the user as caller.
Person incoming_caller = new Person.Builder()
    .setName("Jane Doe")
    .setImportant(true)
    .build();

ใช้ forIncomingCall() เพื่อสร้างการแจ้งเตือนรูปแบบการโทรสำหรับสายเรียกเข้า

Kotlin

// Create a call style notification for an incoming call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller)

Java

// Create a call style notification for an incoming call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent))
    .addPerson(incoming_caller);

ใช้ forOngoingCall() เพื่อสร้างการแจ้งเตือนรูปแบบการโทรสำหรับสายที่สนทนาอยู่

Kotlin

// Create a call style notification for an ongoing call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller)

Java

// Create a call style notification for an ongoing call.
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forOnGoingCall(caller, hangupIntent))
    .addPerson(second_caller);

ใช้ forScreeningCall() เพื่อสร้างการแจ้งเตือนรูปแบบการโทรสำหรับการสกรีนสายเรียกเข้า

Kotlin

// Create a call style notification for screening a call.
val builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
         Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller)

Java

Notification.Builder builder = Notification.Builder(context, CHANNEL_ID)
    .setContentIntent(contentIntent)
    .setSmallIcon(smallIcon)
    .setStyle(
        Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent))
    .addPerson(second_caller);

การสนับสนุนรูปภาพที่สมบูรณ์สำหรับการแจ้งเตือน

ใน Android 12 ตอนนี้คุณยกระดับประสบการณ์การแจ้งเตือนของแอปได้แล้วโดย ให้บริการภาพเคลื่อนไหวใน MessagingStyle() และ BigPictureStyle() การแจ้งเตือน นอกจากนี้ แอปของคุณยังอนุญาตให้ผู้ใช้ส่งข้อความรูปภาพได้เมื่อ ตอบกลับข้อความจากหน้าต่างแจ้งเตือน

การปรับปรุงโหมดสมจริงสำหรับการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัส

Android 12 รวมพฤติกรรมที่มีอยู่เพื่อช่วยให้ผู้ใช้ทำสิ่งต่างๆ ได้ง่ายขึ้น ใช้คำสั่งการนำทางด้วยท่าทางสัมผัสขณะอยู่ในโหมดสมจริง โหมด ใน นอกจากนี้ Android 12 ยังมีลักษณะความเข้ากันได้แบบย้อนหลังสำหรับ Sticky สมจริง โหมด

การแชร์ URL ล่าสุด (Pixel เท่านั้น)

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

โปรดดูข้อมูลเพิ่มเติมที่เปิดใช้ URL ล่าสุด การแชร์

ความปลอดภัยและความเป็นส่วนตัว

แดชบอร์ดความเป็นส่วนตัว

วันที่ เส้นควบคุมเวลาแนวตั้งจะแสดงแอปต่างๆ ที่มี
         มีการเข้าถึงข้อมูลตำแหน่ง และเวลาที่การเข้าถึงเกิดขึ้น
รูปที่ 1 หน้าจอการใช้งานตำแหน่ง ซึ่งเป็นส่วนหนึ่งของ "ความเป็นส่วนตัว" แดชบอร์ด

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

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

สิทธิ์การใช้บลูทูธ

Android 12 เปิดตัว BLUETOOTH_SCAN BLUETOOTH_ADVERTISE, และ BLUETOOTH_CONNECT สิทธิ์ สิทธิ์เหล่านี้จะช่วยให้แอปที่กำหนดเป้าหมาย Android 12 เพื่อโต้ตอบกับบลูทูธ อุปกรณ์ โดยเฉพาะสำหรับแอปที่ไม่ ต้องเข้าถึงตำแหน่งของอุปกรณ์

อัปเดตการประกาศสิทธิ์เข้าถึงบลูทูธของแอป

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

การค้นหากลุ่มสิทธิ์

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

  • ในการพิจารณากลุ่มสิทธิ์ที่ระบบได้วาง สิทธิ์ที่กำหนดโดยแพลตฟอร์ม, การเรียกใช้ getGroupOfPlatformPermission()
  • กำหนดสิทธิ์ที่แพลตฟอร์มกำหนดให้กับระบบ กลุ่มสิทธิ์ที่กำหนด getPlatformPermissionsForGroup()

ซ่อนหน้าต่างที่วางซ้อนของแอปพลิเคชัน

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

หลังจากประกาศ HIDE_OVERLAY_WINDOWS สิทธิ์ แอปสามารถเรียก setHideOverlayWindows() เพื่อระบุว่าหน้าต่างทุกประเภท TYPE_APPLICATION_OVERLAY ควรซ่อนไว้เมื่อหน้าต่างของแอปปรากฏ แอปอาจเลือกที่จะทำ เมื่อแสดงหน้าจอที่มีความละเอียดอ่อน เช่น ขั้นตอนยืนยันธุรกรรม

แอปที่แสดงหน้าต่างประเภท TYPE_APPLICATION_OVERLAY ควรพิจารณา ทางเลือกที่อาจเหมาะสมกับ Use Case มากกว่า เช่น การแสดงภาพซ้อนภาพ หรือ ลูกโป่ง

แฟล็กการป้องกันสิทธิ์ของผู้ลงนามที่รู้จัก

เริ่มตั้งแต่ Android 12 เป็นต้นไป knownCerts สำหรับ สิทธิ์ระดับลายเซ็น ช่วยให้คุณสามารถอ้างอิงถึงเนื้อหาโดยรวมของ การลงนามที่ทราบ ใบรับรอง ณ การประกาศ

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

เอกสารรับรองพร็อพเพอร์ตี้อุปกรณ์

Android 12 ขยายชุดแอปที่สามารถยืนยันคุณสมบัติของอุปกรณ์ที่ อยู่ในเอกสารรับรอง ใบรับรอง เมื่อแอปเหล่านี้สร้างคีย์ใหม่

สำหรับ Android 9 (API ระดับ 28) นโยบายด้านอุปกรณ์ (DPO) ที่ใช้ Keymaster 4.0 ขึ้นไป โปรดยืนยันคุณสมบัติของอุปกรณ์ในใบรับรองของเอกสารรับรองเหล่านี้ จะเริ่มต้นใน Android 12 แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปจะทํางานได้ การยืนยันนี้โดยใช้ setDevicePropertiesAttestationIncluded()

พร็อพเพอร์ตี้อุปกรณ์ที่สร้างขึ้นมีดังต่อไปนี้ Build ช่อง:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

การดำเนินการแจ้งเตือนหน้าจอล็อกที่ปลอดภัย

เริ่มตั้งแต่ Android 12 คลาส Notification.Action.Builder รองรับ setAuthenticationRequired() ซึ่งทำให้แอปของคุณกําหนดให้อุปกรณ์ ปลดล็อกอยู่ ก่อนที่แอปจะเรียกใช้การดำเนินการแจ้งเตือนหนึ่งๆ วิธีการนี้จะช่วยเพิ่ม การรักษาความปลอดภัยอีกขั้นให้กับการแจ้งเตือนในอุปกรณ์ที่ล็อก

สตริงที่แปลได้สำหรับ BiometricPrompt

Android 12 เปิดตัว API ใหม่เพื่อช่วยคุณปรับปรุงข้อมูลไบโอเมตริกของแอป การตรวจสอบสิทธิ์ของผู้ใช้ BiometricManager.Strings ใหม่ คลาสที่ซ้อนกันจะรวม getButtonLabel() getPromptMessage(), และ getSettingName() ซึ่งช่วยให้แอปของคุณเรียกป้ายกำกับปุ่มที่ผู้ใช้อ่านได้และได้รับการแปล ข้อความแจ้งหรือชื่อการตั้งค่าแอป ใช้ป้ายกำกับเหล่านี้เพื่อสร้างข้อมูลที่แม่นยำมากขึ้น วิธีการที่แสดงให้ผู้ใช้เห็นโดยเฉพาะสำหรับการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก ที่ใช้ เช่น "ใช้การปลดล็อกด้วยใบหน้า" หรือ "ใช้ลายนิ้วมือเพื่อดำเนินการต่อ"

การตรวจหาฟิชชิงในแอปรับส่งข้อความ (Pixel เท่านั้น)

วันที่
ผู้ใช้เห็นข้อความลักษณะนี้เมื่อพบข้อความที่น่าสงสัย แล้วตรวจพบ

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

  • คำขอที่น่าสงสัย เช่น ส่งรหัส เงิน หรือคำขอที่คล้ายกัน
  • URL ที่ไม่น่าเชื่อถือ
  • ไฟล์แนบที่เป็นอันตราย
  • ลิงก์ไปยังแอปที่เป็นอันตราย

นอกเหนือจากการเตือนผู้ใช้แล้ว โฆษณาซ้อนทับยังให้ผู้ใช้รายงาน ข้อความที่น่าสงสัยและแสดงความคิดเห็นเกี่ยวกับคำเตือนที่ระบบออก

นักพัฒนาแอปสามารถเลือกไม่ใช้ฟีเจอร์นี้ได้โดยเพิ่มแท็กข้อมูลเมตาใหม่ ได้แก่ สตริง com.google.android.ALLOW_PHISHING_DETECTION ในไฟล์ Manifest ของแอป เช่น

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

สื่อ

การแปลงสื่อที่เข้ากันได้

ตั้งแต่ Android 12 (API ระดับ 31) ระบบจะแปลงรหัสได้โดยอัตโนมัติ HEVC(H.265) และ HDR (HDR10 และ HDR10+) วิดีโอที่บันทึกไว้ในอุปกรณ์ไปยัง AVC (H.264) ซึ่งเป็นรูปแบบที่ใช้กันอย่างกว้างขวาง ใช้ได้กับโปรแกรมเล่นแบบมาตรฐาน ซึ่งจะใช้ประโยชน์จากตัวแปลงรหัสสมัยใหม่เมื่อ ก็พร้อมใช้งานโดยไม่ต้องแลกกับความสามารถในการใช้งานร่วมกันกับแอปพลิเคชันรุ่นเก่าๆ

ดูรายละเอียดเพิ่มเติมได้ที่การแปลงสื่อที่เข้ากันได้

ระดับประสิทธิภาพ

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

ดูระดับประสิทธิภาพ เพื่อดูรายละเอียดเพิ่มเติม

การปรับปรุงการเข้ารหัสวิดีโอ

Android 12 กำหนดชุดคีย์มาตรฐานสำหรับการควบคุม พารามิเตอร์ปริมาณ (QP) สำหรับการเข้ารหัสวิดีโอ ทำให้นักพัฒนาซอฟต์แวร์ หลีกเลี่ยงการใช้รหัสเฉพาะผู้ให้บริการ

คีย์ใหม่จะอยู่ใน MediaFormat API และในส่วน คลังสื่อ NDK

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

โฟกัสอัตโนมัติ

และตั้งแต่ Android 12 (API ระดับ 31) เมื่อแอปขอโฟกัสเสียง อีกแอปหนึ่งมีโฟกัสและกำลังเล่นอยู่ ทำให้แอปที่เล่นนั้นค่อยๆ จางลง

โปรดดูหัวข้อการโฟกัสเสียงใน Android 12 ขึ้นไป เพื่อดูรายละเอียดเพิ่มเติม

ข้อมูลอัปเดต MediaDrm

เพื่อระบุว่าจำเป็นต้องใช้คอมโพเนนต์ตัวถอดรหัสที่ปลอดภัยพร้อมกับ API ของ MediaDrm ในปัจจุบัน คุณต้องทำตามขั้นตอนต่อไปนี้

  1. สร้าง MediaDrm
  2. เปิดเซสชันเพื่อรับรหัสเซสชัน
  3. สร้าง MediaCrypto โดยใช้รหัสเซสชัน
  4. โทร MediaCrypto.requiresSecureDecoderComponent(mimeType)

ด้วยวิธีใหม่ requiresSecureDecoder(@NonNull String mime) และ วันที่ requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) คุณจะทราบได้ทันทีเมื่อสร้าง MediaDrm

กล้อง

ส่วนขยายผู้ให้บริการ Camera2

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

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

สำหรับข้อมูลเพิ่มเติม โปรดดู CameraExtensionCharacteristics

รองรับเซ็นเซอร์กล้อง Quad Bayer

ปัจจุบันอุปกรณ์ Android หลายรุ่นมีเซ็นเซอร์กล้องความละเอียดสูงพิเศษ โดยปกติจะใช้รูปแบบ Quad หรือ Nona Bayer และมีความยืดหยุ่นมาก เกี่ยวกับคุณภาพของรูปและประสิทธิภาพในสภาวะแสงน้อย Android 12 เปิดตัวฟีเจอร์ใหม่ API ของแพลตฟอร์มที่ช่วยให้แอปของบุคคลที่สามใช้ประโยชน์จากเครื่องมืออเนกประสงค์เหล่านี้ได้อย่างเต็มที่ เซ็นเซอร์ API ใหม่ รองรับพฤติกรรมที่เฉพาะตัวของเซ็นเซอร์เหล่านี้ และคำนึงถึงว่า อาจรองรับการกำหนดค่าสตรีมและชุดค่าผสมที่แตกต่างกันเมื่อดำเนินงานใน ความละเอียดเต็มหรือโหมด "ความละเอียดสูงสุด" เทียบกับโหมด "เริ่มต้น"

กราฟิกและรูปภาพ

อนุญาตให้แอปเข้าถึงการติดตาม Tombstone ได้โดยตรง

ตั้งแต่ Android 12 เป็นต้นไป คุณสามารถเข้าถึง Tombstone ข้อขัดข้องแบบเนทีฟของแอปในฐานะ บัฟเฟอร์โปรโตคอลผ่าน ApplicationExitInfo.getTraceInputStream() บัฟเฟอร์โปรโตคอลจะได้รับการทำให้เป็นอนุกรมโดยใช้สคีมานี้ ก่อนหน้านี้ วิธีเดียวที่จะเข้าถึงข้อมูลนี้คือผ่านทาง Android Debug Bridge (adb)

ดูข้อมูลเพิ่มเติมได้ที่ให้แอปเข้าถึงการติดตาม Tombstone โดยตรง

รองรับอิมเมจ AVIF

Android 12 รองรับรูปภาพที่ใช้รูปแบบไฟล์ภาพ AV1 (AVIF) AVIF คือรูปแบบคอนเทนเนอร์สำหรับรูปภาพและลำดับของรูปภาพที่เข้ารหัส ที่ใช้ AV1 AVIF ใช้ประโยชน์จากเนื้อหาที่เข้ารหัสภายในเฟรมจากวิดีโอ การบีบอัด การดำเนินการนี้จะช่วยปรับปรุงคุณภาพของรูปได้อย่างมากสำหรับไฟล์เดียวกัน เมื่อเทียบกับรูปแบบรูปภาพเก่าๆ เช่น JPEG สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ ประโยชน์ของรูปแบบนี้ โปรดดูบล็อกของ Jake Archibald โพสต์

เบลอภาพ ฟิลเตอร์สี และเอฟเฟกต์อื่นๆ ได้ง่ายขึ้น

Android 12 เพิ่ม RenderEffect ใหม่ ที่ใช้เอฟเฟกต์กราฟิกทั่วไป เช่น การเบลอ ฟิลเตอร์สี เฉดสี Android เอฟเฟกต์ และอื่นๆ อีกมากมายใน View และลำดับชั้นการแสดงผล สามารถใช้เอฟเฟกต์รวมกันเป็นเอฟเฟกต์ลูกโซ่แบบใดแบบหนึ่งได้ (ซึ่งมีเอฟเฟกต์ด้านในและด้านนอก) หรือเอฟเฟกต์ผสม Android รุ่นอื่น อุปกรณ์อาจสนับสนุนฟีเจอร์นี้หรือไม่ก็ได้ เนื่องจากกำลังในการประมวลผลมีจำกัด

คุณยังใช้เอฟเฟกต์กับ RenderNode ที่เกี่ยวข้องได้ เป็นเวลา View โดยโทรไปที่ View.setRenderEffect(RenderEffect)

วิธีใช้ RenderEffect

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

การถอดรหัสภาพเคลื่อนไหวแบบเนทีฟ

ใน Android 12 NDK ImageDecoder ขยาย API แล้ว เพื่อถอดรหัสเฟรมและข้อมูลเวลาทั้งหมดจากรูปภาพ ที่ใช้ GIF แบบเคลื่อนไหวและ รูปแบบไฟล์ WebP แบบเคลื่อนไหว เมื่อใด ซึ่งเปิดตัวไปใน Android 11 โดย API นี้จะถอดรหัสเฉพาะรูปภาพแรกจาก ภาพเคลื่อนไหวในรูปแบบเหล่านี้

ใช้ ImageDecoder แทนไลบรารีของบุคคลที่สามเพื่อลด APK เพิ่มเติม ขนาด และได้รับประโยชน์จากการอัปเดตที่เกี่ยวข้องกับความปลอดภัยและประสิทธิภาพในอนาคต

ดูรายละเอียดเพิ่มเติมเกี่ยวกับ API ได้ที่เอกสารอ้างอิง API และตัวอย่างใน GitHub

การเชื่อมต่อ

การทำให้แอปที่ใช้ร่วมกันทำงานตลอดเวลา

หากต้องการรองรับความต้องการแอปที่ใช้ร่วมกันเพื่อให้อุปกรณ์ทำงานต่อไปเพื่อจัดการอุปกรณ์ได้ Android 12 เปิดตัว API ที่ทำสิ่งต่อไปนี้

  • ช่วยให้คุณสามารถปลุกแอปเมื่ออุปกรณ์ที่ใช้ร่วมกันอยู่ในระยะสัญญาณ
  • รับประกันว่ากระบวนการจะทำงานต่อขณะที่อุปกรณ์อยู่ภายใน

หากต้องการใช้ API อุปกรณ์ของคุณต้องเชื่อมต่อโดยใช้อุปกรณ์ที่ใช้ร่วมกัน ผู้จัดการ สำหรับข้อมูลเพิ่มเติม ดูข้อมูลได้ที่ CompanionDeviceManager.startObservingDevicePresence() และ CompanionDeviceService.onDeviceAppeared()

โปรไฟล์โปรแกรมจัดการอุปกรณ์ที่ใช้ร่วมกัน

วันที่
กล่องโต้ตอบสิทธิ์ที่ใช้โปรไฟล์อุปกรณ์ที่ใช้ร่วมกันเพื่อ ขอสิทธิ์หลายรายการในคำขอเดียว

แอปพาร์ทเนอร์ใน Android 12 (API ระดับ 31) ขึ้นไปจะใช้อุปกรณ์ที่ใช้ร่วมกันได้ โปรไฟล์เมื่อเชื่อมต่อนาฬิกา การใช้โปรไฟล์จะช่วยให้การลงทะเบียนง่ายขึ้น ด้วยการรวมการให้สิทธิ์ชุดสิทธิ์เฉพาะประเภทอุปกรณ์ ในขั้นตอนเดียว

สิทธิ์ที่อยู่ในแพ็กเกจจะให้แก่แอปที่ใช้ร่วมกันเมื่ออุปกรณ์ เชื่อมต่อได้ และจะใช้ได้ก็ต่อเมื่อเชื่อมต่ออุปกรณ์ ลบแอปหรือ การนำการเชื่อมโยงออกจะเป็นการนำสิทธิ์นั้นออก

สำหรับข้อมูลเพิ่มเติม โปรดดู AssociationRequest.Builder.setDeviceProfile()

การปรับปรุงการประมาณแบนด์วิดท์

ใน Android 12 ความสามารถในการประมาณแบนด์วิดท์ที่ได้จาก getLinkDownstreamBandwidthKbps() และ getLinkUpstreamBandwidthKbps() ได้รับการปรับปรุงทั้งสำหรับการเชื่อมต่อ Wi-Fi และเครือข่ายมือถือ ค่าที่แสดงผลในขณะนี้ แสดงอัตราการส่งข้อมูลเฉลี่ยที่ถ่วงน้ำหนักตลอดเวลาของผู้ใช้ต่อผู้ให้บริการหรือ Wi-Fi SSID, ประเภทเครือข่าย และระดับสัญญาณในแอปพลิเคชันทั้งหมดในอุปกรณ์ ซึ่งจะทำให้ได้ค่าประมาณของอัตราการส่งข้อมูลที่คาดหวังที่แม่นยำและสมเหตุสมผลมากขึ้น ให้ค่าประมาณเมื่อเริ่มต้นแอปพลิเคชันแบบ Cold Start และใช้เวลาน้อยกว่า เมื่อเปรียบเทียบกับการใช้วิธีการประมาณอัตราการส่งข้อมูลอื่นๆ

การเพิ่มประสิทธิภาพ Wi-Fi Aware (NAN)

Android 12 เพิ่มการเพิ่มประสิทธิภาพบางอย่างใน Wi-Fi Aware ดังนี้

  • ในอุปกรณ์ที่ใช้ Android 12 (API ระดับ 31) ขึ้นไป คุณสามารถใช้ onServiceLost() เพื่อรับการแจ้งเตือนเมื่อแอปของคุณสูญเสียบริการที่ค้นพบเนื่องจาก บริการหยุดทำงานหรือย้ายออกจากช่วง
  • วิธีตั้งค่าเส้นทางข้อมูลหลายรายการ (เส้นทางข้อมูล NAN) จะเปลี่ยนเป็น มีประสิทธิภาพมากขึ้น เวอร์ชันก่อนหน้าใช้การรับส่งข้อความ L2 เพื่อแลกเปลี่ยนกับแอปเทียบเท่า ข้อมูลของผู้เริ่ม ซึ่งทำให้เกิดเวลาในการตอบสนอง ในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปสามารถกำหนดค่าผู้ตอบ (เซิร์ฟเวอร์) ได้ เพื่อรับผู้เข้าร่วมคนอื่นๆ กล่าวคือ ไม่จำเป็นต้องรู้จักผู้เริ่ม ข้อมูลอย่างตรงไปตรงมา วิธีนี้ช่วยเพิ่มความเร็วในการเรียกใช้ Datapath และช่วยให้ ลิงก์แบบจุดต่อจุดที่มีคำขอเครือข่ายเพียงรายการเดียว
  • หากต้องการป้องกันไม่ให้เฟรมเวิร์กปฏิเสธคำขอการค้นพบหรือการเชื่อมต่อที่ครบกำหนด ในอุปกรณ์ที่ใช้ Android 12 และ สูงขึ้น คุณก็สามารถโทรหา WifiAwareManager.getAvailableAwareResources() ค่าส่งกลับของวิธีการนี้จะช่วยให้คุณได้จำนวนข้อมูลที่ใช้ได้ เส้นทาง จำนวนเซสชันการเผยแพร่ที่ใช้ได้ และจำนวนเส้นทาง เซสชันการติดตาม

การเชื่อมต่อแบบเพียร์ทูเพียร์ + อินเทอร์เน็ตพร้อมกัน

เมื่ออุปกรณ์ที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปทำงานในอุปกรณ์ที่มี การสนับสนุนฮาร์ดแวร์ โดยใช้เพียร์ทูเพียร์ การเชื่อมต่อจะไม่ยกเลิกการเชื่อมต่อ การเชื่อมต่อ Wi-Fi ที่มีอยู่เมื่อสร้างการเชื่อมต่อกับอุปกรณ์เพียร์ ถึง ดูการสนับสนุนสำหรับฟีเจอร์นี้ WifiManager.isMultiStaConcurrencySupported()

เปิดใช้การปิดหน้าจอสำหรับการชำระเงิน NFC

ในแอปที่กำหนดเป้าหมายเป็น Android 12 ขึ้นไป คุณจะเปิดใช้ NFC ได้ การชำระเงินโดยไม่ต้องเปิดหน้าจอของอุปกรณ์โดยการตั้งค่า requireDeviceScreenOn ถึง false ดูข้อมูลเพิ่มเติมเกี่ยวกับการชำระเงิน NFC ขณะปิดหน้าจอหรือล็อกอยู่ได้ที่ ปิดหน้าจอและล็อกหน้าจอ พฤติกรรมของผู้ใช้

พื้นที่เก็บข้อมูล

Android 12 ขอแนะนำการจัดการพื้นที่เก็บข้อมูลดังต่อไปนี้ ความสามารถ:

ฟังก์ชันหลัก

การอัปเดตแอปอัตโนมัติ

Android 12 เปิดตัว setRequireUserAction() สำหรับแอปที่ใช้ PackageInstaller API วิธีนี้ทำให้แอปของผู้ติดตั้งสามารถอัปเดตแอปได้โดยไม่ต้องมี เพื่อยืนยันการดำเนินการ

ข้อมูลชิปเซ็ตของอุปกรณ์

Android 12 เพิ่มค่าคงที่ 2 ค่าใน android.os.Build ที่แสดง ผู้ให้บริการชิปเซ็ต SoC และข้อมูลรุ่นผ่านทาง SDK คุณสามารถเรียกดู โดยโทรไปที่ Build.SOC_MANUFACTURER และ Build.SOC_MODEL ตามลำดับ

การอัปเดต Java API หลัก

เราได้เพิ่มสิ่งต่อไปนี้ตามคำขอและการทำงานร่วมกับนักพัฒนาแอป ไลบรารีหลักใน Android 12:

ชั้นเรียน API
java.lang.Deprecated
java.lang.Byte
java.lang.Short
java.lang.Math
java.lang.StrictMath
java.util.Set copyOf()
java.util.Map copyOf()
java.util.List copyOf()
java.time.Duration
java.time.LocalTime