Android 12 เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาซอฟต์แวร์ ส่วนด้านล่างจะช่วยให้คุณเรียนรู้เกี่ยวกับฟีเจอร์สำหรับแอปและเริ่มต้นใช้งาน กับ API ที่เกี่ยวข้อง
สำหรับรายการโดยละเอียดของ API ใหม่ ที่มีการแก้ไข และที่นำออก โปรดอ่านความแตกต่างของ API รายงาน สำหรับรายละเอียดเกี่ยวกับ API ใหม่ โปรดไปที่ Android การอ้างอิง API — API ใหม่จะมีการไฮไลต์เพื่อแสดงการเปิดเผย และเพื่อ ดูข้อมูลเกี่ยวกับส่วนที่การเปลี่ยนแปลงแพลตฟอร์มอาจส่งผลกระทบต่อแอปของคุณ การเปลี่ยนแปลงลักษณะการทำงานของ Android 12 สำหรับแอปที่กำหนดเป้าหมาย Android 12 และสำหรับทุกคน
ประสบการณ์ของผู้ใช้
Material You
Android 12 เปิดตัวภาษาการออกแบบใหม่ที่มีชื่อว่า Material คุณช่วยสร้าง แอปที่สวยงามและปรับเปลี่ยนในแบบของคุณมากขึ้น เพื่อนำดีไซน์ Material ล่าสุดทั้งหมด 3 อัปเดตลงในแอปของคุณ ลองใช้ Material Design เวอร์ชันอัลฟ่า คอมโพเนนต์
การปรับปรุงวิดเจ็ต
Android 12 ปรับปรุง Widgets API ที่มีอยู่เพื่อปรับปรุงผู้ใช้และนักพัฒนาซอฟต์แวร์ให้ดีขึ้น ในแพลตฟอร์มและ Launcher เราได้สร้างคู่มือเพื่อช่วยคุณ ตรวจสอบว่าวิดเจ็ตของคุณเข้ากันได้กับ Android 12 และรีเฟรชเป็น ใหม่ๆ
ดูการปรับปรุงวิดเจ็ต Android 12 สำหรับ ข้อมูลเพิ่มเติม
การแทรก Rich Content
Android 12 เปิดตัว API แบบรวมใหม่ที่จะช่วยให้แอปของคุณ รับเนื้อหาสมบูรณ์จากแหล่งข้อมูลที่มีอยู่ เช่น คลิปบอร์ด แป้นพิมพ์ หรือการลาก ลดลง
ดูข้อมูลเพิ่มเติมได้ที่รับริชมีเดีย เนื้อหา
API สำหรับหน้าจอเริ่มต้นของแอป
Android 12 นำเสนอภาพเคลื่อนไหวการเปิดตัวแอปแบบใหม่สำหรับทุกแอปที่มี การเคลื่อนไหวในแอปตั้งแต่ช่วงเปิดตัว หน้าจอแนะนำที่แสดงไอคอนแอป และการเปลี่ยนมาใช้ตัวแอปเอง ดูนักพัฒนาแอปหน้าจอเริ่มต้น (Splash Screen) สำหรับรายละเอียดเพิ่มเติม
API มุมมน
Android 12 เปิดตัว RoundedCorner
และ WindowInsets.getRoundedCorner(int
position)
ซึ่งระบุรัศมีและจุดศูนย์กลางสำหรับมุมโค้ง
โปรดดูข้อมูลเพิ่มเติมที่มุมโค้งมน
ประสบการณ์การโต้ตอบการสัมผัสที่สมบูรณ์
Android 12 เพิ่มเครื่องมือในการสร้างการตอบสนองแบบรู้สึกได้ที่ให้ข้อมูลสำหรับ UI เอฟเฟกต์ที่สมจริงและน่าเพลิดเพลินสำหรับการเล่นเกม และการโต้ตอบการสัมผัสสำหรับ ประสิทธิภาพการทำงาน
เอฟเฟกต์ตัวเปิด
Android 12 เพิ่มเอฟเฟกต์ที่สื่ออารมณ์ชัดเจนเช่น low เลือกที่ ใช้ประโยชน์จากแบนด์วิดท์ความถี่ที่กว้างขึ้นของแอคชูเอเตอร์ล่าสุด เกม ตอนนี้นักพัฒนาซอฟต์แวร์สามารถเข้าถึง แอคซูเอเตอร์อย่างอิสระในเกม ตัวควบคุมเพื่อให้เอฟเฟกต์แบบซิงโครนัสหรือเอฟเฟกต์แบบรู้สึกได้ที่แตกต่างกัน กับแอคชูเอเตอร์หลายตัว สำหรับนักพัฒนาซอฟต์แวร์ เราขอแนะนำให้ใช้ ค่าคงที่และ พื้นฐานเป็น องค์ประกอบที่ใช้สร้างสรรค์สำหรับเอฟเฟกต์การโต้ตอบแบบรู้สึกได้สมบูรณ์ ซึ่งก็คือค่าคงที่ที่จะเพิ่มประสิทธิภาพเหตุการณ์ UI และ Haptic Composer ในลำดับ ประเภทพื้นฐานเพื่อสร้างเอฟเฟกต์ที่ซับซ้อนมากขึ้น API เหล่านี้พร้อมให้ลองใช้ใน Pixel 4 และเรากำลังทำงานร่วมกับพาร์ทเนอร์ผู้ผลิตอุปกรณ์เพื่อ ซึ่งเป็นการรองรับการโต้ตอบการสัมผัสล่าสุดสำหรับผู้ใช้ทั่วทั้งระบบนิเวศ
เอฟเฟกต์การโต้ตอบแบบรู้สึกได้แบบคู่ต่อเสียง
แอป Android 12 สามารถสร้างการตอบสนองแบบรู้สึกได้ที่ได้จากเซสชันเสียงโดยใช้ การสั่นของโทรศัพท์ ซึ่งเป็นโอกาสสำหรับ การเล่นเกมที่สมจริงยิ่งขึ้นและ ประสบการณ์เสียง ตัวอย่างเช่น เสียงเรียกเข้าสำหรับโหมดการโต้ตอบแบบรู้สึกได้จะช่วยระบุ หรือเกมขับรถก็จำลองความรู้สึกของภูมิประเทศขรุขระได้
โปรดดูHapticGenerator
สำหรับข้อมูลเพิ่มเติม
การค้นหาแอป
Android 12 เปิดตัว AppSearch ซึ่งเป็นเครื่องมือค้นหาประสิทธิภาพสูงในอุปกรณ์ ในฐานะบริการของระบบ AppSearch อนุญาตให้แอปพลิเคชันจัดทำดัชนีข้อมูลที่มีโครงสร้าง และค้นหาด้วยความสามารถในการค้นหาข้อความแบบเต็มในตัว นอกจากนี้ AppSearch รองรับฟีเจอร์การค้นหาโฆษณาเนทีฟ เช่น การจัดทำดัชนีที่มีประสิทธิภาพสูง และการดึงข้อมูล การสนับสนุนหลายภาษา และการจัดอันดับความเกี่ยวข้อง
![แผนภาพแสดงการจัดทำดัชนีและการค้นหาภายใน AppSearch](https://developer.android.google.cn/static/images/about/versions/12/appsearch.png?authuser=9&hl=th)
AppSearch มี 2 ประเภท ได้แก่ ดัชนีท้องถิ่นสำหรับให้แอปพลิเคชันของคุณใช้งาน ที่เข้ากันได้กับ Android เวอร์ชันเก่าหรือดัชนีกลาง ได้รับการดูแลรักษาสำหรับทั้งระบบใน Android 12 เมื่อใช้ดัชนีกลาง แอปพลิเคชันสามารถอนุญาตให้ข้อมูลของแอปพลิเคชันแสดงบนแพลตฟอร์ม UI ของระบบได้โดย คอมโพเนนต์อัจฉริยะที่ติดตั้งมาล่วงหน้าของระบบ ข้อมูลที่ได้รับ ที่แสดงบนแพลตฟอร์ม UI ของระบบจะขึ้นอยู่กับ OEM นอกจากนี้ แอปพลิเคชันสามารถแชร์ข้อมูลกับแอปพลิเคชันอื่นอย่างปลอดภัย ค้นหาข้อมูลนั้นได้ด้วย
ดูข้อมูลเพิ่มเติมเกี่ยวกับ AppSearch ใน คู่มือนักพัฒนาซอฟต์แวร์ และเริ่มใช้งานกับ ไลบรารี AppSearch Jetpack ซึ่ง มีแพลตฟอร์ม API ที่เหมาะกับนักพัฒนาแอป รวมถึงตัวประมวลผลคำอธิบายประกอบ การสนับสนุน
โหมดเกม
API โหมดเกมและโหมดเกม การฝึกฝน ทำให้คุณสามารถเพิ่มประสิทธิภาพ การเล่นเกมโดยให้ความสำคัญกับลักษณะต่างๆ เช่น ประสิทธิภาพหรืออายุการใช้งานแบตเตอรี่ ตามการตั้งค่าของผู้ใช้หรือการกำหนดค่าเฉพาะเกม
สำหรับข้อมูลเพิ่มเติม โปรดดูที่โหมดเกม
คำแนะนำและการปรับปรุงการแสดงภาพซ้อนภาพ (PIP)
Android 12 มีการปรับปรุงต่อไปนี้สำหรับโหมด PIP
รองรับท่าทางสัมผัส PIP ใหม่
Android 12 รองรับการซ้อนและบีบเพื่อซูมแล้ว ท่าทางสัมผัสสำหรับ PIP กรอบเวลา:
หากต้องการซ่อนหน้าต่าง ผู้ใช้สามารถลากหน้าต่างไปทางซ้ายหรือขวา หากต้องการยกเลิกการเก็บหน้าต่าง ผู้ใช้สามารถแตะส่วนที่ปรากฏของ หน้าต่างที่ซ่อนหรือลากออก
ตอนนี้ผู้ใช้ปรับขนาดหน้าต่าง PIP ได้โดยใช้การบีบนิ้วเพื่อซูมแล้ว
ฟีเจอร์ใหม่ที่แนะนำที่รองรับประสบการณ์การเปลี่ยน PIP ที่สมบูรณ์
Android 12 ได้เพิ่มการปรับปรุงรูปลักษณ์จำนวนมาก เป็นภาพเคลื่อนไหว การเปลี่ยนไปมาระหว่างหน้าต่างแบบเต็มหน้าจอกับหน้าต่าง PIP เราขอแนะนำ นำการเปลี่ยนแปลงที่เกี่ยวข้องทั้งหมดไปใช้ เมื่อดำเนินการแล้ว การเปลี่ยนแปลงจะ ปรับขนาดให้พอดีกับหน้าจอขนาดใหญ่ เช่น อุปกรณ์แบบพับได้และแท็บเล็ตโดยอัตโนมัติ การดำเนินการอื่นๆ ที่จำเป็น
ฟีเจอร์เหล่านี้มีดังต่อไปนี้
แฟล็ก API ใหม่เพื่อให้การเปลี่ยนไปใช้โหมด PIP ราบรื่นยิ่งขึ้นด้วยการนำทางด้วยท่าทางสัมผัส
ใช้
setAutoEnterEnabled
Flag เพื่อให้การเปลี่ยนไปใช้โหมด PIP ราบรื่นยิ่งขึ้นเมื่อปัดขึ้นไปยังหน้าแรกใน โหมดการนำทางด้วยท่าทางสัมผัส ก่อนหน้านี้ Android ต้องรอการปัดขึ้นเพื่อไปที่หน้าแรก ภาพเคลื่อนไหวให้จบก่อนที่จะค่อยๆ จางหายไปในหน้าต่าง PIPภาพเคลื่อนไหวที่ลื่นไหลขึ้นเมื่อเข้าและออกจากโหมด PIP
SourceRectHint
มีการนำ Flag กลับมาใช้ใหม่เพื่อให้ภาพเคลื่อนไหวราบรื่นยิ่งขึ้นเมื่อเข้าและออก โหมด PIPแฟล็ก API ใหม่เพื่อปิดใช้การปรับขนาดอย่างราบรื่นสำหรับเนื้อหาที่ไม่ใช่วิดีโอ
SeamlessResizeEnabled
Flag ทำให้ภาพเคลื่อนไหวแบบครอสเฟดราบรื่นมากขึ้นเมื่อปรับขนาดที่ไม่ใช่วิดีโอ เนื้อหาในหน้าต่าง 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 ยังมีลักษณะความเข้ากันได้แบบย้อนหลังสำหรับ Sticky สมจริง โหมด
การแชร์ 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
ควรพิจารณา
ทางเลือกที่อาจเหมาะสมกับ Use Case มากกว่า เช่น
การแสดงภาพซ้อนภาพ หรือ
ลูกโป่ง
แฟล็กการป้องกันสิทธิ์ของผู้ลงนามที่รู้จัก
เริ่มตั้งแต่ Android 12 เป็นต้นไป
knownCerts
สำหรับ
สิทธิ์ระดับลายเซ็น
ช่วยให้คุณสามารถอ้างอิงถึงเนื้อหาโดยรวมของ การลงนามที่ทราบ
ใบรับรอง ณ การประกาศ
แอปของคุณประกาศแอตทริบิวต์นี้และใช้แฟล็ก knownSigner
เพื่ออนุญาตได้
อุปกรณ์และแอปพลิเคชันเพื่อให้สิทธิ์ลายเซ็นแก่
แอป ที่ไม่มี
ที่ต้องเซ็นชื่อในแอปขณะผลิตและจัดส่งอุปกรณ์
เอกสารรับรองพร็อพเพอร์ตี้อุปกรณ์
Android 12 ขยายชุดแอปที่สามารถยืนยันคุณสมบัติของอุปกรณ์ที่ อยู่ในเอกสารรับรอง ใบรับรอง เมื่อแอปเหล่านี้สร้างคีย์ใหม่
สำหรับ Android 9 (API ระดับ 28) นโยบายด้านอุปกรณ์
(DPO) ที่ใช้
Keymaster 4.0 ขึ้นไป
โปรดยืนยันคุณสมบัติของอุปกรณ์ในใบรับรองของเอกสารรับรองเหล่านี้ จะเริ่มต้นใน
Android 12 แอปที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปจะทํางานได้
การยืนยันนี้โดยใช้
setDevicePropertiesAttestationIncluded()
พร็อพเพอร์ตี้อุปกรณ์ที่สร้างขึ้นมีดังต่อไปนี้
Build
ช่อง:
BRAND
DEVICE
MANUFACTURER
MODEL
PRODUCT
การดำเนินการแจ้งเตือนหน้าจอล็อกที่ปลอดภัย
เริ่มตั้งแต่ Android 12 คลาส Notification.Action.Builder
รองรับ
setAuthenticationRequired()
ซึ่งทำให้แอปของคุณกําหนดให้อุปกรณ์
ปลดล็อกอยู่
ก่อนที่แอปจะเรียกใช้การดำเนินการแจ้งเตือนหนึ่งๆ วิธีการนี้จะช่วยเพิ่ม
การรักษาความปลอดภัยอีกขั้นให้กับการแจ้งเตือนในอุปกรณ์ที่ล็อก
สตริงที่แปลได้สำหรับ BiometricPrompt
Android 12 เปิดตัว API ใหม่เพื่อช่วยคุณปรับปรุงข้อมูลไบโอเมตริกของแอป
การตรวจสอบสิทธิ์ของผู้ใช้ BiometricManager.Strings
ใหม่
คลาสที่ซ้อนกันจะรวม getButtonLabel()
getPromptMessage()
,
และ getSettingName()
ซึ่งช่วยให้แอปของคุณเรียกป้ายกำกับปุ่มที่ผู้ใช้อ่านได้และได้รับการแปล
ข้อความแจ้งหรือชื่อการตั้งค่าแอป ใช้ป้ายกำกับเหล่านี้เพื่อสร้างข้อมูลที่แม่นยำมากขึ้น
วิธีการที่แสดงให้ผู้ใช้เห็นโดยเฉพาะสำหรับการตรวจสอบสิทธิ์ด้วยข้อมูลไบโอเมตริก
ที่ใช้ เช่น "ใช้การปลดล็อกด้วยใบหน้า" หรือ "ใช้ลายนิ้วมือเพื่อดำเนินการต่อ"
การตรวจหาฟิชชิงในแอปรับส่งข้อความ (Pixel เท่านั้น)
![](https://developer.android.google.cn/static/images/about/versions/12/phishing-detection.png?authuser=9&hl=th)
ในอุปกรณ์ Pixel ที่รองรับ Android 12 จะเรียกใช้การตรวจหาฟิชชิงในข้อความ ได้รับในแอปรับส่งข้อความยอดนิยม ระบบใช้แมชชีนเลิร์นนิงในอุปกรณ์ เพื่อตรวจหากิจกรรมที่น่าสงสัย เมื่อตรวจพบ ระบบจะแสดงการตั้งค่าความปลอดภัย วางซ้อนด้านบน UI ของแอปรับส่งข้อความเพื่อเตือนผู้ใช้ เช่น ฟิชชิง การตรวจจับจะเตือนผู้ใช้เกี่ยวกับความเสี่ยงที่อาจเกิดขึ้นดังต่อไปนี้
- คำขอที่น่าสงสัย เช่น ส่งรหัส เงิน หรือคำขอที่คล้ายกัน
- URL ที่ไม่น่าเชื่อถือ
- ไฟล์แนบที่เป็นอันตราย
- ลิงก์ไปยังแอปที่เป็นอันตราย
นอกเหนือจากการเตือนผู้ใช้แล้ว โฆษณาซ้อนทับยังให้ผู้ใช้รายงาน ข้อความที่น่าสงสัยและแสดงความคิดเห็นเกี่ยวกับคำเตือนที่ระบบออก
นักพัฒนาแอปสามารถเลือกไม่ใช้ฟีเจอร์นี้ได้โดยเพิ่มแท็กข้อมูลเมตาใหม่ ได้แก่
สตริง com.google.android.ALLOW_PHISHING_DETECTION
ในไฟล์ Manifest ของแอป
เช่น
<manifest>
<application android:name="com.messagingapp">
<meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />
</application>
</manifest>
สื่อ
การแปลงสื่อที่เข้ากันได้
ตั้งแต่ Android 12 (API ระดับ 31) ระบบจะแปลงรหัสได้โดยอัตโนมัติ HEVC(H.265) และ HDR (HDR10 และ HDR10+) วิดีโอที่บันทึกไว้ในอุปกรณ์ไปยัง AVC (H.264) ซึ่งเป็นรูปแบบที่ใช้กันอย่างกว้างขวาง ใช้ได้กับโปรแกรมเล่นแบบมาตรฐาน ซึ่งจะใช้ประโยชน์จากตัวแปลงรหัสสมัยใหม่เมื่อ ก็พร้อมใช้งานโดยไม่ต้องแลกกับความสามารถในการใช้งานร่วมกันกับแอปพลิเคชันรุ่นเก่าๆ
ดูรายละเอียดเพิ่มเติมได้ที่การแปลงสื่อที่เข้ากันได้
ระดับประสิทธิภาพ
Android 12 เปิดตัวมาตรฐานชื่อคลาสประสิทธิภาพ ต คลาสประสิทธิภาพจะระบุความสามารถของฮาร์ดแวร์นอกเหนือจากเกณฑ์พื้นฐานของ Android อุปกรณ์ Android แต่ละเครื่องจะประกาศระดับประสิทธิภาพที่ รองรับ นักพัฒนาแอปสามารถตรวจสอบคลาสประสิทธิภาพของอุปกรณ์ได้ที่รันไทม์และ มอบประสบการณ์ที่อัปเกรดที่ใช้ประโยชน์สูงสุดจากอุปกรณ์ ความสามารถ
ดูระดับประสิทธิภาพ เพื่อดูรายละเอียดเพิ่มเติม
การปรับปรุงการเข้ารหัสวิดีโอ
Android 12 กำหนดชุดคีย์มาตรฐานสำหรับการควบคุม พารามิเตอร์ปริมาณ (QP) สำหรับการเข้ารหัสวิดีโอ ทำให้นักพัฒนาซอฟต์แวร์ หลีกเลี่ยงการใช้รหัสเฉพาะผู้ให้บริการ
คีย์ใหม่จะอยู่ใน
MediaFormat
API
และในส่วน
คลังสื่อ NDK
การเริ่มใช้โปรแกรมเปลี่ยนไฟล์วิดีโอ Android 12 จะบังคับใช้คุณภาพขั้นต่ำ การทำเช่นนี้จะรับประกันว่าผู้ใช้จะไม่พบปัญหาที่มีคุณภาพต่ำมาก เมื่อเข้ารหัสวิดีโอที่มีความซับซ้อนของฉากสูง
โฟกัสอัตโนมัติ
และตั้งแต่ Android 12 (API ระดับ 31) เมื่อแอปขอโฟกัสเสียง อีกแอปหนึ่งมีโฟกัสและกำลังเล่นอยู่ ทำให้แอปที่เล่นนั้นค่อยๆ จางลง
โปรดดูหัวข้อการโฟกัสเสียงใน Android 12 ขึ้นไป เพื่อดูรายละเอียดเพิ่มเติม
ข้อมูลอัปเดต MediaDrm
เพื่อระบุว่าจำเป็นต้องใช้คอมโพเนนต์ตัวถอดรหัสที่ปลอดภัยพร้อมกับ
API ของ MediaDrm
ในปัจจุบัน คุณต้องทำตามขั้นตอนต่อไปนี้
- สร้าง
MediaDrm
- เปิดเซสชันเพื่อรับรหัสเซสชัน
- สร้าง
MediaCrypto
โดยใช้รหัสเซสชัน - โทร
MediaCrypto.requiresSecureDecoderComponent(mimeType)
ด้วยวิธีใหม่ requiresSecureDecoder(@NonNull String mime)
และ
วันที่ requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
คุณจะทราบได้ทันทีเมื่อสร้าง MediaDrm
กล้อง
ส่วนขยายผู้ให้บริการ Camera2
พาร์ทเนอร์ด้านผู้ผลิตอุปกรณ์หลายรายของเราได้สร้างส่วนขยายกล้องแบบกำหนดเอง เช่น อย่างโบเก้, HDR, โหมดกลางคืน และอื่นๆ ที่พวกเขาต้องการให้แอปใช้สร้าง ประสบการณ์ที่แตกต่างบนอุปกรณ์ของตน กล้องถ่ายรูป X ของ Google รองรับอยู่แล้ว ส่วนขยายผู้ให้บริการที่กำหนดเองเหล่านี้ ใน Android 12 ฟีเจอร์เหล่านี้ ส่วนขยายผู้ให้บริการจะแสดงในแพลตฟอร์มโดยตรง
ซึ่งการเพิ่มเติมนี้จะช่วยให้แอปต่างๆ ที่ซับซ้อน
Camera2
จะใช้ประโยชน์จากส่วนขยายผู้ให้บริการโดยไม่ต้อง
การเปลี่ยนแปลงที่สำคัญในโค้ดเดิม API ส่วนขยาย Camera2 แสดง
ชุดเดียวกันของ
เป็นส่วนขยาย
ใน CameraX และมีการสนับสนุนในตัวเลือก
อุปกรณ์ คุณจึงใช้งานได้โดยไม่ต้อง
การกำหนดค่าเพิ่มเติม
สำหรับข้อมูลเพิ่มเติม โปรดดู
CameraExtensionCharacteristics
รองรับเซ็นเซอร์กล้อง Quad Bayer
ปัจจุบันอุปกรณ์ Android หลายรุ่นมีเซ็นเซอร์กล้องความละเอียดสูงพิเศษ โดยปกติจะใช้รูปแบบ Quad หรือ Nona Bayer และมีความยืดหยุ่นมาก เกี่ยวกับคุณภาพของรูปและประสิทธิภาพในสภาวะแสงน้อย Android 12 เปิดตัวฟีเจอร์ใหม่ API ของแพลตฟอร์มที่ช่วยให้แอปของบุคคลที่สามใช้ประโยชน์จากเครื่องมืออเนกประสงค์เหล่านี้ได้อย่างเต็มที่ เซ็นเซอร์ API ใหม่ รองรับพฤติกรรมที่เฉพาะตัวของเซ็นเซอร์เหล่านี้ และคำนึงถึงว่า อาจรองรับการกำหนดค่าสตรีมและชุดค่าผสมที่แตกต่างกันเมื่อดำเนินงานใน ความละเอียดเต็มหรือโหมด "ความละเอียดสูงสุด" เทียบกับโหมด "เริ่มต้น"
กราฟิกและรูปภาพ
อนุญาตให้แอปเข้าถึงการติดตาม Tombstone ได้โดยตรง
ตั้งแต่ Android 12 เป็นต้นไป คุณสามารถเข้าถึง Tombstone ข้อขัดข้องแบบเนทีฟของแอปในฐานะ
บัฟเฟอร์โปรโตคอลผ่าน
ApplicationExitInfo.getTraceInputStream()
บัฟเฟอร์โปรโตคอลจะได้รับการทำให้เป็นอนุกรมโดยใช้สคีมานี้
ก่อนหน้านี้ วิธีเดียวที่จะเข้าถึงข้อมูลนี้คือผ่านทาง
Android Debug Bridge (adb)
ดูข้อมูลเพิ่มเติมได้ที่ให้แอปเข้าถึงการติดตาม Tombstone โดยตรง
รองรับอิมเมจ AVIF
Android 12 รองรับรูปภาพที่ใช้รูปแบบไฟล์ภาพ AV1 (AVIF) AVIF คือรูปแบบคอนเทนเนอร์สำหรับรูปภาพและลำดับของรูปภาพที่เข้ารหัส ที่ใช้ AV1 AVIF ใช้ประโยชน์จากเนื้อหาที่เข้ารหัสภายในเฟรมจากวิดีโอ การบีบอัด การดำเนินการนี้จะช่วยปรับปรุงคุณภาพของรูปได้อย่างมากสำหรับไฟล์เดียวกัน เมื่อเทียบกับรูปแบบรูปภาพเก่าๆ เช่น JPEG สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ ประโยชน์ของรูปแบบนี้ โปรดดูบล็อกของ Jake Archibald โพสต์
เบลอภาพ ฟิลเตอร์สี และเอฟเฟกต์อื่นๆ ได้ง่ายขึ้น
Android 12 เพิ่ม RenderEffect
ใหม่
ที่ใช้เอฟเฟกต์กราฟิกทั่วไป เช่น การเบลอ ฟิลเตอร์สี เฉดสี Android
เอฟเฟกต์ และอื่นๆ อีกมากมายใน View
และลำดับชั้นการแสดงผล สามารถใช้เอฟเฟกต์รวมกันเป็นเอฟเฟกต์ลูกโซ่แบบใดแบบหนึ่งได้
(ซึ่งมีเอฟเฟกต์ด้านในและด้านนอก) หรือเอฟเฟกต์ผสม Android รุ่นอื่น
อุปกรณ์อาจสนับสนุนฟีเจอร์นี้หรือไม่ก็ได้ เนื่องจากกำลังในการประมวลผลมีจำกัด
คุณยังใช้เอฟเฟกต์กับ RenderNode
ที่เกี่ยวข้องได้
เป็นเวลา View
โดยโทรไปที่ View.setRenderEffect(RenderEffect)
วิธีใช้ RenderEffect
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
การถอดรหัสภาพเคลื่อนไหวแบบเนทีฟ
ใน Android 12 NDK
ImageDecoder
ขยาย API แล้ว
เพื่อถอดรหัสเฟรมและข้อมูลเวลาทั้งหมดจากรูปภาพ
ที่ใช้ GIF แบบเคลื่อนไหวและ
รูปแบบไฟล์ WebP แบบเคลื่อนไหว เมื่อใด
ซึ่งเปิดตัวไปใน Android 11 โดย API นี้จะถอดรหัสเฉพาะรูปภาพแรกจาก
ภาพเคลื่อนไหวในรูปแบบเหล่านี้
ใช้ ImageDecoder
แทนไลบรารีของบุคคลที่สามเพื่อลด APK เพิ่มเติม
ขนาด
และได้รับประโยชน์จากการอัปเดตที่เกี่ยวข้องกับความปลอดภัยและประสิทธิภาพในอนาคต
ดูรายละเอียดเพิ่มเติมเกี่ยวกับ API ได้ที่เอกสารอ้างอิง API และตัวอย่างใน GitHub
การเชื่อมต่อ
การทำให้แอปที่ใช้ร่วมกันทำงานตลอดเวลา
หากต้องการรองรับความต้องการแอปที่ใช้ร่วมกันเพื่อให้อุปกรณ์ทำงานต่อไปเพื่อจัดการอุปกรณ์ได้ Android 12 เปิดตัว API ที่ทำสิ่งต่อไปนี้
- ช่วยให้คุณสามารถปลุกแอปเมื่ออุปกรณ์ที่ใช้ร่วมกันอยู่ในระยะสัญญาณ
- รับประกันว่ากระบวนการจะทำงานต่อขณะที่อุปกรณ์อยู่ภายใน
หากต้องการใช้ API อุปกรณ์ของคุณต้องเชื่อมต่อโดยใช้อุปกรณ์ที่ใช้ร่วมกัน
ผู้จัดการ สำหรับข้อมูลเพิ่มเติม
ดูข้อมูลได้ที่
CompanionDeviceManager.startObservingDevicePresence()
และ
CompanionDeviceService.onDeviceAppeared()
โปรไฟล์โปรแกรมจัดการอุปกรณ์ที่ใช้ร่วมกัน
![](https://developer.android.google.cn/static/images/about/versions/12/companion-device-profile.png?authuser=9&hl=th)
แอปพาร์ทเนอร์ใน Android 12 (API ระดับ 31) ขึ้นไปจะใช้อุปกรณ์ที่ใช้ร่วมกันได้ โปรไฟล์เมื่อเชื่อมต่อนาฬิกา การใช้โปรไฟล์จะช่วยให้การลงทะเบียนง่ายขึ้น ด้วยการรวมการให้สิทธิ์ชุดสิทธิ์เฉพาะประเภทอุปกรณ์ ในขั้นตอนเดียว
สิทธิ์ที่อยู่ในแพ็กเกจจะให้แก่แอปที่ใช้ร่วมกันเมื่ออุปกรณ์ เชื่อมต่อได้ และจะใช้ได้ก็ต่อเมื่อเชื่อมต่ออุปกรณ์ ลบแอปหรือ การนำการเชื่อมโยงออกจะเป็นการนำสิทธิ์นั้นออก
สำหรับข้อมูลเพิ่มเติม โปรดดู
AssociationRequest.Builder.setDeviceProfile()
การปรับปรุงการประมาณแบนด์วิดท์
ใน Android 12 ความสามารถในการประมาณแบนด์วิดท์ที่ได้จาก
getLinkDownstreamBandwidthKbps()
และ
getLinkUpstreamBandwidthKbps()
ได้รับการปรับปรุงทั้งสำหรับการเชื่อมต่อ Wi-Fi และเครือข่ายมือถือ ค่าที่แสดงผลในขณะนี้
แสดงอัตราการส่งข้อมูลเฉลี่ยที่ถ่วงน้ำหนักตลอดเวลาของผู้ใช้ต่อผู้ให้บริการหรือ Wi-Fi
SSID, ประเภทเครือข่าย และระดับสัญญาณในแอปพลิเคชันทั้งหมดในอุปกรณ์
ซึ่งจะทำให้ได้ค่าประมาณของอัตราการส่งข้อมูลที่คาดหวังที่แม่นยำและสมเหตุสมผลมากขึ้น
ให้ค่าประมาณเมื่อเริ่มต้นแอปพลิเคชันแบบ Cold Start และใช้เวลาน้อยกว่า
เมื่อเปรียบเทียบกับการใช้วิธีการประมาณอัตราการส่งข้อมูลอื่นๆ
การเพิ่มประสิทธิภาพ Wi-Fi Aware (NAN)
Android 12 เพิ่มการเพิ่มประสิทธิภาพบางอย่างใน Wi-Fi Aware ดังนี้
- ในอุปกรณ์ที่ใช้ Android 12 (API ระดับ 31) ขึ้นไป คุณสามารถใช้
onServiceLost()
เพื่อรับการแจ้งเตือนเมื่อแอปของคุณสูญเสียบริการที่ค้นพบเนื่องจาก บริการหยุดทำงานหรือย้ายออกจากช่วง - วิธีตั้งค่าเส้นทางข้อมูลหลายรายการ (เส้นทางข้อมูล NAN) จะเปลี่ยนเป็น มีประสิทธิภาพมากขึ้น เวอร์ชันก่อนหน้าใช้การรับส่งข้อความ L2 เพื่อแลกเปลี่ยนกับแอปเทียบเท่า ข้อมูลของผู้เริ่ม ซึ่งทำให้เกิดเวลาในการตอบสนอง ในอุปกรณ์ที่ใช้ Android 12 ขึ้นไปสามารถกำหนดค่าผู้ตอบ (เซิร์ฟเวอร์) ได้ เพื่อรับผู้เข้าร่วมคนอื่นๆ กล่าวคือ ไม่จำเป็นต้องรู้จักผู้เริ่ม ข้อมูลอย่างตรงไปตรงมา วิธีนี้ช่วยเพิ่มความเร็วในการเรียกใช้ Datapath และช่วยให้ ลิงก์แบบจุดต่อจุดที่มีคำขอเครือข่ายเพียงรายการเดียว
- หากต้องการป้องกันไม่ให้เฟรมเวิร์กปฏิเสธคำขอการค้นพบหรือการเชื่อมต่อที่ครบกำหนด
ในอุปกรณ์ที่ใช้ Android 12 และ
สูงขึ้น คุณก็สามารถโทรหา
WifiAwareManager.getAvailableAwareResources()
ค่าส่งกลับของวิธีการนี้จะช่วยให้คุณได้จำนวนข้อมูลที่ใช้ได้ เส้นทาง จำนวนเซสชันการเผยแพร่ที่ใช้ได้ และจำนวนเส้นทาง เซสชันการติดตาม
การเชื่อมต่อแบบเพียร์ทูเพียร์ + อินเทอร์เน็ตพร้อมกัน
เมื่ออุปกรณ์ที่กำหนดเป้าหมายเป็น Android 12 (API ระดับ 31) ขึ้นไปทำงานในอุปกรณ์ที่มี
การสนับสนุนฮาร์ดแวร์ โดยใช้เพียร์ทูเพียร์
การเชื่อมต่อจะไม่ยกเลิกการเชื่อมต่อ
การเชื่อมต่อ Wi-Fi ที่มีอยู่เมื่อสร้างการเชื่อมต่อกับอุปกรณ์เพียร์ ถึง
ดูการสนับสนุนสำหรับฟีเจอร์นี้
WifiManager.isMultiStaConcurrencySupported()
เปิดใช้การปิดหน้าจอสำหรับการชำระเงิน NFC
ในแอปที่กำหนดเป้าหมายเป็น Android 12 ขึ้นไป คุณจะเปิดใช้ NFC ได้
การชำระเงินโดยไม่ต้องเปิดหน้าจอของอุปกรณ์โดยการตั้งค่า
requireDeviceScreenOn
ถึง
false
ดูข้อมูลเพิ่มเติมเกี่ยวกับการชำระเงิน NFC ขณะปิดหน้าจอหรือล็อกอยู่ได้ที่
ปิดหน้าจอและล็อกหน้าจอ
พฤติกรรมของผู้ใช้
พื้นที่เก็บข้อมูล
Android 12 ขอแนะนำการจัดการพื้นที่เก็บข้อมูลดังต่อไปนี้ ความสามารถ:
- รองรับ
MediaDocumentsProvider
จาก Media Store เมื่อแอปของคุณดึงข้อมูล URI สื่อที่เทียบเท่ากับผู้ให้บริการเอกสารที่ระบุ URI - ไดเรกทอรีสำหรับ voice ที่บันทึกไว้
MANAGE_MEDIA
ซึ่งอนุญาตให้แอปจัดการสื่อ การดำเนินงาน โดยไม่แสดงกล่องโต้ตอบการยืนยันแก่ผู้ใช้สำหรับการดำเนินการแต่ละอย่าง- แอปที่มีทั้ง
MANAGE_EXTERNAL_STORAGE
และQUERY_ALL_PACKAGES
เช่น แอปการจัดการไฟล์จะเรียกใช้การตั้งค่า กิจกรรม ในการจัดการพื้นที่เก็บข้อมูลของแอปอื่น ในกรณีที่แอปนั้นสร้าง กิจกรรมที่กำหนดเอง
ฟังก์ชันหลัก
การอัปเดตแอปอัตโนมัติ
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
|