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

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

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

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

Material You

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

Material You

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

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

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

การแทรก Rich Content

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

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

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

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

API มุมมน

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

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

ประสบการณ์การสัมผัสที่สมจริง

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

เอฟเฟกต์ตัวดำเนินการ

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

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

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

ดูข้อมูลเพิ่มเติมในเอกสารประกอบอ้างอิง HapticGenerator

AppSearch

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 ยังมีลักษณะการทำงานแบบย้อนหลังสำหรับโหมดการแชร์หน้าจอแบบติดแน่น

การแชร์ 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 ควรพิจารณาใช้ตัวเลือกอื่นที่อาจเหมาะกับการใช้งานมากกว่า เช่น การแสดงภาพซ้อนภาพหรือลูกโป่ง

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

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

แอปของคุณสามารถประกาศแอตทริบิวต์นี้และใช้ Flag 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 Media ด้วย

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

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

ดูข้อมูลเพิ่มเติมได้ที่ CameraExtensionCharacteristics

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

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

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

ให้สิทธิ์เข้าถึงร่องรอยการลบออกโดยตรงแก่แอป

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

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

การรองรับรูปภาพ AVIF

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

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

Android 12 เพิ่ม RenderEffect ใหม่ที่ใช้เอฟเฟกต์กราฟิกทั่วไป เช่น เบลอ ฟิลเตอร์สี เอฟเฟกต์ Android Shader และอื่นๆ กับ 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 และเครือข่ายมือถือ ค่าที่แสดงตอนนี้จะแสดงปริมาณข้อมูลเฉลี่ยถ่วงน้ำหนักตลอดกาลของผู้ใช้ต่อผู้ให้บริการหรือ WiFi SSID, ประเภทเครือข่าย และระดับสัญญาณในแอปพลิเคชันทั้งหมดในอุปกรณ์ ซึ่งจะทำให้ได้ค่าประมาณของอัตราการส่งข้อมูลที่คาดหวังที่แม่นยำและสมเหตุสมผลมากขึ้น ให้ค่าประมาณเมื่อ Cold Start ของแอปพลิเคชัน และต้องใช้รอบการทำงานที่น้อยกว่าเมื่อเทียบกับการใช้วิธีการประมาณอัตราการส่งข้อมูลอื่นๆ

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

Android 12 เพิ่มการปรับปรุงบางอย่างให้กับ Wi-Fi Aware ดังนี้

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

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

เมื่ออุปกรณ์ที่กําหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปทํางานในอุปกรณ์ที่รองรับฮาร์ดแวร์ การใช้การเชื่อมต่อแบบ peer-to-peer จะไม่ยกเลิกการเชื่อมต่อ 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