Android 13 เปิดตัวฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาซอฟต์แวร์ ส่วนต่างๆ ด้านล่างจะช่วยให้คุณทราบข้อมูลเกี่ยวกับฟีเจอร์สําหรับแอปและเริ่มต้นใช้งาน API ที่เกี่ยวข้อง
ดูรายการ API ใหม่ แก้ไข และนําออกอย่างละเอียดได้ที่รายงานความแตกต่างของ API ดูรายละเอียดเกี่ยวกับ API ใหม่ได้ที่เอกสารอ้างอิง Android API โดย API ใหม่จะได้รับการไฮไลต์ไว้ให้มองเห็น นอกจากนี้ หากต้องการเรียนรู้เกี่ยวกับส่วนที่การเปลี่ยนแปลงของแพลตฟอร์มอาจส่งผลกระทบต่อแอปของคุณ อย่าลืมดูการเปลี่ยนแปลงลักษณะการทำงานของ Android 13 สำหรับแอปที่กำหนดเป้าหมายเป็น Android 13 และสำหรับทุกแอป
เครื่องมือและประสิทธิภาพการทำงานของนักพัฒนาซอฟต์แวร์
ไอคอนแอปแบบมีธีม
ตั้งแต่ Android 13 เป็นต้นไป คุณจะเลือกใช้ไอคอนแอปตามธีมได้ เมื่อใช้ฟีเจอร์นี้ ไอคอนแอปใน Launcher ของ Android ที่รองรับจะปรับสีให้รับค่าสีจากวอลเปเปอร์และธีมอื่นๆ ที่ผู้ใช้เลือก
หากต้องการรองรับฟีเจอร์นี้ แอปของคุณต้องมีทั้งไอคอนแบบปรับอัตโนมัติและไอคอนแอปสีเดียว รวมถึงชี้ไปยังไอคอนแอปสีเดียวจากองค์ประกอบ <adaptive-icon>
ในไฟล์ Manifest หากผู้ใช้เปิดใช้ไอคอนแอปที่มีธีม (หรืออีกนัยหนึ่งคือเปิดปุ่มสลับไอคอนตามธีมในการตั้งค่าระบบ) และ Launcher รองรับฟีเจอร์นี้ ระบบจะใช้สีของวอลเปเปอร์และธีมที่ผู้ใช้เลือกเพื่อกำหนดสีที่ย้อมสี ซึ่งจะนำมาใช้กับไอคอนแอปสีเดียว
หน้าจอหลักไม่แสดงไอคอนแอปที่มีธีม แต่จะแสดงไอคอนแอปแบบปรับอัตโนมัติหรือไอคอนมาตรฐานแทนในสถานการณ์ต่อไปนี้
- หากผู้ใช้ไม่ได้เปิดใช้ไอคอนแอปตามธีม
- หากแอปไม่มีไอคอนแอปโมโนโครม
- หาก Launcher ไม่รองรับไอคอนแอปตามธีม
โปรดดูรายละเอียดเพิ่มเติมและวิธีการที่หัวข้อไอคอนที่ปรับขนาดได้
ค่ากำหนดภาษาที่ใช้ในแอป
ในหลายกรณี ผู้ใช้ที่พูดได้หลายภาษาจะตั้งค่าภาษาของระบบเป็นภาษาเดียว เช่น ภาษาอังกฤษ แต่ต้องการเลือกภาษาอื่นๆ สําหรับแอปบางแอป เช่น ดัตช์ จีน หรือฮินดี Android 13 เปิดตัวฟีเจอร์ต่อไปนี้สำหรับแอปที่รองรับหลายภาษา เพื่อช่วยแอปมอบประสบการณ์การใช้งานที่ดีขึ้นให้แก่ผู้ใช้เหล่านี้
การตั้งค่าระบบ: ตำแหน่งส่วนกลางที่ผู้ใช้สามารถเลือกภาษาที่ต้องการสำหรับแต่ละแอปได้
แอปของคุณต้องประกาศแอตทริบิวต์
android:localeConfig
ในไฟล์ Manifest ของแอปเพื่อแจ้งให้ระบบทราบว่าแอปรองรับหลายภาษา ดูข้อมูลเพิ่มเติมได้จากวิธีการสร้างไฟล์ทรัพยากรและประกาศในไฟล์ Manifest ของแอปAPI เพิ่มเติม: API สาธารณะเหล่านี้ เช่น เมธอด
setApplicationLocales()
และgetApplicationLocales()
ในLocaleManager
ทำให้แอปตั้งค่าภาษาที่แตกต่างจากภาษาของระบบในระหว่างรันไทม์ได้API เหล่านี้จะซิงค์กับการตั้งค่าระบบโดยอัตโนมัติ ดังนั้นแอปที่ใช้ API เหล่านี้เพื่อสร้างเครื่องมือเลือกภาษาในแอปที่กําหนดเองจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกันไม่ว่าผู้ใช้จะเลือกค่ากําหนดภาษาจากที่ใดก็ตาม นอกจากนี้ API สาธารณะยังช่วยคุณลดจำนวนโค้ดสำเร็จรูป โดยรองรับ APK แบบแยก และรองรับการสำรองข้อมูลอัตโนมัติสำหรับแอปเพื่อจัดเก็บการตั้งค่าภาษาของผู้ใช้ระดับแอป
สำหรับความเข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า API ที่เทียบเท่ามีให้บริการใน AndroidX ด้วย เราขอแนะนำให้ใช้ API ที่เพิ่มไว้ใน Appcompat 1.6.0-beta01 ขึ้นไป
แอปที่ไม่รองรับหลายภาษาจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงเหล่านี้
ปรับปรุงการรองรับข้อความและภาษา
Android 13 มีการปรับปรุงข้อความและภาษาของฟีเจอร์หลายรายการที่จะช่วยให้คุณมอบประสบการณ์การใช้งานที่ยอดเยี่ยมยิ่งขึ้น ซึ่งอธิบายไว้ในส่วนต่อไปนี้
การแบ่งบรรทัดเร็วขึ้น
การแบ่งวรรคช่วยให้ข้อความที่ตัดขึ้นบรรทัดใหม่อ่านง่ายขึ้นและช่วยให้ UI ปรับเปลี่ยนได้มากขึ้น ตั้งแต่ Android 13 เป็นต้นไป ประสิทธิภาพการแบ่งบรรทัดได้รับการเพิ่มประสิทธิภาพสูงสุดถึง 200% คุณจึงเปิดใช้การแบ่งบรรทัดใน TextView
ได้โดยไม่ส่งผลกระทบต่อประสิทธิภาพการแสดงผล หากต้องการให้ขีดกลางสั้นเร็วขึ้น ให้ใช้ความถี่ fullFast
หรือ normalFast
ใน setHyphenationFrequency()
Text Conversion API
ผู้ที่พูดภาษาต่างๆ เช่น ญี่ปุ่นและจีนจะใช้วิธีการป้อนตัวอักษรตามการออกเสียง ซึ่งมักจะทําให้การค้นหาและฟีเจอร์ต่างๆ เช่น การเติมข้อความอัตโนมัติช้าลง ใน Android 13 แอปสามารถเรียกใช้ Text Conversion API ใหม่เพื่อให้ผู้ใช้ค้นหาสิ่งที่ต้องการได้เร็วและง่ายขึ้น ก่อนหน้านี้ การค้นหาในญี่ปุ่นกำหนดให้ผู้ใช้ทำตามขั้นตอนต่อไปนี้
- ป้อนฮิรากานะเป็นการออกเสียงตามหลักสัทอักษรของข้อความค้นหา (เช่น สถานที่หรือชื่อแอป)
- ใช้แป้นพิมพ์เพื่อแปลงอักขระฮิรากานะเป็นคันจิ
- ค้นหาอีกครั้งโดยใช้อักขระคันจิ
- สุดท้ายก็ดูผลการค้นหา
API การแปลงข้อความแบบใหม่ช่วยให้ผู้ใช้ชาวญี่ปุ่นสามารถพิมพ์เป็นภาษาฮิรางานะและดูผลการค้นหาตัวคันจิได้ทันทีโดยไม่ต้องผ่านขั้นตอนที่ 2 และ 3
ปรับปรุงความสูงของบรรทัดสําหรับสคริปต์ที่ไม่ใช่ละติน
Android 13 ปรับปรุงการแสดงสคริปต์ที่ไม่ใช่แบบละติน (เช่น ทมิฬ พม่า เตลูกู และทิเบต) โดยใช้ความสูงของบรรทัดที่ปรับให้เหมาะกับแต่ละภาษา ความสูงของบรรทัดใหม่ป้องกันไม่ให้ตัดและปรับปรุงการวางตำแหน่งของอักขระ แอปของคุณใช้ประโยชน์จากการปรับปรุงเหล่านี้ได้โดยกําหนดเป้าหมายเป็น Android 13 อย่าลืมทดสอบแอปเมื่อใช้การเว้นบรรทัดใหม่ เนื่องจากการเปลี่ยนแปลงนี้อาจส่งผลต่อ UI ในภาษาที่ไม่ใช่ภาษาละติน
ปรับปรุงการตัดข้อความภาษาญี่ปุ่น
ตั้งแต่ Android 13 เป็นต้นไป TextView จะตัดข้อความตาม Bunsetsu (หน่วยคำที่เล็กที่สุดที่ฟังดูเป็นธรรมชาติ) หรือวลีแทนการแบ่งตามอักขระ เพื่อให้แอปพลิเคชันภาษาญี่ปุ่นดูเรียบร้อยและอ่านง่ายขึ้น คุณใช้ประโยชน์จากการตัดขึ้นบรรทัดใหม่นี้ได้โดยใช้ android:lineBreakWordStyle="phrase"
กับ TextView
การอัปเดตคลัง Unicode
Android 13 เพิ่มการปรับปรุง การแก้ไข และการเปลี่ยนแปลงล่าสุดที่รวมอยู่ใน Unicode ICU 70, Unicode CLDR 40 และ Unicode 14.0
การเปลี่ยนแปลงที่สำคัญ 2 ประการมีดังนี้
- ทั้งภาษาอังกฤษ (แคนาดา)
en‑CA
และภาษาอังกฤษ (สาธารณรัฐฟิลิปปินส์)en‑PH
ใช้ทรัพยากรในการแปลภาษาอังกฤษ (สหรัฐอเมริกา)en
เมื่อไม่มีแหล่งข้อมูลการแปล แทนที่จะเป็นภาษาอังกฤษ (สหราชอาณาจักร)en‑GB
- เราได้เปิดตัวหมวดหมู่พหูพจน์
many
สำหรับภาษาสเปนes
อิตาลีit
โปรตุเกสpt
และโปรตุเกส (โปรตุเกส)pt‑PT
รูปแบบนี้ใช้สำหรับตัวเลขจำนวนมาก ซึ่งคล้ายกับรูปแบบภาษาฝรั่งเศสที่เปิดตัวใน CLDR v38
แบบอักษรเวกเตอร์สี
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับการแสดงผลแบบเรนเดอร์สำหรับแบบอักษร COLR เวอร์ชัน 1 (COLRv1) และอัปเดตอีโมจิของระบบเป็นรูปแบบ COLRv1 COLRv1 เป็นแบบอักษรที่กะทัดรัดและแสดงผลได้เร็วและคมชัดในทุกขนาด
สําหรับแอปส่วนใหญ่ ระบบจะจัดการทุกอย่างและ COLRv1 จะใช้งานได้ อย่างไรก็ตาม หากแอปของคุณใช้การแสดงผลข้อความของตัวเองและใช้แบบอักษรของระบบ เราขอแนะนำให้ทดสอบการแสดงผลอีโมจิ
ดูข้อมูลเพิ่มเติมเกี่ยวกับ COLRv1 ได้ที่แหล่งข้อมูลต่อไปนี้
- ประกาศในบล็อกของนักพัฒนาซอฟต์แวร์ Chrome
- การจัดส่งแบบอักษรเวกเตอร์สี COLRv1 ใน Chrome (วิดีโอ)
- ข้อกำหนดของตาราง COLR
API ตำแหน่งสำหรับการตั้งค่าด่วน
การตั้งค่าด่วนในแผงการแจ้งเตือนเป็นวิธีที่สะดวกสำหรับผู้ใช้ในการเปลี่ยนการตั้งค่าหรือดำเนินการอย่างรวดเร็วโดยไม่ต้องออกจากบริบทของแอป สำหรับแอปที่มีการ์ดที่กำหนดเอง เราจะทําให้ผู้ใช้ค้นพบและเพิ่มการ์ดลงในการตั้งค่าด่วนได้ง่ายขึ้น เมื่อใช้ API ตำแหน่งโฆษณาแบบการ์ดใหม่ ตอนนี้แอปสามารถแจ้งให้ผู้ใช้เพิ่มการ์ดที่กำหนดเองลงในชุดการ์ดการตั้งค่าด่วนที่ใช้งานอยู่ได้แล้ว กล่องโต้ตอบระบบแบบใหม่ช่วยให้ผู้ใช้เพิ่มการ์ดได้ในขั้นตอนเดียวโดยไม่ต้องออกจากแอป แทนที่จะต้องไปที่การตั้งค่าด่วนเพื่อเพิ่มการ์ด
ตัวอย่างในคลิปบอร์ด
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะแสดงการยืนยันด้วยภาพมาตรฐานเมื่อมีการเพิ่มเนื้อหาลงในคลิปบอร์ด การยืนยันแบบใหม่จะทําสิ่งต่อไปนี้
- ยืนยันว่าคัดลอกเนื้อหาสำเร็จแล้ว
- แสดงตัวอย่างเนื้อหาที่คัดลอก
ฟีเจอร์นี้ทำให้การแจ้งเตือนต่างๆ ที่แสดงโดยแอปหลังจากการคัดลอกมีลักษณะเหมือนกัน และช่วยให้ผู้ใช้ควบคุมคลิปบอร์ดได้มากขึ้น ดูข้อมูลเพิ่มเติมได้ที่หน้าฟีเจอร์คัดลอกและวาง
ท่าทางสัมผัสการย้อนกลับแบบคาดการณ์
Android 13 เปิดตัวท่าทางสัมผัสย้อนกลับแบบคาดการณ์สำหรับอุปกรณ์ Android เช่น โทรศัพท์ หน้าจอขนาดใหญ่ และอุปกรณ์แบบพับได้ การรองรับฟีเจอร์นี้กำหนดให้คุณต้องอัปเดตแอป
หากต้องการดูเอกสารโดยละเอียด โปรดดูหัวข้ออัปเดตแอปเพื่อรองรับท่าทางสัมผัสย้อนกลับแบบคาดการณ์ นอกจากนี้ คุณยังลองใช้Codelab ของเราได้ด้วย
Bluetooth LE Audio
เสียงพลังงานต่ำ (LE) คือเสียงไร้สายที่สร้างขึ้นเพื่อแทนที่บลูทูธคลาสสิก และช่วยให้ใช้กับ Use Case และโทโพโลยีการเชื่อมต่อบางรายการได้ ซึ่งช่วยให้ผู้ใช้สามารถแชร์และออกอากาศเสียงให้เพื่อนๆ และครอบครัวฟัง หรือติดตามการออกอากาศสาธารณะเพื่อรับข้อมูล ความบันเทิง หรือเพื่อเข้าถึงได้ เทคโนโลยีนี้ออกแบบมาเพื่อให้ผู้ใช้ได้รับเสียงคุณภาพสูงโดยไม่เสียอายุการใช้งานแบตเตอรี่ และสามารถสลับระหว่างกรณีการใช้งานต่างๆ ได้อย่างราบรื่น ซึ่งบลูทูธคลาสสิกทำไม่ได้ ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับ LE Audio ในตัว นักพัฒนาแอปจึงสามารถใช้ความสามารถเหล่านี้ได้ฟรีในอุปกรณ์ที่เข้ากันได้
MIDI 2.0
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับมาตรฐาน MIDI 2.0 รวมถึงความสามารถในการเชื่อมต่อฮาร์ดแวร์ MIDI 2.0 ผ่าน USB มาตรฐานนี้มีฟีเจอร์ต่างๆ เช่น ความละเอียดที่เพิ่มขึ้นสำหรับตัวควบคุม การรองรับที่ดียิ่งขึ้นสำหรับการออกเสียงสูงต่ำที่ไม่ใช่ภาษาตะวันตก และประสิทธิภาพที่เพิ่มมากขึ้นในการสื่อความหมายโดยใช้ตัวควบคุมต่อโน้ต
ปรับปรุงประสิทธิภาพของหน้าจอแนะนำ
Android 13 ปรับปรุงประสิทธิภาพของหน้าจอแนะนำแบบเคลื่อนไหวใน SplashScreen API ดังนี้
ระบบจะอนุมานระยะเวลาของภาพเคลื่อนไหวจาก
AnimatedVectorDrawable
โดยตรง ก่อน Android 13 คุณจำเป็นต้องตั้งค่าwindowSplashScreenAnimationDuration
โดยตรงใช้แอตทริบิวต์
windowSplashScreenBehavior
ใหม่เพื่อให้ควบคุมได้มากขึ้นว่าจะให้แอปแสดงไอคอนในหน้าจอแนะนำทุกครั้งใน Android 13 ขึ้นไปหรือไม่
ดูเอกสารประกอบโดยละเอียดได้ที่ Splash Screen
การเพิ่มประสิทธิภาพ ART
ใน Android 13 (API ระดับ 33) ขึ้นไป ART จะทำให้การเปลี่ยนจากโค้ดเนทีฟเป็นโค้ดเนทีฟและในทางกลับกันเร็วขึ้นมาก โดยตอนนี้การเรียก JNI เร็วขึ้นถึง 2.5 เท่า นอกจากนี้ เรายังได้ปรับปรุงการประมวลผลข้อมูลอ้างอิงรันไทม์ให้ทำงานแบบไม่บล็อกส่วนใหญ่ ซึ่งช่วยลดการกระตุกได้อีกด้วย นอกจากนี้ยังใช้ API สาธารณะของ Reference.refersTo()
เพื่ออ้างสิทธิ์ออบเจ็กต์ที่เข้าถึงไม่ได้ให้เร็วขึ้นได้ด้วย และจะเห็นว่าตัวล่ามเร็วขึ้นด้วยการค้นหาคลาสและเมธอดที่เพิ่มประสิทธิภาพ นอกจากนี้ ART ยังทำการยืนยันไบต์โค้ดเพิ่มเติม ณ เวลาติดตั้ง ซึ่งจะช่วยประหยัดค่าใช้จ่ายในการยืนยันขณะรันไทม์และทำให้เวลาเริ่มต้นของแอปรวดเร็ว
ความเป็นส่วนตัวและความปลอดภัย
การส่งออกตัวรับที่ลงทะเบียนตามบริบทที่ปลอดภัยยิ่งขึ้น
Android 13 เปิดตัวความสามารถของแอปในการระบุว่าควรส่งออกBroadcast Receiver ที่ลงทะเบียนไว้และทำให้แอปอื่นๆ ในอุปกรณ์มองเห็นหรือไม่ เพื่อช่วยเพิ่มความปลอดภัยให้กับ Receiver ที่รันไทม์ ใน Android เวอร์ชันก่อนหน้า แอปใดก็ตามในอุปกรณ์สามารถส่งการออกอากาศที่ไม่มีการป้องกันไปยังตัวรับที่ลงทะเบียนแบบไดนามิกได้ เว้นแต่ตัวรับนั้นจะได้รับการป้องกันโดยสิทธิ์ลายเซ็น
การกำหนดค่าการส่งออกนี้พร้อมใช้งานในแอปที่ดำเนินการอย่างใดอย่างหนึ่งต่อไปนี้อย่างน้อย
- ใช้คลาส
ContextCompat
จากไลบรารี AndroidX Core เวอร์ชัน 1.9.0 ขึ้นไป - กำหนดเป้าหมายเป็น Android 13 ขึ้นไป
เครื่องมือเลือกรูปภาพ
Android 13 (API ระดับ 33) ขึ้นไปมีเครื่องมือเลือกรูปภาพ เมื่อแอปเปิดเครื่องมือเลือกรูปภาพ ผู้ใช้จะเลือกรูปภาพและวิดีโอที่ต้องการแชร์กับแอป เช่น รูปโปรไฟล์ แทนที่จะให้สิทธิ์แอปเข้าถึงคลังสื่อทั้งหมด วิธีนี้เป็นวิธีที่แนะนำในการเข้าถึงรูปภาพและวิดีโอของผู้ใช้
เครื่องมือเลือกรูปภาพช่วยเพิ่มความเป็นส่วนตัวให้กับผู้ใช้เนื่องจากแอปของคุณไม่จําเป็นต้องประกาศสิทธิ์รันไทม์ นอกจากนี้ เครื่องมือเลือกรูปภาพยังมี UI มาตรฐานในตัวสำหรับแอป ซึ่งจะสร้างประสบการณ์การใช้งานที่สอดคล้องกันมากขึ้น
สิทธิ์รันไทม์ใหม่สำหรับอุปกรณ์ Wi-Fi ที่อยู่ใกล้เคียง
Android 13 (API ระดับ 33) เปิดตัว
สิทธิ์รันไทม์ใหม่ในกลุ่มสิทธิ์
NEARBY_DEVICES
สำหรับแอปที่จัดการการเชื่อมต่อของอุปกรณ์กับ
จุดเข้าใช้งานใกล้เคียงผ่าน Wi-Fi แอปเหล่านี้ต้องประกาศสิทธิ์ใหม่ NEARBY_WIFI_DEVICES
เมื่อเรียกใช้ Wi-Fi API หลายรายการ
นอกจากนี้ ตราบใดที่แอปไม่ได้ดึงข้อมูลตำแหน่งที่อยู่จริงจาก Wi-Fi API แอปก็ไม่จําเป็นต้องประกาศสิทธิ์ ACCESS_FINE_LOCATION
เมื่อกำหนดเป้าหมายเป็น Android 13 ขึ้นไป
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิทธิ์เข้าถึงอุปกรณ์ Wi-Fi ที่อยู่ใกล้เคียง
สิทธิ์ใหม่ในการใช้การปลุกในเวลาที่แน่นอน
หากแอปกำหนดเป้าหมายเป็น Android 13 ขึ้นไป คุณจะใช้สิทธิ์ USE_EXACT_ALARM
ได้ ซึ่งระบบจะมอบสิทธิ์นี้ให้แอปโดยอัตโนมัติ อย่างไรก็ตาม แอปต้องใช้เกณฑ์ต่อไปนี้อย่างน้อย 1 ข้อจึงจะใช้สิทธิ์นี้ได้
- แอปของคุณเป็นแอปนาฬิกาปลุกหรือแอปตัวจับเวลา
- แอปของคุณเป็นแอปปฏิทินที่แสดงการแจ้งเตือนสำหรับกิจกรรมที่กำลังจะเกิดขึ้น
หากแอปตั้งปลุกในเวลาที่แน่นอนแต่ไม่ตรงกับกรณีใดกรณีหนึ่งซึ่งแสดงในรายการก่อนหน้า ให้ประกาศสิทธิ์ SCHEDULE_EXACT_ALARM
ต่อไปแทน และเตรียมพร้อมรับมือกับกรณีที่ผู้ใช้ปฏิเสธการเข้าถึงแอป
สิทธิ์ที่ดาวน์เกรดโดยนักพัฒนาแอป
ตั้งแต่ Android 13 เป็นต้นไป แอปสามารถเพิกถอนสิทธิ์เข้าถึงสิทธิ์รันไทม์ที่ไม่ได้ใช้ API นี้จะช่วยให้แอปของคุณทำงานต่างๆ เพื่อเพิ่มความเป็นส่วนตัวได้ เช่น
- นำสิทธิ์ที่ไม่ได้ใช้ออก
- ปฏิบัติตามแนวทางปฏิบัติแนะนำเกี่ยวกับสิทธิ์ ซึ่งจะช่วยเพิ่มความน่าเชื่อถือให้แก่ผู้ใช้ คุณอาจต้องพิจารณาแสดงกล่องโต้ตอบแก่ผู้ใช้เพื่อแสดงสิทธิ์ที่คุณเพิกถอนไว้ล่วงหน้า
APK Signature Scheme v3.1
Android 13 เพิ่มการรองรับ APK Signature Scheme v3.1 ซึ่งปรับปรุงAPK Signature Scheme v3 ที่มีอยู่ รูปแบบนี้ช่วยแก้ปัญหาที่ทราบบางประการเกี่ยวกับการหมุนเวียนของ APK Signature Scheme v3 โดยเฉพาะอย่างยิ่ง รูปแบบลายเซ็น v3.1 รองรับการกำหนดเป้าหมายเวอร์ชัน SDK ซึ่งช่วยให้การหมุนเวียนกำหนดเป้าหมายเป็นแพลตฟอร์มรุ่นที่ใหม่กว่าได้
รูปแบบลายเซ็น v3.1 ใช้รหัสบล็อกที่ไม่รู้จักใน 12L หรือต่ำกว่า ดังนั้น แพลตฟอร์มจึงใช้พฤติกรรม ต่อไปนี้ของผู้ลงนาม
- อุปกรณ์ที่ใช้ Android 13 ขึ้นไปจะใช้เครื่องหมายแบบหมุนในบล็อกเวอร์ชัน 3.1
- อุปกรณ์ที่ใช้ Android เวอร์ชันเก่าจะไม่สนใจผู้ลงนามแบบหมุนเวียนและจะใช้ผู้ลงนามเดิมในบล็อกเวอร์ชัน 3.0 แทน
แอปที่ยังไม่ได้หมุนเวียนคีย์ Signing ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม เมื่อใดก็ตามที่แอปเหล่านี้เลือกที่จะหมุนเวียน ระบบจะใช้รูปแบบลายเซ็น v3.1 โดยค่าเริ่มต้น
แอปที่หมุนเวียนแล้วและต้องการนําคีย์ Signing ที่เปลี่ยนผ่านไปใช้ต่อในบล็อก Signing เวอร์ชัน 3.0 จะต้องอัปเดตapksigner
การเรียกใช้ ดังนี้
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
...โดยที่ API_LEVEL
มีค่าไม่เกิน 32
รายงานข้อผิดพลาดที่ดีขึ้นใน Keystore และ KeyMint
สำหรับแอปที่สร้างคีย์ ตอนนี้ Keystore และ KeyMint มีตัวบ่งชี้ข้อผิดพลาดที่ละเอียดและแม่นยำมากขึ้น เราได้เพิ่มลำดับชั้นของคลาสข้อยกเว้นในส่วน java.security.ProviderException
โดยมีข้อยกเว้นเฉพาะสำหรับ Android ที่รวมรหัสข้อผิดพลาดของ Keystore/KeyMint และระบุว่าข้อผิดพลาดจะลองอีกครั้งได้หรือไม่ นอกจากนี้ คุณยังแก้ไขวิธีการสร้างและการใช้คีย์ (การเซ็นชื่อ การเข้ารหัส) เพื่อแสดงข้อยกเว้นใหม่ได้ด้วย การรายงานข้อผิดพลาดที่ปรับปรุงใหม่ไม่ได้จำกัดอยู่แค่การสร้างคีย์ และตอนนี้ควรให้ข้อมูลที่จำเป็นสำหรับการลองสร้างคีย์อีกครั้ง
การรองรับแท็บเล็ตและหน้าจอขนาดใหญ่
Android 13 ต่อยอดมาจากการเพิ่มประสิทธิภาพแท็บเล็ตที่เปิดตัวใน Android 12 และการอัปเดตฟีเจอร์ใหม่ของ 12L ซึ่งรวมถึงการเพิ่มประสิทธิภาพ UI ของระบบ การทำงานหลายอย่างพร้อมกันที่ดีขึ้น และโหมดความเข้ากันได้ที่ปรับปรุงใหม่ ในการทดสอบ ให้ตรวจสอบว่าแอปของคุณดูดีที่สุดบนแท็บเล็ตและอุปกรณ์อื่นๆ ที่มีหน้าจอขนาดใหญ่
ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ใหม่และสิ่งที่ควรทดสอบได้ที่หน้าการรองรับแท็บเล็ตและหน้าจอขนาดใหญ่
กราฟิก
โปรแกรมปรับแสงเงา
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับออบเจ็กต์ RuntimeShader
ที่เขียนโปรแกรมได้ พร้อมลักษณะการทำงานที่กำหนดโดยใช้ Android Graphics Shading Language (AGSL) AGSL ใช้ไวยากรณ์ส่วนใหญ่ร่วมกับ GLSL แต่ทำงานภายในเครื่องมือแสดงผลของ Android เพื่อปรับแต่งการวาดภาพภายในผืนผ้าใบของ Android รวมถึงการกรองเนื้อหาของ View
Android ใช้โปรแกรมเปลี่ยนสีเหล่านี้ภายในเพื่อใช้เอฟเฟกต์กระเพื่อม เบลอ และการเลื่อนแบบยืด
Android 13 ขึ้นไปช่วยให้คุณสร้างเอฟเฟกต์ขั้นสูงที่คล้ายกันสำหรับแอปได้
การปรับปรุง Choreographer
Android 13 เปิดตัวเมธอด API สาธารณะสำหรับ Choreographer
และ ASurfaceControl
ซึ่งจะให้ข้อมูลเพิ่มเติมเกี่ยวกับไทม์ไลน์เฟรมที่เป็นไปได้แก่แอป และเพิ่มบริบทเพิ่มเติมเกี่ยวกับSurfaceFlinger
เกี่ยวกับวงจรเฟรม เช่นเดียวกับก่อนหน้านี้ แอปสามารถโพสต์การเรียกกลับไปยัง Choreographer
และรับข้อมูลไทม์ไลน์เฟรม ใน Android 13 (API ระดับ 33) Choreographer
จะแสดงผลเวลาการนำเสนอที่เป็นไปได้หลายครั้งและกำหนดเวลาของเฟรมที่สอดคล้องกัน แอปสามารถเลือกเวลานำเสนอและแจ้งให้ SurfaceFlinger
ทราบSurfaceFlinger
ในภายหลัง SurfaceFlinger
จะไม่พยายามใช้ธุรกรรมหรือบัฟเฟอร์การยึดตำแหน่งก่อนเวลาที่ต้องการแสดง
กล้อง
การจับภาพวิดีโอ HDR
ตั้งแต่ Android 13 เป็นต้นไป Camera2 API จะรองรับการจับภาพวิดีโอ High Dynamic Range (HDR) ซึ่งจะช่วยให้คุณดูตัวอย่างและบันทึกเนื้อหาวิดีโอ HDR โดยใช้กล้องได้ เมื่อเทียบกับช่วงไดนามิกมาตรฐาน (SDR) นั้น HDR มีช่วงสีที่กว้างขึ้นและเพิ่มช่วงไดนามิกขององค์ประกอบความสว่าง (จาก 100 cd/m2 ในปัจจุบันเป็น 1,000 cd/m2) ส่งผลให้วิดีโอมีคุณภาพใกล้เคียงกับชีวิตจริงมากขึ้น โดยมีสีสันที่สดใสขึ้น ไฮไลต์ที่สว่างขึ้น และแสงเงาที่เข้มขึ้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการจับภาพวิดีโอ HDR ได้ในเอกสารการจับภาพวิดีโอ HDR
สื่อ
เสียงรอบทิศทาง
เสียงรอบทิศทางเป็นประสบการณ์เสียงที่สมจริงซึ่งทำให้เนื้อหาสื่อของผู้ใช้ฟังดูสมจริงยิ่งขึ้น ดูรายละเอียดเกี่ยวกับวิธีผสานรวมกับฟีเจอร์นี้ในเอกสารประกอบเสียงรอบทิศทาง
การกำหนดเส้นทางเสียงแบบคาดการณ์
Android 13 ได้เปิดตัว API เส้นทางเสียงในคลาส AudioManager
เพื่อช่วยแอปสื่อระบุวิธีกำหนดเส้นทางเสียง getAudioDevicesForAttributes()
API ช่วยให้คุณสามารถดึงข้อมูลรายการอุปกรณ์ที่อาจใช้เล่นเสียงที่ระบุ และ getDirectProfilesForAttributes()
API จะช่วยให้คุณทราบว่าสตรีมเสียงเล่นได้โดยตรงหรือไม่ ใช้ API เหล่านี้เพื่อกำหนด AudioFormat
ที่ดีที่สุดที่จะใช้สำหรับแทร็กเสียงของคุณ
การช่วยเหลือพิเศษ
เสียงบรรยาย
Android 13 (API ระดับ 33) เปิดตัวค่ากำหนดการช่วยเหลือพิเศษใหม่สำหรับทั้งระบบ ซึ่งช่วยให้ผู้ใช้เปิดใช้คำบรรยายแทนเสียงในแอปทั้งหมดได้ เสียงบรรยายคือแทร็กเสียงบรรยายเพิ่มเติมที่ประกอบด้วยผู้บรรยายที่พูดไปตลอดงานนำเสนอ โดยอธิบายสิ่งที่เกิดขึ้นบนหน้าจอในระหว่างการหยุดชั่วคราวตามปกติของเสียง
แอปสามารถดำเนินการตามค่ากำหนดของผู้ใช้สำหรับแทร็กเสียงบรรยายได้โดยค้นหาด้วย isAudioDescriptionRequested()
ตามที่แสดงในข้อมูลโค้ดต่อไปนี้
Kotlin
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
Java
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
แอปสามารถตรวจสอบการเปลี่ยนแปลงค่ากําหนดของผู้ใช้ได้โดยการเพิ่มโปรแกรมรับฟังในAccessbilityManager
Kotlin
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
Java
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
ฟังก์ชันหลัก
การอัปเดต OpenJDK 11
Android 13 เริ่มการปรับปรุงไลบรารีหลักของ Android ให้สอดคล้องกับรุ่น OpenJDK 11 LTS ทั้งการอัปเดตไลบรารีและการรองรับภาษา Java 11 สําหรับนักพัฒนาแอปพลิเคชันและแพลตฟอร์ม การเปลี่ยนแปลงไลบรารีหลักที่เปิดตัวใน Android 13 จะพร้อมใช้งานในอุปกรณ์ Android 12 ผ่านการอัปเดตระบบ Google Play ไปยังโมดูล Mainline ของ ART ด้วย
Android 13 มีการเปลี่ยนแปลงต่อไปนี้ในไลบรารีหลัก
- การรองรับคีย์เวิร์ด
var
สำหรับตัวแปรภายในและใช้เป็นพารามิเตอร์ของ Lambda เมธอดใหม่ในคลาสสตริง:
isBlank()
lines()
repeat()
strip()
stripLeading()
stripTrailing()
รองรับ
Collection.toArray(IntFunction)
เพื่อให้ปรับคอลเล็กชันเป็นอาร์เรย์ได้ง่ายขึ้นรองรับ
ifPresentOrElse()
,isEmpty()
,orElseThrow()
และstream()
ในjava.util
คลาสOptional
,OptionalDouble
,OptionalInt
และOptionalLong
การรองรับ
SocketOptions
เพิ่มเติม รวมถึงการใช้ซ็อกเก็ตซ้ำฟังก์ชัน
NullReader
,NullWriter
,InputStream
,OutputStream
และtransferTo()
Reader
ซึ่งจะโอนอักขระที่อ่านแล้วไปยังWriter
เพิ่มฟังก์ชันสําหรับการเข้ารหัสและถอดรหัส URL โดยใช้
Charsets
ฟังก์ชัน
Charset
สำหรับFileReader
,FileWriter
,PrintStream
และPrintWriter
ฟังก์ชัน
transferTo()
,readNBytes()
,readAllBytes()
และwriteBytes()
ใหม่สําหรับByteArrayInput
หรือOutputStream
และInput
หรือOutputStream
การรองรับรันไทม์และคอมไพเลอร์สำหรับ
java.lang.invoke.VarHandle
อัปเดต
java.util.concurrent
เป็น OpenJDK 11 API โดยใช้VarHandle
ภายใน
Java และ OpenJDK เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Oracle และ/หรือบริษัทในเครือ