Android 12 มาพร้อมฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาแอป ส่วนด้านล่างจะช่วยให้คุณทราบข้อมูลเกี่ยวกับฟีเจอร์สำหรับแอปและเริ่มต้นใช้งาน API ที่เกี่ยวข้อง
ดูรายการ 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 ปรับปรุง Widgets API ที่มีอยู่เพื่อปรับปรุงประสบการณ์ของผู้ใช้และนักพัฒนาแอปในแพลตฟอร์มและ Launcher เราได้จัดทำคู่มือเพื่อช่วยคุณตรวจสอบว่าวิดเจ็ตเข้ากันได้กับ Android 12 และอัปเดตวิดเจ็ตด้วยฟีเจอร์ใหม่ๆ
ดูข้อมูลเพิ่มเติมได้ที่การปรับปรุงวิดเจ็ต Android 12
การแทรกข้อมูลอย่างละเอียด
Android 12 เปิดตัว API แบบรวมใหม่ที่ช่วยให้แอปของคุณรับข้อมูลอย่างละเอียดจากแหล่งที่มาที่พร้อมใช้งาน ไม่ว่าจะเป็นคลิปบอร์ด แป้นพิมพ์ หรือการลากและวาง
ดูข้อมูลเพิ่มเติมได้ที่รับข้อมูลอย่างละเอียด
API หน้าจอเริ่มต้น (Splash Screen) ของแอป
Android 12 เปิดตัวภาพเคลื่อนไหวใหม่สำหรับการเปิดแอปทั้งหมด ซึ่งรวมถึงการเคลื่อนไหวเข้าสู่แอปจากจุดที่เปิด หน้าจอเริ่มต้น (Splash Screen) ที่แสดงไอคอนแอป และการเปลี่ยนผ่านไปยังตัวแอปเอง ดูรายละเอียดเพิ่มเติมได้ที่คู่มือนักพัฒนาซอฟต์แวร์เกี่ยวกับหน้าจอเริ่มต้น (Splash Screen)
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 มี 2 รูปแบบ ได้แก่ ดัชนีในเครื่องสำหรับแอปพลิเคชันของคุณที่เข้ากันได้กับ Android เวอร์ชันเก่า หรือดัชนีส่วนกลางที่ดูแลรักษาสำหรับทั้งระบบใน Android 12 เมื่อใช้ดัชนีส่วนกลาง แอปพลิเคชันของคุณจะอนุญาตให้แสดงข้อมูลบนแพลตฟอร์ม UI ของระบบได้โดยคอมโพเนนต์อัจฉริยะที่ติดตั้งไว้ล่วงหน้าของระบบ ข้อมูลที่แสดงบนแพลตฟอร์ม UI ของระบบจะขึ้นอยู่กับ OEM นอกจากนี้ แอปพลิเคชันของคุณยังแชร์ข้อมูลกับแอปพลิเคชันอื่นๆ ได้อย่างปลอดภัย เพื่อให้แอปพลิเคชันเหล่านั้นค้นหาข้อมูลที่แชร์ดังกล่าวได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับ AppSearch ในคู่มือนักพัฒนาซอฟต์แวร์ และเริ่มใช้กับไลบรารี AppSearch Jetpack ซึ่งมีแพลตฟอร์ม API ที่เป็นมิตรกับนักพัฒนาซอฟต์แวร์ รวมถึงการรองรับโปรเซสเซอร์สำหรับคำอธิบายประกอบ
โหมดเกม
Game Mode API และการแทรกแซงโหมดเกมช่วยให้คุณเพิ่มประสิทธิภาพเกมเพลย์ได้โดยจัดลำดับความสำคัญของลักษณะต่างๆ เช่น ประสิทธิภาพหรือระยะเวลาการใช้งานแบตเตอรี่ตามการตั้งค่าของผู้ใช้หรือการกำหนดค่าเฉพาะของเกม
ดูข้อมูลเพิ่มเติมได้ที่โหมดเกม
คำแนะนำและการปรับปรุงการแสดงภาพซ้อนภาพ (PiP)
Android 12 มีการปรับปรุงต่อไปนี้สำหรับโหมด PiP
การรองรับท่าทางสัมผัสใหม่สำหรับ PiP
ตอนนี้ Android 12 รองรับท่าทางสัมผัสเพื่อซ่อนและบีบเพื่อซูมสำหรับหน้าต่าง PiP แล้ว
หากต้องการซ่อนหน้าต่าง ผู้ใช้สามารถลากหน้าต่างไปที่ขอบด้านซ้ายหรือขวา หากต้องการนำหน้าต่างที่ซ่อนไว้ออกมา ผู้ใช้สามารถแตะส่วนที่มองเห็นได้ของหน้าต่างที่ซ่อนไว้หรือลากออกมาก็ได้
ตอนนี้ผู้ใช้สามารถปรับขนาดหน้าต่าง PIP ได้โดยใช้การบีบเพื่อซูม
ฟีเจอร์ใหม่ที่แนะนำซึ่งรองรับประสบการณ์การเปลี่ยนผ่าน PiP ที่ราบรื่น
Android 12 ได้เพิ่มการปรับปรุงด้านความสวยงามที่สำคัญให้กับการเปลี่ยนภาพเคลื่อนไหวระหว่างหน้าต่างแบบเต็มหน้าจอและหน้าต่าง PIP เราขอแนะนำอย่างยิ่งให้ทำการเปลี่ยนแปลงที่เกี่ยวข้องทั้งหมด เมื่อดำเนินการแล้ว การเปลี่ยนแปลงเหล่านี้จะปรับขนาดให้เข้ากับหน้าจอขนาดใหญ่ เช่น อุปกรณ์แบบพับได้และแท็บเล็ตโดยอัตโนมัติโดยไม่ต้องดำเนินการใดๆ เพิ่มเติม
ฟีเจอร์เหล่านี้ได้แก่
แฟล็ก API ใหม่เพื่อการเปลี่ยนไปใช้โหมด PiP ที่ราบรื่นยิ่งขึ้นด้วยการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัส
ใช้แฟล็ก
setAutoEnterEnabledเพื่อให้การเปลี่ยนไปใช้โหมด PIP ราบรื่นยิ่งขึ้นเมื่อปัดขึ้นเพื่อไปยังหน้าแรกในโหมดการไปยังส่วนต่างๆ ด้วยท่าทางสัมผัส ก่อนหน้านี้ Android จะรอให้ภาพเคลื่อนไหวการปัดขึ้นเพื่อไปที่หน้าแรกเสร็จสิ้นก่อนที่จะค่อยๆ แสดงหน้าต่าง PiPภาพเคลื่อนไหวที่ลื่นไหลยิ่งขึ้นเมื่อเข้าและออกจากโหมด PiP
ตอนนี้ระบบจะนำแฟล็ก
SourceRectHintมาใช้ซ้ำเพื่อใช้ภาพเคลื่อนไหวที่ราบรื่นยิ่งขึ้นเมื่อเข้าและออกจากโหมด PiPแฟล็ก 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 ควรพิจารณาทางเลือกอื่นที่อาจเหมาะสมกับกรณีการใช้งานมากกว่า เช่น การแสดงภาพซ้อนภาพหรือบับเบิล
แฟล็กการป้องกันสิทธิ์ของผู้ลงนามที่รู้จัก
ตั้งแต่ 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
หากต้องการพิจารณาว่าต้องใช้คอมโพเนนต์ตัวถอดรหัสที่ปลอดภัยกับ API ของ MediaDrm ปัจจุบันหรือไม่ คุณต้องทำตามขั้นตอนต่อไปนี้
- สร้าง
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 ของการขัดข้องของระบบในแอปเป็นบัฟเฟอร์โปรโตคอลได้ผ่านเมธอด 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, API ImageDecoder ของ NDK ได้รับการขยายเพื่อถอดรหัสเฟรมและข้อมูลเวลาทั้งหมดจากรูปภาพที่ใช้รูปแบบไฟล์ GIF แบบเคลื่อนไหวและ WebP แบบเคลื่อนไหว เมื่อเปิดตัวใน Android 11, API นี้จะถอดรหัสเฉพาะรูปภาพแรกจากภาพเคลื่อนไหวในรูปแบบเหล่านี้
ใช้ ImageDecoder แทนไลบรารีของบุคคลที่สามเพื่อลดขนาด APK และรับประโยชน์จากการอัปเดตในอนาคตที่เกี่ยวข้องกับความปลอดภัยและประสิทธิภาพ
ดูรายละเอียดเพิ่มเติมเกี่ยวกับ API ได้ที่เอกสารอ้างอิง API และตัวอย่างใน GitHub
การเชื่อมต่อ
การเปิดแอปที่ใช้ร่วมกันไว้ตลอดเวลา
Android 12 เปิดตัว API ที่ทำสิ่งต่อไปนี้เพื่อรองรับความจำเป็นของแอปที่ใช้ร่วมกันที่ต้องทำงานต่อไปเพื่อจัดการอุปกรณ์
- ช่วยให้คุณปลุกแอปเมื่ออุปกรณ์ที่ใช้ร่วมกันอยู่ในระยะสัญญาณ
- รับประกันว่ากระบวนการจะทำงานต่อไปขณะที่อุปกรณ์อยู่ในระยะสัญญาณ
หากต้องการใช้ API อุปกรณ์ของคุณต้องเชื่อมต่อโดยใช้เครื่องมือจัดการอุปกรณ์ที่ใช้ร่วมกัน ดูข้อมูลเพิ่มเติมได้ที่ CompanionDeviceManager.startObservingDevicePresence() และ CompanionDeviceService.onDeviceAppeared()
โปรไฟล์ Companion Device Manager
แอปพาร์ทเนอร์ใน Android 12 (ระดับ API 31) ขึ้นไปสามารถใช้โปรไฟล์อุปกรณ์ที่ใช้ร่วมกันเมื่อเชื่อมต่อกับนาฬิกา การใช้โปรไฟล์จะลดความซับซ้อนของกระบวนการลงทะเบียนด้วยการรวมการให้สิทธิ์ชุดสิทธิ์เฉพาะประเภทอุปกรณ์ไว้ในขั้นตอนเดียว
สิทธิ์ที่รวมมาด้วยจะมอบให้แก่แอปที่ใช้ร่วมกันเมื่ออุปกรณ์เชื่อมต่อ และจะคงอยู่ตราบเท่าที่อุปกรณ์เชื่อมโยงอยู่เท่านั้น การลบแอปหรือนำการเชื่อมโยงออกจะเป็นการนำสิทธิ์ออก
ดูข้อมูลเพิ่มเติมได้ที่ AssociationRequest.Builder.setDeviceProfile()
การปรับปรุงการประมาณแบนด์วิดท์
ใน Android 12 ความสามารถในการประมาณแบนด์วิดท์ที่ได้จาก getLinkDownstreamBandwidthKbps() และ getLinkUpstreamBandwidthKbps() ได้รับการปรับปรุงทั้งสำหรับการเชื่อมต่อ Wi-Fi และการเชื่อมต่อเครือข่ายมือถือ ค่าที่แสดงผลในตอนนี้แสดงถึงอัตราความเร็วในการรับส่งข้อมูลเฉลี่ยถ่วงน้ำหนักตลอดเวลาของผู้ใช้ต่อผู้ให้บริการหรือ SSID ของ Wi-Fi, ประเภทเครือข่าย และระดับสัญญาณในแอปพลิเคชันทั้งหมดบนอุปกรณ์
วิธีนี้จะแสดงค่าประมาณของอัตราการส่งผ่านข้อมูลที่คาดไว้ซึ่งแม่นยำและสมจริงมากขึ้น แสดงค่าประมาณเมื่อเริ่มแอปพลิเคชันแบบ Cold Start และใช้รอบน้อยกว่าเมื่อเทียบกับการใช้วิธีการประมาณอัตราการส่งผ่านข้อมูลอื่นๆ
การปรับปรุง Wi-Fi Aware (NAN)
Android 12 เพิ่มการปรับปรุงบางอย่างให้กับ Wi-Fi Aware ดังนี้
- ในอุปกรณ์ที่ใช้ Android 12 (ระดับ API 31) ขึ้นไป คุณสามารถใช้ Callback
onServiceLost()เพื่อรับการแจ้งเตือนเมื่อแอปสูญเสียบริการที่ค้นพบเนื่องจากบริการหยุดทำงานหรืออยู่นอกระยะ - วิธีตั้งค่าเส้นทางข้อมูลหลายเส้นทาง (NAN Data Path) กำลังจะเปลี่ยนไปเพื่อให้มีประสิทธิภาพมากขึ้น เวอร์ชันก่อนหน้าใช้การรับส่งข้อความ L2 เพื่อแลกเปลี่ยนข้อมูลเพียร์ของผู้เริ่มต้น ซึ่งทำให้เกิดเวลาในการตอบสนอง ในอุปกรณ์ที่ใช้ Android 12 ขึ้นไป คุณสามารถกำหนดค่าผู้ตอบ (เซิร์ฟเวอร์) ให้ยอมรับเพียร์ใดก็ได้ กล่าวคือ ไม่จำเป็นต้องทราบข้อมูลผู้เริ่มต้นล่วงหน้า ซึ่งจะช่วยเร่งการเปิดใช้งานเส้นทางข้อมูลและเปิดใช้ลิงก์แบบจุดต่อจุดหลายรายการด้วยคำขอเครือข่ายเพียงรายการเดียว
- หากต้องการป้องกันไม่ให้เฟรมเวิร์กปฏิเสธคำขอการค้นพบหรือการเชื่อมต่อเนื่องจากทรัพยากรหมด คุณสามารถเรียกใช้
WifiAwareManager.getAvailableAwareResources()ในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปได้ ค่าที่แสดงผลของเมธอดนี้ช่วยให้คุณทราบจำนวนเส้นทางข้อมูลที่ใช้ได้ จำนวนเซสชันการเผยแพร่ที่ใช้ได้ และจำนวนเซสชันการสมัครใช้บริการที่ใช้ได้
การเชื่อมต่อแบบเพียร์ทูเพียร์ + การเชื่อมต่ออินเทอร์เน็ตพร้อมกัน
เมื่ออุปกรณ์ที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปทำงานในอุปกรณ์ที่มีการรองรับฮาร์ดแวร์ การใช้การเชื่อมต่อแบบเพียร์ทูเพียร์จะไม่ยกเลิกการเชื่อมต่อ Wi-Fi ที่มีอยู่เมื่อสร้างการเชื่อมต่อกับอุปกรณ์เพียร์ หากต้องการตรวจสอบการรองรับฟีเจอร์นี้ ให้ใช้ WifiManager.isMultiStaConcurrencySupported()
เปิดใช้การชำระเงินผ่าน NFC ขณะปิดหน้าจอ
ในแอปที่กำหนดเป้าหมายเป็น Android 12 ขึ้นไป คุณสามารถเปิดใช้การชำระเงินผ่าน NFC โดยไม่ต้องเปิดหน้าจอของอุปกรณ์ได้ด้วยการตั้งค่า requireDeviceScreenOn เป็น false ดูข้อมูลเพิ่มเติมเกี่ยวกับการชำระเงินผ่าน NFC ขณะที่หน้าจอปิดหรือล็อกอยู่ได้ที่ลักษณะการทำงานเมื่อหน้าจอปิดและหน้าจอล็อก
พื้นที่เก็บข้อมูล
Android 12 เปิดตัวความสามารถในการจัดการพื้นที่เก็บข้อมูลต่อไปนี้
- การรองรับ Media Store สำหรับ
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 ตามลำดับ
การอัปเดต 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
|