ภาพรวมฟีเจอร์และ 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 Components

Material You

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

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

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

การแทรกเนื้อหาแบบริชมีเดีย

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

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

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

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

API มุมโค้งมน

Android 12 ขอแนะนำ RoundedCorner และ WindowInsets.getRoundedCorner(int position) ซึ่งระบุรัศมีและจุดกึ่งกลางสำหรับมุมโค้ง

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

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

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

เอฟเฟกต์แอคทูเอเตอร์

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

เอฟเฟกต์การสั่นที่เชื่อมโยงกับเสียง

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

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

AppSearch

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

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

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

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

โหมดเกม

Game Mode 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 ควรพิจารณา ทางเลือกอื่นที่อาจเหมาะสมกว่าสำหรับกรณีการใช้งานของตน เช่น ภาพซ้อนภาพหรือ บับเบิล

Known signers permission protection flag

ตั้งแต่ 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) สำหรับการเข้ารหัสวิดีโอ ซึ่งช่วยให้นักพัฒนาแอป หลีกเลี่ยงโค้ดเฉพาะของผู้ให้บริการได้

คีย์ใหม่พร้อมใช้งานใน API ของ MediaFormat และใน ไลบรารีสื่อ NDK

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

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

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

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

การอัปเดต MediaDrm

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

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

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

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

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

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

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

ใน Android 12 เป็นต้นไป คุณจะเข้าถึงไฟล์ Tombstone ของข้อขัดข้องดั้งเดิมของแอปได้ในรูปแบบ Protocol Buffer ผ่านเมธอด ApplicationExitInfo.getTraceInputStream() Protocol Buffer จะได้รับการซีเรียลไลซ์โดยใช้สคีมานี้ ก่อนหน้านี้ วิธีเดียวในการเข้าถึงข้อมูลนี้คือผ่าน 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 เราได้ขยาย API ของ NDK ImageDecoder เพื่อถอดรหัสเฟรมทั้งหมดและข้อมูลเวลาจากรูปภาพ ที่ใช้รูปแบบไฟล์ GIF แบบเคลื่อนไหวและ WebP แบบเคลื่อนไหว เมื่อเปิดตัวใน Android 11 API นี้จะถอดรหัสเฉพาะรูปภาพแรกจาก ภาพเคลื่อนไหวในรูปแบบเหล่านี้

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

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

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

การปลุกแอปที่ใช้ร่วมกันให้ทำงานอยู่เสมอ

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

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

หากต้องการใช้ API อุปกรณ์ต้องเชื่อมต่อโดยใช้ Companion Device Manager ดูข้อมูลเพิ่มเติมได้ที่ CompanionDeviceManager.startObservingDevicePresence() และ CompanionDeviceService.onDeviceAppeared()

โปรไฟล์ Companion Device Manager

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

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

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

ดูข้อมูลเพิ่มเติมได้ที่ AssociationRequest.Builder.setDeviceProfile()

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

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

การปรับปรุง Wi-Fi Aware (NAN)

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

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

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

เราได้เพิ่มไลบรารีหลักต่อไปนี้ใน 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