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 สาธารณะยังช่วยลดปริมาณโค้ด Boilerplate, รองรับ APK แยก และรองรับการสำรองข้อมูลอัตโนมัติสำหรับแอปเพื่อจัดเก็บการตั้งค่าภาษาของผู้ใช้ในระดับแอป
นอกจากนี้ยังมี API ที่เทียบเท่าใน AndroidX เพื่อให้เข้ากันได้แบบย้อนหลังกับ Android เวอร์ชันก่อนหน้า เราขอแนะนำให้ใช้ API ที่เพิ่มใน Appcompat 1.6.0-beta01 ขึ้นไป
แอปที่ไม่รองรับหลายภาษาจะไม่ได้รับผลกระทบจากการเปลี่ยนแปลงเหล่านี้
ปรับปรุงการรองรับข้อความและภาษา
Android 13 มีการปรับปรุงข้อความและภาษาหลายอย่างที่จะช่วยให้คุณมอบประสบการณ์การใช้งานที่ละเอียดยิ่งขึ้น ซึ่งอธิบายไว้ในส่วนต่อไปนี้
การใส่ขีดกลางที่เร็วขึ้น
การใช้เครื่องหมายขีดสั้นจะช่วยให้อ่านข้อความที่ตัดขึ้นบรรทัดใหม่ได้ง่ายขึ้นและช่วยให้ UI ปรับเปลี่ยนตามอุปกรณ์ได้มากขึ้น ตั้งแต่ Android 13 เป็นต้นไป ประสิทธิภาพการใส่เครื่องหมายขีดสั้นได้รับการเพิ่มประสิทธิภาพถึง 200% คุณจึงเปิดใช้ใน TextView ได้โดยแทบไม่ส่งผลกระทบต่อประสิทธิภาพการแสดงผล หากต้องการเปิดใช้การใส่เครื่องหมายขีดกลางที่เร็วขึ้น ให้ใช้ความถี่ fullFast หรือ normalFast ใน setHyphenationFrequency()
API การแปลงข้อความ
ผู้ที่พูดภาษาต่างๆ เช่น ภาษาญี่ปุ่นและภาษาจีนจะใช้วิธีการป้อนข้อมูลตัวอักษรตามการออกเสียง ซึ่งมักจะทำให้การค้นหาและฟีเจอร์ต่างๆ เช่น การเติมข้อความอัตโนมัติช้าลง ใน Android 13 แอปสามารถเรียกใช้ API การแปลงข้อความใหม่เพื่อให้ผู้ใช้ค้นหาสิ่งที่ต้องการได้รวดเร็วและง่ายดายยิ่งขึ้น ตัวอย่างเช่น ก่อนหน้านี้ผู้ใช้ภาษาญี่ปุ่นต้องทำตามขั้นตอนต่อไปนี้เพื่อค้นหา
- ป้อนฮิรางานะเป็นการออกเสียงตามหลักสัทอักษรของข้อความค้นหา (เช่น ชื่อสถานที่หรือชื่อแอป)
- ใช้แป้นพิมพ์เพื่อแปลงอักขระฮิรางานะเป็นคันจิ
- ค้นหาอีกครั้งโดยใช้อักขระคันจิ
- ในที่สุดก็ได้รับผลการค้นหา
เมื่อใช้ API การแปลงข้อความใหม่ ผู้ใช้ชาวญี่ปุ่นจะพิมพ์อักษรฮิรางานะและเห็นผลการค้นหาเป็นอักษรคันจิได้ทันที โดยข้ามขั้นตอนที่ 2 และ 3 ไป
ปรับปรุงความสูงของบรรทัดสำหรับสคริปต์ที่ไม่ใช่ภาษาละติน
Android 13 ปรับปรุงการแสดงผลสคริปต์ที่ไม่ใช่ภาษาละติน (เช่น ทมิฬ พม่า เตลูกู และทิเบต) โดยใช้ความสูงของบรรทัดที่ปรับให้เหมาะกับแต่ละภาษา ความสูงของบรรทัดใหม่จะป้องกันการตัดข้อความและปรับปรุงการจัดตำแหน่งอักขระ แอปของคุณจะใช้ประโยชน์จากการปรับปรุงเหล่านี้ได้เพียงแค่กำหนดเป้าหมายเป็น Android 13 อย่าลืมทดสอบแอปเมื่อใช้ระยะห่างระหว่างบรรทัดใหม่ เนื่องจากการเปลี่ยนแปลงอาจส่งผลต่อ UI ในภาษาที่ไม่ใช่ภาษาละติน
การตัดข้อความภาษาญี่ปุ่นที่ปรับปรุงแล้ว
ตั้งแต่ 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 โดยจะใช้กับตัวเลขจำนวนมาก
แบบอักษรเวกเตอร์สี
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับการแสดงผลสำหรับแบบอักษร COLR เวอร์ชัน 1 (COLRv1) และอัปเดตอีโมจิของระบบเป็นรูปแบบ COLRv1 COLRv1 เป็นรูปแบบแบบอักษรที่มีขนาดกะทัดรัดมาก ซึ่งแสดงผลได้อย่างรวดเร็วและคมชัดในทุกขนาด
สำหรับแอปส่วนใหญ่ ระบบจะจัดการทุกอย่างและ COLRv1 จะทำงานได้ทันที อย่างไรก็ตาม หากแอปของคุณใช้การแสดงผลข้อความของตัวเองและใช้แบบอักษรของระบบ เราขอแนะนำให้ทดสอบการแสดงผลอีโมจิ
ดูข้อมูลเพิ่มเติมเกี่ยวกับ COLRv1 ได้ที่แหล่งข้อมูลต่อไปนี้
- ประกาศในบล็อกของนักพัฒนาซอฟต์แวร์ Chrome
- การจัดส่งแบบอักษรเวกเตอร์สี COLRv1 ใน Chrome (วิดีโอ)
- ข้อกำหนดของตาราง COLR
API การวางการตั้งค่าด่วน
การตั้งค่าด่วนในหน้าต่างแจ้งเตือนเป็นวิธีที่สะดวกสำหรับผู้ใช้ในการเปลี่ยนการตั้งค่าหรือดำเนินการอย่างรวดเร็วโดยไม่ต้องออกจากบริบทของแอป สำหรับแอปที่มีการ์ดที่กำหนดเอง เราจะช่วยให้ผู้ใช้ค้นพบและเพิ่มการ์ดของคุณลงในการตั้งค่าด่วนได้ง่ายขึ้น ตอนนี้แอปของคุณสามารถแจ้งให้ผู้ใช้เพิ่มการ์ดที่กำหนดเองลงในชุดการ์ดการตั้งค่าด่วนที่ใช้งานอยู่ได้โดยตรงโดยใช้ API การวางการ์ดใหม่ กล่องโต้ตอบใหม่ของระบบช่วยให้ผู้ใช้เพิ่มการ์ดได้ในขั้นตอนเดียวโดยไม่ต้องออกจากแอป แทนที่จะต้องไปที่การตั้งค่าด่วนเพื่อเพิ่มการ์ด

ตัวอย่างคลิปบอร์ด
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะแสดงการยืนยันด้วยภาพมาตรฐานเมื่อมีการเพิ่มเนื้อหาลงในคลิปบอร์ด การยืนยันใหม่จะทำสิ่งต่อไปนี้
- ยืนยันว่าคัดลอกเนื้อหาสำเร็จแล้ว
- แสดงตัวอย่างเนื้อหาที่คัดลอก
ฟีเจอร์นี้จะกำหนดมาตรฐานการแจ้งเตือนต่างๆ ที่แอปแสดงหลังจากคัดลอก และช่วยให้ผู้ใช้ควบคุมคลิปบอร์ดได้มากขึ้น ดูข้อมูลเพิ่มเติมได้ที่หน้าฟีเจอร์คัดลอกและวาง
ท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้
Android 13 เปิดตัวท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้สำหรับอุปกรณ์ Android เช่น โทรศัพท์ หน้าจอขนาดใหญ่ และอุปกรณ์แบบพับได้ คุณต้องอัปเดตแอปเพื่อรองรับฟีเจอร์นี้
ดูเอกสารประกอบโดยละเอียดได้ที่หัวข้ออัปเดตแอปเพื่อรองรับท่าทางสัมผัสการย้อนกลับที่คาดการณ์ได้ นอกจากนี้ คุณยังลองใช้ Codelab ได้ด้วย
Bluetooth LE Audio
Low Energy (LE) Audio เป็นเสียงแบบไร้สายที่สร้างขึ้นเพื่อแทนที่บลูทูธคลาสสิกและช่วยให้สามารถใช้กับ Use Case และโทโพโลยีด้านการเชื่อมต่อบางอย่างได้ ซึ่งช่วยให้ผู้ใช้แชร์และเผยแพร่เสียงของตนเองกับเพื่อนและครอบครัว หรือสมัครรับข้อมูลจากการเผยแพร่สาธารณะเพื่อรับข้อมูล ความบันเทิง หรือการช่วยเหลือพิเศษได้ โดยออกแบบมาเพื่อให้ผู้ใช้ได้รับเสียงที่มีความเที่ยงตรงสูงโดยไม่สูญเสียอายุการใช้งานแบตเตอรี่ และสามารถสลับระหว่าง Use Case ต่างๆ ได้อย่างราบรื่น ซึ่งเป็นไปไม่ได้เมื่อใช้บลูทูธคลาสสิก ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับ LE Audio ในตัว นักพัฒนาแอปจึงสามารถใช้ความสามารถเหล่านี้ได้โดยไม่มีค่าใช้จ่ายในอุปกรณ์ที่เข้ากันได้
MIDI 2.0
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับมาตรฐาน MIDI 2.0 รวมถึงความสามารถในการเชื่อมต่อฮาร์ดแวร์ MIDI 2.0 ผ่าน USB มาตรฐานนี้มีฟีเจอร์ต่างๆ เช่น ความละเอียดที่เพิ่มขึ้นสำหรับตัวควบคุม การรองรับที่ดียิ่งขึ้นสำหรับการออกเสียงสูงต่ำที่ไม่ใช่ภาษาตะวันตก และประสิทธิภาพที่เพิ่มมากขึ้นในการสื่อความหมายโดยใช้ตัวควบคุมต่อโน้ต
การปรับปรุงประสิทธิภาพของหน้าจอเริ่มต้น (Splash Screen)
Android 13 ปรับปรุงประสิทธิภาพของหน้าจอเริ่มต้น (Splash Screen) แบบเคลื่อนไหวใน Splash Screen API ดังนี้
ระบบจะอนุมานระยะเวลาของภาพเคลื่อนไหวจาก
AnimatedVectorDrawableโดยตรง ก่อน Android 13 คุณต้องตั้งค่าwindowSplashScreenAnimationDurationโดยตรงใช้แอตทริบิวต์
windowSplashScreenBehaviorใหม่เพื่อให้ควบคุมได้มากขึ้นว่าแอปจะแสดงไอคอนบนหน้าจอเริ่มต้น (Splash Screen) ใน Android 13 ขึ้นไปเสมอหรือไม่
ดูเอกสารประกอบโดยละเอียดได้ที่หน้าจอเริ่มต้น (Splash Screen)
การเพิ่มประสิทธิภาพ ART
ใน Android 13 (ระดับ API 33) ขึ้นไป ART ช่วยให้การสลับไปมาระหว่างโค้ดแบบเนทีฟเร็วขึ้นมาก โดยตอนนี้การเรียก JNI เร็วขึ้นสูงสุด 2.5 เท่า นอกจากนี้ เรายังปรับปรุงการประมวลผลการอ้างอิงรันไทม์เพื่อให้ส่วนใหญ่ไม่บล็อก ซึ่งจะช่วยลดอาการกระตุกได้อีก นอกจากนี้ คุณยังใช้ API สาธารณะ Reference.refersTo() เพื่อเรียกคืนออบเจ็กต์ที่เข้าถึงไม่ได้เร็วขึ้น และจะสังเกตเห็นว่าตอนนี้อินเทอร์พรีเตอร์ทำงานเร็วขึ้นเนื่องจากการค้นหาคลาสและเมธอดที่เพิ่มประสิทธิภาพแล้ว นอกจากนี้ ART ยังทำการตรวจสอบไบต์โค้ดเพิ่มเติมในเวลาติดตั้ง เพื่อหลีกเลี่ยงค่าใช้จ่ายในการตรวจสอบที่รันไทม์และทำให้แอปเริ่มต้นทำงานได้อย่างรวดเร็ว
ความเป็นส่วนตัวและความปลอดภัย
การส่งออก Receiver ที่ลงทะเบียนบริบทอย่างปลอดภัยยิ่งขึ้น
Android 13 เพิ่มความสามารถให้แอปของคุณระบุได้ว่าควรส่งออก Broadcast Receiver ที่ลงทะเบียนไว้และทำให้แอปอื่นๆ ในอุปกรณ์มองเห็นได้หรือไม่ เพื่อช่วยให้ Receiver รันไทม์ปลอดภัยยิ่งขึ้น ใน Android เวอร์ชันก่อนหน้า แอปใดก็ตามในอุปกรณ์สามารถส่งการออกอากาศที่ไม่มีการป้องกันไปยัง Receiver ที่ลงทะเบียนแบบไดนามิกได้ เว้นแต่ว่า Receiver นั้นจะได้รับการปกป้องโดยสิทธิ์ลายเซ็น
การกำหนดค่าการส่งออกนี้ใช้ได้กับแอปที่ทำสิ่งต่อไปนี้อย่างน้อย 1 อย่าง
- ใช้คลาส
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 ต่างๆ
นอกจากนี้ ตราบใดที่แอปไม่ได้ดึงข้อมูลตำแหน่งทางกายภาพจาก API ของ Wi-Fi แอปก็ไม่จำเป็นต้องประกาศสิทธิ์ 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 ที่หมุนเวียนต่อไปในบล็อก 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
การรายงานข้อผิดพลาดที่ดีขึ้นใน Keystore และ KeyMint
สำหรับแอปที่สร้างคีย์ ตอนนี้ Keystore และ KeyMint จะแสดงตัวบ่งชี้ข้อผิดพลาดที่ละเอียดและแม่นยำยิ่งขึ้น เราได้เพิ่มลำดับชั้นของคลาสข้อยกเว้นใน java.security.ProviderException โดยมีข้อยกเว้นเฉพาะ Android ซึ่งรวมถึงรหัสข้อผิดพลาด Keystore/KeyMint และระบุว่าข้อผิดพลาดนั้นลองใหม่ได้หรือไม่ นอกจากนี้ คุณยังแก้ไขเมธอดสำหรับการสร้างและการใช้คีย์ (การลงชื่อ การเข้ารหัส) เพื่อแสดงข้อยกเว้นใหม่ได้ด้วย Error Reporting ที่ปรับปรุงแล้วไม่ได้จำกัดอยู่เพียงการสร้างคีย์เท่านั้น และตอนนี้ควรให้ข้อมูลที่คุณต้องการเพื่อลองสร้างคีย์อีกครั้ง
การรองรับแท็บเล็ตและหน้าจอขนาดใหญ่
Android 13 ต่อยอดจากการเพิ่มประสิทธิภาพแท็บเล็ตที่เปิดตัวใน Android 12 และการอัปเดตฟีเจอร์ใหม่ 12L ซึ่งรวมถึงการเพิ่มประสิทธิภาพสำหรับ UI ของระบบ การทำงานหลายอย่างพร้อมกันที่ดีขึ้น และโหมดความเข้ากันได้ที่ได้รับการปรับปรุง ในการทดสอบ โปรดตรวจสอบว่าแอปของคุณดูดีที่สุดบนแท็บเล็ตและอุปกรณ์หน้าจอขนาดใหญ่อื่นๆ
ดูข้อมูลเพิ่มเติมเกี่ยวกับสิ่งใหม่ๆ และสิ่งที่ต้องทดสอบได้ที่หน้าการรองรับแท็บเล็ตและหน้าจอขนาดใหญ่
กราฟิก
ตัวปรับแสงเงาที่ตั้งโปรแกรมได้
ตั้งแต่ Android 13 เป็นต้นไป ระบบจะรองรับออบเจ็กต์ RuntimeShader ที่ตั้งโปรแกรมได้ โดยมีลักษณะการทำงานที่กำหนดโดยใช้ Android Graphics Shading Language (AGSL) AGSL ใช้ไวยากรณ์ส่วนใหญ่ร่วมกับ GLSL แต่ทำงานภายในเครื่องมือแสดงผลของ Android เพื่อปรับแต่งการวาดภาพภายใน Canvas ของ Android รวมถึงการกรองเนื้อหา View
Android ใช้เฉดเดอร์เหล่านี้เป็นการภายในเพื่อใช้เอฟเฟกต์ริปเปิล การเบลอ และการยืดการเลื่อนเกิน
Android 13 ขึ้นไปช่วยให้คุณสร้างเอฟเฟกต์ขั้นสูงที่คล้ายกันสำหรับแอปได้
การปรับปรุง Choreographer
Android 13 เปิดตัวเมธอด API สาธารณะสำหรับ Choreographer และ ASurfaceControl ซึ่งให้ข้อมูลเพิ่มเติมเกี่ยวกับไทม์ไลน์เฟรมที่เป็นไปได้แก่แอป และเพิ่มบริบทเพิ่มเติมสำหรับ SurfaceFlinger เกี่ยวกับวงจรของเฟรม แอปสามารถโพสต์ Callback ไปยัง Choreographer และรับข้อมูลไทม์ไลน์ของเฟรมได้เหมือนก่อนหน้านี้ ใน Android 13 (API ระดับ 33) Choreographer จะแสดงเวลาการนำเสนอที่เป็นไปได้หลายรายการและกำหนดเวลาเฟรมที่เกี่ยวข้อง แอปสามารถเลือกเวลาการนำเสนอและแจ้ง SurfaceFlingerเกี่ยวกับตัวเลือกดังกล่าวในภายหลังได้ จากนั้น SurfaceFlinger จะไม่พยายามใช้ธุรกรรมหรือบัฟเฟอร์แลตช์ก่อนเวลาการนำเสนอที่ต้องการ
กล้อง
การจับภาพวิดีโอ HDR
ตั้งแต่ Android 13 เป็นต้นไป Camera2 API จะรองรับการบันทึกวิดีโอ High Dynamic Range (HDR) ซึ่งช่วยให้คุณดูตัวอย่างและบันทึกเนื้อหาวิดีโอ HDR โดยใช้กล้องได้ เมื่อเทียบกับ Standard Dynamic Range (SDR) แล้ว HDR จะมีช่วงสีที่กว้างกว่าและเพิ่มช่วงไดนามิกของคอมโพเนนต์ความสว่าง (จากปัจจุบัน 100 cd/m2 เป็น 1,000 cd/m2) ซึ่งจะทำให้คุณภาพวิดีโอใกล้เคียงกับชีวิตจริงมากขึ้น โดยมีสีสันที่สดใส ไฮไลต์ที่สว่างขึ้น และเงาที่มืดลง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการจับภาพวิดีโอ HDR ได้ที่เอกสารประกอบการจับภาพวิดีโอ HDR
สื่อ
เสียงรอบทิศทาง
เสียงรอบทิศทางคือประสบการณ์เสียงที่สมจริงซึ่งทำให้เนื้อหาสื่อมีเสียงที่สมจริงยิ่งขึ้นสำหรับผู้ใช้ ดูรายละเอียดเกี่ยวกับวิธีผสานรวมกับฟีเจอร์นี้ได้ในเอกสารประกอบเกี่ยวกับเสียงรอบทิศทาง
การกำหนดเส้นทางเสียงล่วงหน้า
Android 13 เปิดตัว API เส้นทางเสียงในคลาส AudioManager เพื่อช่วยให้แอปสื่อระบุได้ว่าระบบจะกำหนดเส้นทางเสียงอย่างไร API getAudioDevicesForAttributes() ช่วยให้คุณดึงข้อมูลรายการอุปกรณ์ที่อาจใช้เล่นเสียงที่ระบุได้ และ API getDirectProfilesForAttributes() ช่วยให้คุณทราบว่าสตรีมเสียงของคุณเล่นได้โดยตรงหรือไม่ ใช้ 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.utilOptional,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 และ/หรือบริษัทในเครือ