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

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

  • หากผู้ใช้ไม่ได้เปิดใช้ไอคอนแอปตามธีม
  • หากแอปไม่มีไอคอนแอปสีเดียว
  • หาก 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()

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" ด้วย TextViews

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

การอัปเดตไลบรารี 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 โปรดดูแหล่งข้อมูลต่อไปนี้

API ตำแหน่งสำหรับการตั้งค่าด่วน

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

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

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

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

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

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

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

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

Android 13 มีท่าทางสัมผัสย้อนกลับแบบคาดการณ์สำหรับอุปกรณ์ Android เช่น โทรศัพท์ หน้าจอขนาดใหญ่ และโทรศัพท์แบบพับได้ คุณต้องมีคุณสมบัติต่อไปนี้จึงจะรองรับฟีเจอร์นี้ อัปเดตแอปของคุณ

ดูเอกสารประกอบโดยละเอียดได้ที่อัปเดตแอปเพื่อรองรับการคาดการณ์ย้อนกลับ ท่าทางสัมผัส หรือคุณจะลอง Codelab

Bluetooth LE Audio

เสียงพลังงานต่ำ (LE) เป็นเสียงไร้สายที่สร้างขึ้นเพื่อแทนที่ บลูทูธแบบคลาสสิกและเปิดใช้บางกรณีการใช้งานและโทโพโลยีการเชื่อมต่อ ทั้งนี้ ช่วยให้ผู้ใช้แชร์และประกาศเสียงของตนกับเพื่อนๆ และครอบครัว หรือ สมัครรับข้อมูลการเผยแพร่แบบสาธารณะเพื่อรับข้อมูล ความบันเทิง หรือการช่วยเหลือพิเศษ ออกแบบมาเพื่อให้ผู้ใช้รับเสียงความคมชัดสูงได้ ลดอายุการใช้งานแบตเตอรี่และสามารถสลับระหว่างการใช้งานที่แตกต่างกันได้อย่างราบรื่น ที่ใช้กับบลูทูธแบบคลาสสิกไม่ได้ เริ่มตั้งแต่ Android 13 เป็นต้นไป มีการสนับสนุน LE Audio ในตัว ดังนั้นนักพัฒนาซอฟต์แวร์จึงได้รับ ได้ฟรีบนอุปกรณ์ที่เข้ากันได้

MIDI 2.0

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

ปรับปรุงประสิทธิภาพของหน้าจอแนะนำ

Android 13 ปรับปรุงประสิทธิภาพของหน้าจอแนะนําแบบเคลื่อนไหวใน Splash API หน้าจอ:

  • ระบบจะอนุมานระยะเวลาของภาพเคลื่อนไหวโดยตรงจาก AnimatedVectorDrawable ก่อนที่จะมี Android 13 จำเป็นต้องตั้งค่า windowSplashScreenAnimationDurationโดยตรง

  • ใช้แอตทริบิวต์ windowSplashScreenBehavior ใหม่เพื่อให้ควบคุมได้มากขึ้น แอปแสดงไอคอนในหน้าจอแนะนำเสมอใน Android 13 หรือไม่ และสูงกว่า

ดูเอกสารประกอบโดยละเอียดได้ที่ Splash Screen

การเพิ่มประสิทธิภาพ ART

ใน Android 13 (API ระดับ 33) ขึ้นไป ART จะเปลี่ยนไปใช้และเปลี่ยนจากโฆษณาเนทีฟ รหัสได้เร็วขึ้นมาก โดยสามารถติดต่อกับ JNI ได้เร็วขึ้นถึง 2.5 เท่า ข้อมูลอ้างอิงรันไทม์ การประมวลผลยังได้รับการปรับปรุงใหม่ ให้วิดีโอเป็นแบบไม่บล็อกเป็นส่วนใหญ่ ก็ช่วยลดการกระตุกได้ นอกจากนี้ คุณยังสามารถใช้ Reference.refersTo() Public API เพื่อเรียกคืนออบเจ็กต์ที่เข้าถึงไม่ได้ให้เร็วขึ้น โดยคุณจะเห็น ตอนนี้อินเตอร์พรีเตอร์ทำงานเร็วขึ้นด้วยการค้นหาคลาสและเมธอดที่เพิ่มประสิทธิภาพ ART ด้วย ทำการยืนยันแบบไบต์โค้ดมากขึ้น ณ เวลาติดตั้ง โดยหลีกเลี่ยงไม่ให้ การยืนยันขณะรันไทม์ และทำให้เวลาเริ่มต้นแอปรวดเร็ว

ความเป็นส่วนตัวและความปลอดภัย

การส่งออกข้อมูลตัวรับที่ลงทะเบียนตามบริบทได้อย่างปลอดภัยยิ่งขึ้น

เพื่อช่วยให้ตัวรับรันไทม์ปลอดภัยยิ่งขึ้น Android 13 จึงเปิดตัว ความสามารถของแอปเพื่อระบุว่า Broadcast Receiver ที่จดทะเบียน ควรส่งออกและปรากฏแก่แอปอื่นๆ ในอุปกรณ์ ในเวอร์ชันก่อนหน้า ของ Android แอปทั้งหมดในอุปกรณ์อาจส่งการบรอดแคสต์ที่ไม่มีการป้องกันไปยัง ผู้รับที่ลงทะเบียนแบบไดนามิก เว้นแต่ผู้รับนั้นได้รับการปกป้องโดย สิทธิ์ลายเซ็น

การกำหนดค่าการส่งออกนี้พร้อมใช้งานในแอปที่มีคุณสมบัติตามเกณฑ์อย่างน้อย 1 อย่าง ดังต่อไปนี้:

เครื่องมือเลือกรูปภาพ

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 เกี่ยวกับการหมุนเวียน โดยเฉพาะอย่างยิ่ง เวอร์ชัน 3.1 รูปแบบลายเซ็นรองรับการกำหนดเป้าหมายเวอร์ชัน SDK ซึ่งช่วยให้สามารถหมุน กำหนดเป้าหมายแพลตฟอร์มรุ่นต่อๆ ไป

รูปแบบลายเซ็น v3.1 ใช้รหัสบล็อกที่ระบบไม่รู้จัก 12L หรือต่ำกว่า ดังนั้น แพลตฟอร์มจึงใช้ พฤติกรรมของผู้ลงนามต่อไปนี้

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

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

แอปที่หมุนเวียนไปแล้วและต้องการใช้การลงนามแบบหมุนเวียนต่อไป ในบล็อกการลงชื่อ v3.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 ของระบบ การทำงานหลายอย่างพร้อมกันที่ดีขึ้น และโหมดความเข้ากันได้ที่ได้รับการปรับปรุงใหม่ ในระหว่างการทดสอบ โปรดตรวจสอบว่าแอป ดูดีที่สุดบนแท็บเล็ตและอุปกรณ์ที่มีหน้าจอขนาดใหญ่อื่นๆ

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

กราฟิก

ตัวปรับแสงเงาแบบตั้งโปรแกรมได้

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

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

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

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

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

กล้อง

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

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