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

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

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

ประสิทธิภาพการทำงานและเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์

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

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

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

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

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

  • หากผู้ใช้ไม่ได้เปิดใช้ไอคอนแอปตามธีม
  • หากแอปไม่มีไอคอนแอปสีเดียว
  • หาก Launcher ไม่รองรับไอคอนแอปตามธีม

ดูรายละเอียดเพิ่มเติมและวิธีการได้ที่ไอคอนที่ปรับเปลี่ยนได้

ค่ากำหนดภาษาที่ใช้ในแอป

ภาษาที่ใช้ในแอปในการตั้งค่าระบบ

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

  • การตั้งค่าระบบ: ตำแหน่งส่วนกลางที่ผู้ใช้สามารถเลือกภาษาที่ต้องการสำหรับแต่ละแอปได้

    แอปของคุณต้องประกาศแอตทริบิวต์ android:localeConfig ในไฟล์ Manifest ของแอปเพื่อแจ้งให้ระบบทราบว่าแอปของคุณรองรับหลายภาษา ดูข้อมูลเพิ่มเติมได้ที่วิธีการสร้างไฟล์ทรัพยากรและประกาศในไฟล์ Manifest ของแอป

  • API เพิ่มเติม: API สาธารณะเหล่านี้ เช่น เมธอด setApplicationLocales() และ getApplicationLocales() ใน LocaleManager ช่วยให้แอป ตั้งค่าภาษาอื่นที่ไม่ใช่ภาษาของระบบขณะรันไทม์ได้

    API เหล่านี้จะซิงค์กับการตั้งค่าระบบโดยอัตโนมัติ ดังนั้นแอปที่ใช้ API เหล่านี้เพื่อสร้างตัวเลือกภาษาในแอปที่กำหนดเองจะช่วยให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่สอดคล้องกัน ไม่ว่าผู้ใช้จะเลือกค่ากำหนดภาษาที่ใดก็ตาม นอกจากนี้ API สาธารณะยังช่วยลดปริมาณ โค้ดมาตรฐาน รองรับ APK แยก และรองรับการสำรองข้อมูลอัตโนมัติสำหรับแอปเพื่อจัดเก็บการตั้งค่าภาษาของผู้ใช้ระดับแอป

    API ที่เทียบเท่ากันยังมีให้บริการใน AndroidX เพื่อให้เข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า เราขอแนะนำให้ใช้ API ที่เพิ่มใน Appcompat 1.6.0-beta01 ขึ้นไป

แอปที่ไม่รองรับหลายภาษาจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงเหล่านี้

ปรับปรุงการรองรับข้อความและภาษา

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

การใส่ยัติภังค์ที่เร็วขึ้น

การใส่ยัติภังค์ช่วยให้อ่านข้อความที่ขึ้นบรรทัดใหม่ได้ง่ายขึ้นและช่วยให้ UI ปรับเปลี่ยนได้มากขึ้น ตั้งแต่ Android 13 เป็นต้นไป ระบบจะเพิ่มประสิทธิภาพการตัดคำได้มากถึง 200% เพื่อให้คุณเปิดใช้ใน TextView ได้โดยแทบไม่ส่งผลต่อประสิทธิภาพการแสดงผล หากต้องการเปิดใช้การใส่ยัติภังค์ที่เร็วขึ้น ให้ใช้ความถี่ fullFast หรือ normalFast ใน setHyphenationFrequency()

API สำหรับ Conversion จากข้อความ

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

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

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

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

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

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

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

ตั้งแต่ Android 13 เป็นต้นไป TextView สามารถตัดข้อความตาม 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 ได้จากแหล่งข้อมูลต่อไปนี้

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

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

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

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

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

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

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

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

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

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

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

Bluetooth LE Audio

เสียงพลังงานต่ำ (LE) คือเสียงไร้สายที่สร้างขึ้นมาเพื่อแทนที่ บลูทูธคลาสสิก และเปิดใช้ Use Case และโทโพโลยีด้านการเชื่อมต่อบางอย่าง ซึ่งช่วยให้ผู้ใช้แชร์และออกอากาศเสียงของตนเองให้เพื่อนและครอบครัวฟัง หรือ ติดตามการออกอากาศแบบสาธารณะเพื่อรับข้อมูล ความบันเทิง หรือการเข้าถึง โดยออกแบบมาเพื่อให้ผู้ใช้ได้รับเสียงที่มีความเที่ยงตรงสูงโดยไม่ ลดอายุการใช้งานแบตเตอรี่ และสามารถสลับระหว่างกรณีการใช้งานต่างๆ ได้อย่างราบรื่น ซึ่งทำไม่ได้ด้วย Bluetooth Classic ตั้งแต่ 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 ขึ้นไปเสมอหรือไม่

ดูเอกสารประกอบแบบละเอียดได้ที่หน้าจอเริ่มต้น

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

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

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

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

Android 13 ได้เปิดตัวความสามารถให้แอปของคุณระบุว่าควรส่งออกและแสดงต่อแอปอื่นๆ ในอุปกรณ์หรือไม่สำหรับ Broadcast Receiver ที่ลงทะเบียน เพื่อช่วยให้ Runtime 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 APIs ก็ไม่จำเป็นต้องประกาศสิทธิ์ 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 ขึ้นไปจะใช้โปรแกรมลงนามที่หมุนในบล็อก v3.1
  • อุปกรณ์ที่ใช้ Android เวอร์ชันเก่ากว่าจะละเว้นผู้ลงนามที่หมุนเวียนและ ใช้ผู้ลงนามเดิมในบล็อก v3.0 แทน

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

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

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

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

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

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

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

กราฟิก

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

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

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

การปรับปรุง Choreographer

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

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

กล้อง

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

ตั้งแต่ Android 13 เป็นต้นไป Camera2 APIs จะรองรับการบันทึกวิดีโอแบบ High Dynamic Range (HDR) ซึ่งช่วยให้คุณสามารถแสดงตัวอย่าง และบันทึกเนื้อหาวิดีโอ HDR โดยใช้กล้องได้ เมื่อเทียบกับ Standard Dynamic Range (SDR) แล้ว HDR มีช่วงสีที่กว้างกว่าและเพิ่มช่วงไดนามิก ของคอมโพเนนต์ความสว่าง (จาก 100 cd/m2 ปัจจุบันเป็นหลายพัน 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 สำหรับตัวแปรในเครื่องและเป็นพารามิเตอร์แลมบ์ดา
  • เมธอดใหม่ในคลาส String

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