ภาพรวมฟีเจอร์และ API

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

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

เครื่องมือและประสิทธิภาพการทำงานของนักพัฒนาแอป

ไอคอนแอปแบบมีธีม

ผู้ใช้เลือกใช้ไอคอนแอปตามธีม
เลือกใช้ไอคอนแอปตามธีมใน Android 13

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

เพื่อรองรับฟีเจอร์นี้ แอปของคุณต้องมีทั้งไอคอนแบบปรับได้และไอคอนแอปสีเดียว รวมถึงชี้ไปที่ไอคอนแอปโมโนโครมจากองค์ประกอบ <adaptive-icon> ในไฟล์ Manifest หากผู้ใช้เปิดใช้ไอคอนแอปที่มีธีม (หรือก็คือเปิดปุ่มสลับไอคอนที่มีธีมในการตั้งค่าระบบ) และตัวเปิดใช้รองรับฟีเจอร์นี้ ระบบจะใช้สีของวอลเปเปอร์และธีมที่ผู้ใช้เลือกเพื่อกำหนดสีของสีอ่อน จากนั้นจะใช้สีนั้นกับไอคอนแอปโมโนโครม

หน้าจอหลักจะไม่แสดงไอคอนแอปตามธีม แต่แสดงไอคอนแอปแบบปรับเปลี่ยนได้หรือแบบมาตรฐานแทน ในกรณีต่อไปนี้

  • หากผู้ใช้ไม่ได้เปิดใช้ไอคอนแอปตามธีม
  • หากแอปไม่มีไอคอนแอปสีเดียว
  • หาก 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 แอปจะเรียกใช้ API การแปลงข้อความใหม่เพื่อให้ผู้ใช้ค้นหาสิ่งที่ต้องการได้รวดเร็วและง่ายขึ้น ตัวอย่างเช่น ก่อนหน้านี้ การค้นหา จำเป็นต้องให้ผู้ใช้ภาษาญี่ปุ่นทำตามขั้นตอนต่อไปนี้

  1. ป้อนฮิรางานะเป็นการออกเสียงข้อความค้นหา (เช่น สถานที่หรือชื่อแอป)
  2. ใช้แป้นพิมพ์เพื่อแปลงอักขระฮิรากานะเป็นคันจิ
  3. ค้นหาอีกครั้งโดยใช้อักขระคันจิ
  4. สุดท้ายก็ดูผลการค้นหา

API การแปลงข้อความแบบใหม่ช่วยให้ผู้ใช้ชาวญี่ปุ่นสามารถพิมพ์เป็นภาษาฮิรางานะและดูผลการค้นหาตัวคันจิได้ทันทีโดยไม่ต้องผ่านขั้นตอนที่ 2 และ 3

ปรับปรุงความสูงของบรรทัดสำหรับสคริปต์ที่ไม่ใช่แบบละติน

Android 13 ปรับปรุงการแสดงสคริปต์ที่ไม่ใช่แบบละติน (เช่น ทมิฬ พม่า เตลูกู และทิเบต) โดยใช้ความสูงของบรรทัดที่ปรับให้เหมาะกับแต่ละภาษา ความสูงของบรรทัดใหม่ป้องกันไม่ให้ตัดและปรับปรุงการวางตำแหน่งของอักขระ แอปของคุณจะใช้ประโยชน์จากการปรับปรุงเหล่านี้ได้ง่ายๆ เพียงกำหนดเป้าหมายเป็น Android 13 อย่าลืมทดสอบแอปเมื่อใช้การเว้นบรรทัดใหม่ เนื่องจากการเปลี่ยนแปลงนี้อาจส่งผลต่อ UI ในภาษาที่ไม่ใช่ภาษาละติน

ความสูงของบรรทัดที่ตัดใน Android 12 (สูงกว่า) ซึ่งตอนนี้อยู่ในตำแหน่งที่ดีขึ้นและไม่ได้ตัดใน Android 13 (ด้านล่าง)

ปรับปรุงการตัดข้อความภาษาญี่ปุ่น

ตั้งแต่ Android 13 เป็นต้นไป TextViews สามารถตัดข้อความโดย Bunsetsu (หน่วยคำที่เล็กที่สุดที่ฟังดูเป็นธรรมชาติ) หรือวลีแทนการใช้อักขระตามตัวอักษร เพื่อแอปพลิเคชันภาษาญี่ปุ่นที่สวยงามและอ่านง่ายขึ้น คุณใช้ประโยชน์จากการตัดขึ้นบรรทัดใหม่นี้ได้โดยใช้ android:lineBreakWordStyle="phrase" กับ TextView

การตัดข้อความภาษาญี่ปุ่นที่เปิดใช้รูปแบบวลี (ด้านล่าง) และไม่มี (ด้านบน)

การอัปเดตไลบรารี Unicode

Android 13 เพิ่มการปรับปรุง การแก้ไข และการเปลี่ยนแปลงล่าสุดที่รวมอยู่ใน Unicode ICU 70, Unicode CLDR 40 และ Unicode 14.0

การเปลี่ยนแปลงที่สำคัญมีดังนี้

  • ทั้งภาษาอังกฤษ (แคนาดา) en‑CA และภาษาอังกฤษ (สาธารณรัฐฟิลิปปินส์) en‑PH ใช้ทรัพยากรในการแปลภาษาอังกฤษ (สหรัฐอเมริกา) en เมื่อไม่มีแหล่งข้อมูลการแปล แทนที่จะเป็นภาษาอังกฤษ (สหราชอาณาจักร) en‑GB
  • เราได้เปิดตัวหมวดหมู่พหูพจน์ many สำหรับภาษาสเปน es อิตาลี it โปรตุเกส pt และโปรตุเกส (โปรตุเกส) pt‑PT รูปแบบนี้ใช้สำหรับตัวเลขจำนวนมาก ซึ่งคล้ายกับรูปแบบภาษาฝรั่งเศสที่เปิดตัวใน CLDR v38

แบบอักษรเวกเตอร์สี

อีโมจิเวกเตอร์ COLRv1 (ซ้าย) และอีโมจิบิตแมป (ขวา)

เริ่มตั้งแต่ Android 13 ระบบจะรองรับการแสดงผลสำหรับแบบอักษร COLR เวอร์ชัน 1 (COLRv1) และอัปเดตอีโมจิของระบบเป็นรูปแบบ COLRv1 COLRv1 เป็นรูปแบบแบบอักษรที่กะทัดรัดมากซึ่งแสดงผลได้อย่างรวดเร็วและคมชัดในทุกขนาด

สําหรับแอปส่วนใหญ่ ระบบจะจัดการทุกอย่างและ COLRv1 จะใช้งานได้ อย่างไรก็ตาม หากแอปใช้การแสดงผลข้อความของตนเองและใช้แบบอักษรของระบบ เราขอแนะนำให้ทดสอบการแสดงอีโมจิ

ดูข้อมูลเพิ่มเติมเกี่ยวกับ COLRv1 ได้ที่แหล่งข้อมูลต่อไปนี้

Quick Settings placement API

การตั้งค่าด่วนในแผงการแจ้งเตือนเป็นวิธีที่สะดวกสำหรับผู้ใช้ในการเปลี่ยนการตั้งค่าหรือดำเนินการอย่างรวดเร็วโดยไม่ต้องออกจากบริบทของแอป สำหรับแอปที่มีการ์ดที่กำหนดเอง เราจะทําให้ผู้ใช้ค้นพบและเพิ่มการ์ดลงในการตั้งค่าด่วนได้ง่ายขึ้น เมื่อใช้ Tile Placement API ใหม่ ตอนนี้แอปสามารถแจ้งให้ผู้ใช้เพิ่มการ์ดที่กําหนดเองลงในชุดการ์ดการตั้งค่าด่วนที่ใช้งานอยู่ได้โดยตรง กล่องโต้ตอบแบบใหม่ของระบบช่วยให้ผู้ใช้เพิ่มการ์ดได้ในขั้นตอนเดียวโดยไม่ต้องออกจากแอป แทนที่จะต้องไปที่การตั้งค่าด่วนเพื่อเพิ่มการ์ด

กล่องโต้ตอบที่ถามผู้ใช้ว่าต้องการเพิ่มการ์ดลงในการตั้งค่าด่วนหรือไม่

ตัวอย่างคลิปบอร์ด

ตั้งแต่ Android 13 เป็นต้นไป ระบบจะแสดงการยืนยันด้วยภาพมาตรฐานเมื่อมีการเพิ่มเนื้อหาลงในคลิปบอร์ด การยืนยันแบบใหม่จะทําสิ่งต่อไปนี้

  • ยืนยันว่าคัดลอกเนื้อหาเรียบร้อยแล้ว
  • แสดงตัวอย่างเนื้อหาที่คัดลอก

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

วิดเจ็ตคัดลอก/วาง
UI ใหม่จะแสดงขึ้นเมื่อเนื้อหาเข้าสู่คลิปบอร์ด

ท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้

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 ปรับปรุงประสิทธิภาพของหน้าจอแนะนำแบบเคลื่อนไหวใน Splash Screen 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 ที่ลงทะเบียน และแสดงต่อแอปอื่นๆ ในอุปกรณ์หรือไม่ ใน Android เวอร์ชันก่อนหน้า ทุกแอปในอุปกรณ์อาจส่งการออกอากาศที่ไม่มีการป้องกันไปยังเครื่องรับที่ลงทะเบียนแบบไดนามิกได้ เว้นแต่เครื่องรับดังกล่าวจะได้รับการปกป้องโดยสิทธิ์ตามลายเซ็น

การกำหนดค่าการส่งออกนี้พร้อมใช้งานในแอปที่ทำสิ่งต่อไปนี้อย่างน้อย 1 อย่าง

  • ใช้คลาส ContextCompat จาก AndroidX Core Library เวอร์ชัน 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 ซึ่งทำให้การหมุนเวียนเพื่อกำหนดเป้าหมายแพลตฟอร์มรุ่นต่อๆ ไปได้

Signature Scheme v3.1 ใช้รหัสบล็อกที่ไม่รู้จักใน 12L หรือต่ำกว่า แพลตฟอร์มจึงใช้ลักษณะการทํางานของผู้ลงนามต่อไปนี้

  • อุปกรณ์ที่ใช้ Android 13 ขึ้นไปจะใช้ผู้ลงนามแบบหมุนในบล็อก v3.1
  • อุปกรณ์ที่ใช้ Android เวอร์ชันเก่าจะไม่สนใจผู้ลงนามแบบหมุนเวียนและจะใช้ผู้ลงนามเดิมในบล็อกเวอร์ชัน 3.0 แทน

แอปที่ยังไม่ได้หมุนเวียนคีย์ Signing ไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม เมื่อใดก็ตามที่แอปเหล่านี้เลือกที่จะหมุนเวียน ระบบจะใช้รูปแบบลายเซ็น v3.1 โดยค่าเริ่มต้น

แอปที่หมุนเวียนไปแล้วและต้องการใช้คีย์การลงนามแบบหมุนเวียนในบล็อกการลงชื่อเข้าใช้เวอร์ชัน 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 หรือต่ำกว่า

การรายงานข้อผิดพลาดที่ดียิ่งขึ้นในคีย์สโตร์และ KeyMint

สำหรับแอปที่สร้างคีย์ ตอนนี้ Keystore และ KeyMint มีตัวบ่งชี้ข้อผิดพลาดที่ละเอียดและแม่นยำมากขึ้น เราได้เพิ่มลําดับชั้นของคลาสข้อยกเว้นในส่วน java.security.ProviderException โดยมีข้อยกเว้นเฉพาะ Android ซึ่งรวมถึงรหัสข้อผิดพลาดของ Keystore/KeyMint และระบุว่าข้อผิดพลาดนั้นลองอีกครั้งได้หรือไม่ คุณยังแก้ไขวิธีการสร้างคีย์และใช้ (การลงนาม การเข้ารหัส) เพื่อส่งข้อยกเว้นใหม่ได้ด้วย การรายงานข้อผิดพลาดที่ปรับปรุงแล้วไม่ได้จำกัดเฉพาะการสร้างคีย์ และตอนนี้จะให้ข้อมูลที่จำเป็นแก่คุณในการลองสร้างคีย์อีกครั้ง

รองรับแท็บเล็ตและหน้าจอขนาดใหญ่

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

ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์ใหม่และสิ่งที่ควรทดสอบได้ที่หน้าการรองรับแท็บเล็ตและหน้าจอขนาดใหญ่

กราฟิก

โปรแกรมปรับแสงเงา

ตัวปรับแสงเงาแบบเคลื่อนไหว AGSL ซึ่งดัดแปลงมาจากตัวปรับแสงเงา GLSL นี้

ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับออบเจ็กต์ RuntimeShader ที่เขียนโปรแกรมได้ พร้อมลักษณะการทำงานที่กำหนดโดยใช้ Android Graphics Shading Language (AGSL) AGSL ใช้ไวยากรณ์ส่วนใหญ่ร่วมกับ GLSL แต่ทำงานภายในเครื่องมือแสดงผลของ Android เพื่อปรับแต่งการวาดภาพภายในผืนผ้าใบของ Android รวมถึงการกรองเนื้อหาของ View Android จะใช้ตัวปรับแสงเงาเหล่านี้เป็นการภายในเพื่อใส่เอฟเฟกต์ระลอกคลื่น เบลอ และเลื่อนที่ยืดยาวขึ้น Android 13 ขึ้นไปช่วยให้คุณสร้างเอฟเฟกต์ขั้นสูงที่คล้ายกันสำหรับแอปได้

ปรับปรุงนักออกแบบท่าเต้น

Android 13 เปิดตัวเมธอด API สาธารณะใน Choreographer และ ASurfaceControl ซึ่งให้ข้อมูลเพิ่มเติมเกี่ยวกับไทม์ไลน์ที่เป็นไปได้ของเฟรมแก่แอป และเพิ่มบริบทให้กับ SurfaceFlinger เกี่ยวกับวงจรของเฟรม เช่นเดียวกับก่อนหน้านี้ แอปจะโพสต์ Callback ไปยัง Choreographer และรับข้อมูลไทม์ไลน์ของเฟรมได้ ใน Android 13 (API ระดับ 33) Choreographer จะแสดงผลเวลาการนำเสนอที่เป็นไปได้หลายครั้งและกำหนดเวลาของเฟรมที่สอดคล้องกัน แอปสามารถเลือกเวลานำเสนอและแจ้งให้ SurfaceFlingerทราบSurfaceFlingerในภายหลัง SurfaceFlinger จะไม่พยายามใช้ธุรกรรมหรือบัฟเฟอร์การยึดตำแหน่งก่อนเวลาที่ต้องการแสดง

หากแอปใช้ Choreographer และ SurfaceControl ใหม่ คุณสามารถดูวงจรการใช้งานเฟรมของแอปได้ในการติดตาม Perfetto

กล้อง

การจับภาพวิดีโอ HDR

ตั้งแต่ Android 13 เป็นต้นไป API ของกล้องถ่ายรูป2 จะรองรับการจับภาพวิดีโอแบบ High Dynamic Range (HDR) ซึ่งช่วยให้คุณดูตัวอย่างและบันทึกเนื้อหาวิดีโอ HDR โดยใช้กล้องได้ เมื่อเทียบกับ Standard Dynamic Range (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
}

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

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 และ/หรือบริษัทในเครือ