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 เวอร์ชันอัลฟ่า

การปรับปรุงวิดเจ็ต
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 มี 2 รูปแบบ ได้แก่ ดัชนีภายในสำหรับแอปพลิเคชันของคุณที่ใช้ ซึ่งเข้ากันได้กับ Android เวอร์ชันเก่า หรือดัชนีส่วนกลาง ที่ดูแลทั้งระบบใน Android 12 การใช้ดัชนีกลางจะช่วยให้แอปพลิเคชันของคุณอนุญาตให้แสดงข้อมูลใน UI ของระบบได้โดยคอมโพเนนต์อัจฉริยะที่ติดตั้งไว้ล่วงหน้าของระบบ ข้อมูลที่แสดงในส่วนต่างๆ ของ UI ระบบจะขึ้นอยู่กับ OEM นอกจากนี้ แอปพลิเคชันของคุณยังแชร์ข้อมูลกับแอปพลิเคชันอื่นๆ ได้อย่างปลอดภัย เพื่อให้แอปพลิเคชันเหล่านั้นค้นหาข้อมูลดังกล่าวได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับ AppSearch ในคู่มือสำหรับนักพัฒนาซอฟต์แวร์ และเริ่มใช้งานด้วยไลบรารี AppSearch Jetpack ซึ่งมี API ที่ใช้งานง่ายสำหรับนักพัฒนาซอฟต์แวร์ รวมถึงการรองรับโปรแกรมประมวลผลคำอธิบายประกอบ
โหมดเกม
Game Mode API และการแทรกแซงโหมดเกมช่วยให้คุณเพิ่มประสิทธิภาพ การเล่นเกมได้โดยจัดลําดับความสําคัญของลักษณะต่างๆ เช่น ประสิทธิภาพหรือระยะเวลาการใช้งานแบตเตอรี่ ตามการตั้งค่าของผู้ใช้หรือการกําหนดค่าเฉพาะของเกม
ดูข้อมูลเพิ่มเติมได้ที่โหมดเกม
คำแนะนำและการปรับปรุงฟีเจอร์ Picture-in-Picture (PIP)
Android 12 มีการปรับปรุงโหมด PIP ดังนี้
รองรับท่าทางสัมผัส PIP ใหม่
ตอนนี้ Android 12 รองรับท่าทางสัมผัสการซ่อนและบีบนิ้วเพื่อซูมสำหรับหน้าต่าง PIP แล้ว
หากต้องการซ่อนหน้าต่าง ผู้ใช้สามารถลากหน้าต่างไปที่ขอบด้านซ้ายหรือขวา หากต้องการเลิกซ่อนหน้าต่าง ผู้ใช้สามารถแตะส่วนที่มองเห็นของ หน้าต่างที่ซ่อนไว้หรือลากออกมา
ตอนนี้ผู้ใช้สามารถปรับขนาดหน้าต่าง PIP ได้โดยใช้การบีบนิ้วเพื่อซูม
ฟีเจอร์ใหม่ที่แนะนำซึ่งรองรับประสบการณ์การเปลี่ยนภาพในโหมด PIP ที่ราบรื่น
Android 12 ได้เพิ่มการปรับปรุงด้านความสวยงามที่สำคัญ ให้กับการเปลี่ยนภาพเคลื่อนไหว ระหว่างหน้าต่างแบบเต็มหน้าจอและหน้าต่าง PIP เราขอแนะนำเป็นอย่างยิ่ง ให้ใช้การเปลี่ยนแปลงที่เกี่ยวข้องทั้งหมด เมื่อดำเนินการแล้ว การเปลี่ยนแปลงเหล่านี้ จะปรับขนาดให้เข้ากับหน้าจอขนาดใหญ่ เช่น อุปกรณ์พับได้และแท็บเล็ตโดยอัตโนมัติ โดยไม่ต้องดำเนินการใดๆ เพิ่มเติม
ฟีเจอร์เหล่านี้ ได้แก่
Flag ใหม่ของ API เพื่อการเปลี่ยนไปใช้โหมด PIP ด้วยการนำทางด้วยท่าทางสัมผัสที่ราบรื่นยิ่งขึ้น
ใช้ฟีเจอร์
setAutoEnterEnabledเพื่อเปลี่ยนไปใช้โหมด PIP ได้ราบรื่นยิ่งขึ้นเมื่อปัดขึ้นไปที่หน้าแรกใน โหมดการนำทางด้วยท่าทางสัมผัส ก่อนหน้านี้ Android จะรอให้ภาพเคลื่อนไหวของการปัดขึ้นเพื่อกลับไปที่หน้าแรก เสร็จสิ้นก่อนที่จะค่อยๆ แสดงหน้าต่าง PIPภาพเคลื่อนไหวราบรื่นขึ้นเมื่อเข้าและออกจากโหมด PIP
ตอนนี้เราได้นำ
SourceRectHintแฟล็กกลับมาใช้ใหม่เพื่อใช้ภาพเคลื่อนไหวที่ราบรื่นยิ่งขึ้นเมื่อเข้าและออกจาก โหมด PIPFlag API ใหม่เพื่อปิดใช้การปรับขนาดอย่างราบรื่นสำหรับเนื้อหาที่ไม่ใช่วิดีโอ
ฟีเจอร์
SeamlessResizeEnabledช่วยให้ภาพเคลื่อนไหวแบบครอสเฟดราบรื่นขึ้นมากเมื่อปรับขนาดเนื้อหาที่ไม่ใช่วิดีโอ ในหน้าต่าง PIP ก่อนหน้านี้ การปรับขนาดเนื้อหาที่ไม่ใช่วิดีโอในหน้าต่าง 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 ของแท็บล่าสุด
ความปลอดภัยและความเป็นส่วนตัว
แดชบอร์ดความเป็นส่วนตัว
ในอุปกรณ์ที่รองรับซึ่งใช้ 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
BRANDDEVICEMANUFACTURERMODELPRODUCT
การดำเนินการกับการแจ้งเตือนบนหน้าจอล็อกที่ปลอดภัย
ตั้งแต่ Android 12 เป็นต้นไป คลาส Notification.Action.Builder
รองรับเมธอด
setAuthenticationRequired()
ซึ่งช่วยให้แอปกำหนดให้ต้อง
ปลดล็อก
อุปกรณ์ก่อนที่แอปจะเรียกใช้การดำเนินการแจ้งเตือนที่ระบุได้ วิธีนี้จะช่วยเพิ่มความปลอดภัยอีกชั้นให้กับการแจ้งเตือนในอุปกรณ์ที่ล็อก
สตริงที่แปลได้สำหรับ BiometricPrompt
Android 12 เปิดตัว API ใหม่ที่จะช่วยปรับปรุงประสบการณ์ของผู้ใช้ในการตรวจสอบสิทธิ์ข้อมูลไบโอเมตริกของแอป
คลาสใหม่ BiometricManager.Strings
ที่ซ้อนกันมีเมธอด getButtonLabel()
getPromptMessage()
และ getSettingName()
ซึ่งช่วยให้แอปเรียกป้ายกำกับปุ่มที่แปลแล้วและผู้ใช้อ่านได้
ข้อความแจ้ง หรือชื่อการตั้งค่าแอป ใช้ป้ายกำกับเหล่านี้เพื่อสร้างวิธีการที่แม่นยำยิ่งขึ้น
สำหรับผู้ใช้ซึ่งเจาะจงวิธีการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก
ที่ใช้ เช่น "ใช้การปลดล็อกด้วยใบหน้า" หรือ "ใช้ลายนิ้วมือเพื่อดำเนินการต่อ"
สื่อ
การแปลงสื่อเป็นรูปแบบที่เข้ากันได้
ตั้งแต่ 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
หากต้องการพิจารณาว่าต้องใช้คอมโพเนนต์ตัวถอดรหัสที่ปลอดภัยกับ MediaDrmAPI ปัจจุบันหรือไม่ คุณต้องทำตามขั้นตอนต่อไปนี้
- สร้าง
MediaDrm - เปิดเซสชันเพื่อรับรหัสเซสชัน
- สร้าง
MediaCryptoโดยใช้รหัสเซสชัน - โทร
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 เปิดตัวความสามารถในการจัดการพื้นที่เก็บข้อมูลต่อไปนี้
- การรองรับร้านค้าสื่อสำหรับ
MediaDocumentsProviderเมื่อแอปเรียก URI สื่อที่เทียบเท่ากับ URI ของผู้ให้บริการเอกสารที่ระบุ - ไดเรกทอรีสำหรับการบันทึกเสียง
- สิทธิ์
MANAGE_MEDIAซึ่งอนุญาตให้แอปดำเนินการจัดการสื่อ โดยไม่ต้องแสดงกล่องโต้ตอบการยืนยันต่อผู้ใช้สำหรับการดำเนินการแต่ละอย่าง - แอปที่มีทั้งสิทธิ์
MANAGE_EXTERNAL_STORAGEและสิทธิ์QUERY_ALL_PACKAGESเช่น แอปการจัดการไฟล์ จะเรียกใช้ กิจกรรมที่กำหนดเอง เพื่อจัดการพื้นที่เก็บข้อมูลของแอปอื่นได้ โดยแอปอื่นนั้นต้องสร้าง กิจกรรมที่กำหนดเอง
ฟังก์ชันหลัก
การอัปเดตแอปอัตโนมัติ
Android 12 เปิดตัวเมธอด
setRequireUserAction()
สำหรับแอปที่ใช้ API
PackageInstaller
วิธีนี้ช่วยให้แอปโปรแกรมติดตั้งสามารถอัปเดตแอปได้โดยไม่ต้องให้ผู้ใช้ยืนยันการดำเนินการ
ข้อมูลชิปเซ็ตของอุปกรณ์
Android 12 เพิ่มค่าคงที่ 2 รายการลงใน android.os.Build ซึ่งจะแสดง
ข้อมูลผู้จำหน่ายและรุ่นของชิปเซ็ต SoC ผ่าน SDK คุณดูข้อมูลนี้ได้โดยการเรียกใช้ Build.SOC_MANUFACTURER และ Build.SOC_MODEL
ตามลำดับ
การอัปเดต Core 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
|