Android 16 มาพร้อมฟีเจอร์และ API ใหม่ๆ ที่ยอดเยี่ยมสำหรับนักพัฒนาแอป ส่วนต่อไปนี้จะสรุปฟีเจอร์เหล่านี้เพื่อช่วยให้คุณเริ่มต้นใช้งาน API ที่เกี่ยวข้องได้
ดูรายการ API ใหม่, API ที่แก้ไข และ API ที่นำออกโดยละเอียดได้ที่รายงานความแตกต่างของ API ดูรายละเอียดเกี่ยวกับ API ใหม่ได้ที่เอกสารอ้างอิง Android API ซึ่งจะไฮไลต์ API ใหม่เพื่อให้เห็นได้ชัดเจนนอกจากนี้ คุณควรตรวจสอบส่วนที่การเปลี่ยนแปลงแพลตฟอร์มอาจส่งผลต่อแอปของคุณด้วย ดูข้อมูลเพิ่มเติมได้ที่หน้าต่อไปนี้
- การเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอปเมื่อกำหนดเป้าหมายเป็น Android 16
- การเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอปทั้งหมด ไม่ว่าจะเป็น
targetSdkVersionก็ตาม
ฟังก์ชันหลัก
Android มี API ใหม่ที่ขยายความสามารถหลักของระบบ Android
การเปิดตัว Android API 2 ครั้งในปี 2025
- ตัวอย่างนี้เป็นเวอร์ชันหลักรุ่นถัดไปของ Android ซึ่งมีกำหนดเปิดตัวในไตรมาสที่ 2 ของปี 2025 เวอร์ชันนี้คล้ายกับ API ทั้งหมดของเราในอดีต ซึ่งเราอาจมีการเปลี่ยนแปลงลักษณะการทำงานตามแผนที่วางไว้ซึ่งมักเชื่อมโยงกับ targetSdkVersion
- เราวางแผนที่จะเปิดตัวรุ่นหลักเร็วขึ้น 1 ไตรมาส (ไตรมาสที่ 2 แทนที่จะเป็นไตรมาสที่ 3 ของปีก่อนๆ) เพื่อให้สอดคล้องกับกำหนดการเปิดตัวอุปกรณ์ในระบบนิเวศของเรามากขึ้น เพื่อให้อุปกรณ์จำนวนมากขึ้นได้รับ Android เวอร์ชันหลักได้เร็วขึ้น เนื่องจากจะมีการเปิดตัวรุ่นหลักในไตรมาสที่ 2 คุณจะต้องทำการทดสอบความเข้ากันได้ประจำปีก่อนเวลาปกติ 2-3 เดือนเพื่อให้แน่ใจว่าแอปของคุณพร้อมใช้งาน
- เราวางแผนที่จะเปิดตัวอีกรุ่นในไตรมาสที่ 4 ของปี 2025 ซึ่งจะมี API ใหม่สำหรับนักพัฒนาแอปด้วย เวอร์ชันหลักในไตรมาสที่ 2 จะเป็นเวอร์ชันเดียวในปี 2025 ที่มีการเปลี่ยนแปลงลักษณะการทำงานตามแผนที่อาจส่งผลต่อแอป
นอกจาก API ใหม่สำหรับนักพัฒนาแอปแล้ว รุ่นย่อยในไตรมาสที่ 4 จะรวมการอัปเดตฟีเจอร์ การเพิ่มประสิทธิภาพ และการแก้ไขข้อบกพร่อง แต่จะไม่มีการเปลี่ยนแปลงลักษณะการทำงานที่ส่งผลต่อแอป
เราจะยังเผยแพร่ Android แบบรายไตรมาสต่อไป การอัปเดตในไตรมาสที่ 1 และ 3 ระหว่างการเปิดตัว API ต่างๆ จะเป็นการเพิ่มการอัปเดตเพื่อช่วยให้มั่นใจถึงคุณภาพอย่างต่อเนื่อง เรากำลังทำงานร่วมกับพาร์ทเนอร์อุปกรณ์ของเราอย่างจริงจังเพื่อทำให้รุ่น Q2 พร้อมให้บริการในอุปกรณ์จำนวนมากที่สุด
การใช้ API ใหม่กับรุ่นหลักและรุ่นย่อย
การป้องกันบล็อกโค้ดด้วยการตรวจสอบระดับ API ทำได้โดยใช้ค่าคงที่ SDK_INT กับ VERSION_CODES เราจะยังคงรองรับฟีเจอร์นี้ใน Android ทุกรุ่นหลักต่อไป
if (SDK_INT >= VERSION_CODES.BAKLAVA) {
// Use APIs introduced in Android 16
}
คุณสามารถใช้สแตติก SDK_INT_FULL ใหม่ในการตรวจสอบ API กับทั้งเวอร์ชันหลักและรองได้โดยใช้การแจกแจง VERSION_CODES_FULL ใหม่
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
// Use APIs introduced in a major or minor release
}
นอกจากนี้ คุณยังใช้วิธีนี้เพื่อดูเฉพาะเวอร์ชันย่อยของ SDK ได้ด้วย
Build.getMinorSdkVersion()
val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)
API เหล่านี้ยังไม่เสร็จสมบูรณ์และอาจมีการเปลี่ยนแปลง ดังนั้นโปรดส่งความคิดเห็นถึงเราหากมีข้อกังวล
ประสบการณ์ของผู้ใช้และ UI ของระบบ
Android 16 ช่วยให้นักพัฒนาแอปและผู้ใช้ควบคุมและกำหนดค่าอุปกรณ์ให้เหมาะกับความต้องการของตนได้มากขึ้นและยืดหยุ่นยิ่งขึ้น
การแจ้งเตือนที่เน้นความคืบหน้า
Android 16 引入了以进度为中心的通知,可帮助用户顺畅地跟踪用户发起的端到端历程。
Notification.ProgressStyle 是一种新的通知样式,可让您创建以进度为中心的通知。主要用例包括共享车辆、送货和导航。在 Notification.ProgressStyle 类中,您可以使用点和细分来表示用户体验历程中的状态和里程碑。
ดูข้อมูลเพิ่มเติมได้ที่หน้าเอกสารประกอบเกี่ยวกับการแจ้งเตือนที่เน้นความคืบหน้า
การอัปเดตการย้อนกลับที่คาดการณ์ได้
Android 16 เพิ่ม API ใหม่เพื่อช่วยให้คุณเปิดใช้การเคลื่อนไหวของระบบแบบคาดเดาสำหรับการนําทางด้วยท่าทางสัมผัส เช่น การเคลื่อนไหวกลับไปยังหน้าแรก การลงทะเบียน onBackInvokedCallback ด้วย PRIORITY_SYSTEM_NAVIGATION_OBSERVER ใหม่จะช่วยให้แอปของคุณได้รับการเรียก onBackInvoked ปกติทุกครั้งที่ระบบจัดการการนําทางกลับโดยไม่ส่งผลกระทบต่อขั้นตอนการนำทางกลับปกติ
Android 16 เพิ่ม finishAndRemoveTaskCallback() และ moveTaskToBackCallback เข้ามาด้วย การลงทะเบียนการเรียกกลับเหล่านี้กับ OnBackInvokedDispatcher จะช่วยให้ระบบทริกเกอร์ลักษณะการทำงานที่เฉพาะเจาะจงและเล่นภาพเคลื่อนไหวที่เกี่ยวข้องล่วงหน้าได้เมื่อมีการเรียกใช้ท่าทางสัมผัสกลับ
การโต้ตอบการสัมผัสที่ละเอียดยิ่งขึ้น
自诞生之日起,Android 就提供了对触感反馈致动器的控制。
Android 11 添加了对更复杂的触感反馈效果的支持,更高级的致动器可以通过设备定义的语义基元 VibrationEffect.Compositions 支持这些效果。
Android 16 添加了触感反馈 API,让应用能够定义触感反馈效果的振幅和频率曲线,同时抽象出设备功能之间的差异。
ประสิทธิภาพการทำงานและเครื่องมือของนักพัฒนาซอฟต์แวร์
แม้ว่างานส่วนใหญ่ของเราในการปรับปรุงประสิทธิภาพการทำงานจะมุ่งเน้นไปที่เครื่องมือต่างๆ เช่น Android Studio, Jetpack Compose และไลบรารี Android Jetpack แต่เราก็มองหาวิธีต่างๆ ในแพลตฟอร์มเพื่อช่วยให้คุณบรรลุวิสัยทัศน์อยู่เสมอ
การจัดการเนื้อหาสำหรับวอลเปเปอร์เคลื่อนไหว
在 Android 16 中,动态壁纸框架将获得一个新的 content API,以应对由用户驱动的动态壁纸带来的挑战。目前,包含用户提供的内容的实时壁纸需要复杂的服务专用实现。Android 16 引入了 WallpaperDescription 和 WallpaperInstance。借助 WallpaperDescription,您可以识别同一服务中的动态壁纸的不同实例。例如,如果某张壁纸同时在主屏幕和锁定屏幕上显示,则这两种情况下显示的内容可能各不相同。壁纸选择器和 WallpaperManager 会使用此元数据更好地向用户呈现壁纸,从而简化创建多样化个性化动态壁纸体验的过程。
ประสิทธิภาพและแบตเตอรี่
Android 16 เปิดตัว API ที่ช่วยรวบรวมข้อมูลเชิงลึกเกี่ยวกับแอปของคุณ
การทำโปรไฟล์ที่ทริกเกอร์โดยระบบ
ProfilingManager เพิ่มเข้ามาใน Android 15 ซึ่งช่วยให้แอปสามารถส่งคําขอรวบรวมข้อมูลการจัดทำโปรไฟล์โดยใช้ Perfetto ในอุปกรณ์สาธารณะในสนามได้
อย่างไรก็ตาม เนื่องจากต้องเริ่มการโปรไฟล์นี้จากแอป แอปจึงอาจจับภาพขั้นตอนสําคัญ เช่น การเริ่มต้นหรือ ANR ได้ยากหรือเป็นไปไม่ได้
Android 16 เปิดตัวการโปรไฟล์ที่ระบบทริกเกอร์เพื่อแก้ปัญหานี้ใน ProfilingManager แอปสามารถลงทะเบียนความสนใจในการรับการติดตามสำหรับทริกเกอร์บางอย่าง เช่น Cold Start reportFullyDrawn หรือ ANR จากนั้นระบบจะเริ่มและหยุดการติดตามในนามของแอป หลังจากการติดตามเสร็จสมบูรณ์แล้ว ระบบจะส่งผลลัพธ์ไปยังไดเรกทอรีข้อมูลของแอป
คอมโพเนนต์เริ่มต้นใน ApplicationStartInfo
ApplicationStartInfo เพิ่มใน Android 15 ซึ่งช่วยให้แอปเห็นสาเหตุของการเริ่มกระบวนการ ประเภทการเริ่ม เวลาเริ่มต้น การจำกัด และข้อมูลการวินิจฉัยอื่นๆ ที่มีประโยชน์ Android 16 เพิ่ม getStartComponent() เพื่อแยกแยะประเภทคอมโพเนนต์ที่ทริกเกอร์การเริ่มต้น ซึ่งจะเป็นประโยชน์ในการเพิ่มประสิทธิภาพขั้นตอนการเริ่มต้นของแอป
การตรวจสอบงานที่ดีขึ้น
JobScheduler#getPendingJobReason() API จะแสดงเหตุผลที่งานอาจรอดำเนินการ อย่างไรก็ตาม งานอาจรอดำเนินการเนื่องจากหลายสาเหตุ
ใน Android 16 เราจะเปิดตัว API ใหม่ JobScheduler#getPendingJobReasons(int jobId) ซึ่งจะแสดงเหตุผลหลายประการที่งานรอดำเนินการอยู่ ทั้งข้อจำกัดที่นักพัฒนาแอปกำหนดไว้อย่างชัดเจนและข้อจำกัดโดยนัยที่ระบบกำหนดไว้
นอกจากนี้ เรายังเปิดตัว JobScheduler#getPendingJobReasonsHistory(int jobId) ซึ่งจะแสดงรายการการเปลี่ยนแปลงข้อจำกัดล่าสุด
เราขอแนะนำให้ใช้ API เพื่อช่วยแก้ไขข้อบกพร่องเกี่ยวกับสาเหตุที่งานอาจไม่ทํางาน โดยเฉพาะในกรณีที่อัตราความสําเร็จของงานบางอย่างลดลงหรือมีข้อบกพร่องเกี่ยวกับเวลาในการตอบสนองของงานที่เสร็จสมบูรณ์ เช่น การอัปเดตวิดเจ็ตในเบื้องหลังไม่สำเร็จ หรือเรียกใช้งานการเรียกข้อมูลล่วงหน้าก่อนการเริ่มแอปไม่สำเร็จ
นอกจากนี้ ยังช่วยให้คุณเข้าใจได้ดีขึ้นหากงานบางอย่างไม่เสร็จสมบูรณ์เนื่องจากข้อจำกัดที่ระบบกําหนดไว้เมื่อเทียบกับข้อจำกัดที่ตั้งไว้อย่างชัดเจน
อัตราการรีเฟรชแบบปรับอัตโนมัติ
Android 15 中引入的自适应刷新率 (ARR) 可让受支持硬件上的显示屏刷新率使用离散的 VSync 步长来适应内容帧速率。这不仅降低了功耗,还无需进行可能导致卡顿的模式切换。
Android 16 引入了 hasArrSupport() 和 getSuggestedFrameRate(int),同时恢复了 getSupportedRefreshRates(),以便您的应用更轻松地利用 ARR。RecyclerView 1.4 在从快速滑动或平滑滚动中稳定下来时会在内部支持 ARR,我们将继续努力,将 ARR 支持添加到更多 Jetpack 库中。这篇帧速率文章介绍了许多可用于设置帧速率的 API,以便您的应用可以直接使用 ARR。
Headroom API ใน ADPF
SystemHealthManager เปิดตัว API getCpuHeadroom และ getGpuHeadroom ซึ่งออกแบบมาเพื่อให้เกมและแอปที่ใช้ทรัพยากรมากทราบทรัพยากร CPU และ GPU ที่พร้อมใช้งานโดยประมาณ วิธีเหล่านี้เป็นวิธีให้คุณประเมินวิธีที่แอปหรือเกมจะปรับปรุงประสิทธิภาพของระบบได้ดีที่สุด โดยเฉพาะเมื่อใช้ร่วมกับ API อื่นๆ ของ Android Dynamic Performance Framework (ADPF) ที่ตรวจหาการจำกัดความร้อน
เมื่อใช้ CpuHeadroomParams และ GpuHeadroomParams ในอุปกรณ์ที่รองรับ คุณจะปรับแต่งกรอบเวลาที่ใช้คำนวณ Headroom และเลือกระหว่างความพร้อมใช้งานทรัพยากรโดยเฉลี่ยหรือขั้นต่ำได้ ซึ่งจะช่วยคุณลดการใช้ทรัพยากร CPU หรือ GPU ตามความเหมาะสม ส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีขึ้นและอายุการใช้งานแบตเตอรี่เพิ่มขึ้น
การช่วยเหลือพิเศษ
Android 16 เพิ่ม Accessibility API และฟีเจอร์ใหม่ๆ ที่จะช่วยให้คุณนำแอปไปสู่ผู้ใช้ทุกคนได้
Accessibility API ที่ได้รับการปรับปรุง
Android 16 เพิ่ม API เพิ่มเติมเพื่อปรับปรุงความหมายของ UI ซึ่งจะช่วยเพิ่มความสอดคล้องสำหรับผู้ใช้ที่อาศัยบริการช่วยเหลือพิเศษ เช่น TalkBack
ขีดเส้นขอบข้อความเพื่อให้ข้อความมีความคมชัดสูงสุด
ผู้ใช้ที่มีความบกพร่องทางการมองเห็นมักมีความไวต่อคอนทราสต์ลดลง ทำให้แยกแยะวัตถุออกจากพื้นหลังได้ยาก Android 16 เปิดตัวข้อความขอบแทนที่ข้อความคอนทราสต์สูงเพื่อช่วยผู้ใช้เหล่านี้ ซึ่งจะวาดพื้นที่คอนทราสต์ขนาดใหญ่ขึ้นรอบข้อความเพื่อปรับปรุงความสามารถในการอ่านได้อย่างมาก
Android 16 มี API AccessibilityManager ใหม่เพื่อให้แอปตรวจสอบหรือลงทะเบียนโปรแกรมฟังเพื่อดูว่าเปิดใช้โหมดนี้หรือไม่ การดำเนินการนี้มีไว้สำหรับชุดเครื่องมือ UI เช่น Compose เป็นหลัก เพื่อมอบประสบการณ์การรับชมที่คล้ายกัน หากคุณดูแลรักษาไลบรารี UI Toolkit หรือแอปของคุณแสดงผลข้อความที่กำหนดเองซึ่งข้ามคลาส android.text.Layout คุณสามารถใช้แอตทริบิวต์นี้เพื่อดูว่าเปิดใช้ข้อความขอบหรือไม่
เพิ่มระยะเวลาลงใน TtsSpan
Android 16 ขยาย TtsSpan ด้วย TYPE_DURATION ซึ่งประกอบด้วย ARG_HOURS, ARG_MINUTES และ ARG_SECONDS ซึ่งจะช่วยให้คุณกำกับเวลาได้โดยตรง เพื่อให้เอาต์พุตการอ่านออกเสียงข้อความมีความแม่นยำและสอดคล้องกันกับบริการต่างๆ เช่น TalkBack
รองรับองค์ประกอบที่มีป้ายกำกับหลายรายการ
ปัจจุบัน Android อนุญาตให้องค์ประกอบ UI ดึงข้อมูลป้ายกำกับการช่วยเหลือพิเศษจากองค์ประกอบอื่น และตอนนี้สามารถเชื่อมโยงป้ายกำกับหลายรายการเข้าด้วยกันได้แล้ว ซึ่งเป็นสถานการณ์ที่พบได้ทั่วไปในเนื้อหาเว็บ การใช้ API ตามรายการภายใน AccessibilityNodeInfo จะช่วยให้ Android รองรับความสัมพันธ์แบบหลายป้ายกำกับเหล่านี้ได้โดยตรง การเปลี่ยนแปลงนี้ทำให้เราเลิกใช้งาน AccessibilityNodeInfo#setLabeledBy และ #getLabeledBy แล้วหันมาใช้ #addLabeledBy, #removeLabeledBy และ #getLabeledByList แทน
ปรับปรุงการรองรับองค์ประกอบแบบขยายได้
Android 16 เพิ่ม API การช่วยเหลือพิเศษที่ช่วยให้คุณสื่อสถานะแบบขยายหรือยุบขององค์ประกอบแบบอินเทอร์แอกทีฟ เช่น เมนูและรายการแบบขยายได้ การตั้งค่าสถานะแบบขยายโดยใช้ setExpandedState และการส่ง TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents ด้วยประเภทการเปลี่ยนแปลงเนื้อหา CONTENT_CHANGE_TYPE_EXPANDED จะช่วยให้มั่นใจได้ว่าโปรแกรมอ่านหน้าจออย่าง TalkBack จะประกาศการเปลี่ยนแปลงสถานะ ซึ่งมอบประสบการณ์การใช้งานที่ใช้งานง่ายและครอบคลุมมากขึ้นแก่ผู้ใช้
แถบความคืบหน้าที่ระบุสถานะไม่ได้
Android 16 เพิ่ม RANGE_TYPE_INDETERMINATE ซึ่งช่วยให้คุณแสดง RangeInfo สำหรับวิดเจ็ต ProgressBar ทั้งแบบกำหนดได้และแบบกำหนดไม่ได้ ซึ่งช่วยให้บริการอย่าง TalkBack แสดงความคิดเห็นสำหรับตัวบ่งชี้ความคืบหน้าได้อย่างสม่ำเสมอมากขึ้น
ช่องทำเครื่องหมายแบบ 3 สถานะ
ตอนนี้เมธอด AccessibilityNodeInfo
getChecked และ setChecked(int) แบบใหม่ใน Android 16 รองรับสถานะ "เลือกบางส่วน" นอกเหนือจาก "เลือก" และ "ยกเลิกการเลือก" แล้ว ซึ่งมาแทนที่บูลีน isChecked และ setChecked(boolean) ที่เลิกใช้งานแล้ว
คำอธิบายเพิ่มเติม
เมื่อบริการการช่วยเหลือพิเศษอธิบาย ViewGroup บริการจะรวมป้ายกำกับเนื้อหาจากมุมมองย่อย หากคุณระบุ contentDescription สำหรับ ViewGroup บริการการช่วยเหลือพิเศษจะถือว่าคุณลบล้างคำอธิบายของมุมมองย่อยที่โฟกัสไม่ได้ด้วย ซึ่งอาจทำให้เกิดปัญหาหากคุณต้องการติดป้ายกำกับรายการต่างๆ เช่น เมนูแบบเลื่อนลง (เช่น "ตระกูลแบบอักษร") ขณะเก็บค่าที่เลือกไว้ในปัจจุบันไว้สำหรับการช่วยเหลือพิเศษ (เช่น "Roboto") Android 16 เพิ่ม setSupplementalDescription เพื่อให้คุณระบุข้อความที่ให้ข้อมูลเกี่ยวกับ ViewGroup ได้โดยไม่ต้องลบล้างข้อมูลจากรายการย่อย
ฟิลด์ในแบบฟอร์มที่ต้องกรอก
Android 16 เพิ่ม setFieldRequired ลงใน AccessibilityNodeInfo เพื่อให้แอปบอกบริการการช่วยเหลือพิเศษได้ว่าต้องป้อนข้อมูลในช่องแบบฟอร์ม นี่เป็นสถานการณ์ที่สําคัญสําหรับผู้ใช้ที่กรอกแบบฟอร์มหลายประเภท แม้กระทั่งสิ่งง่ายๆ อย่างช่องทําเครื่องหมายข้อกําหนดและเงื่อนไขที่จําเป็น ซึ่งช่วยให้ผู้ใช้ระบุและไปยังช่องที่ต้องกรอกต่างๆ ได้อย่างรวดเร็วอย่างสม่ำเสมอ
โทรศัพท์เป็นอินพุตไมโครโฟนสำหรับการโทรด้วยเสียงผ่านเครื่องช่วยฟัง LEA
Android 16 เพิ่มความสามารถในการสลับระหว่างไมโครโฟนในตัวของเครื่องช่วยฟัง LE Audio กับไมโครโฟนในโทรศัพท์สำหรับใช้โทรด้วยเสียงให้แก่ผู้ใช้ ซึ่งจะมีประโยชน์ในสภาพแวดล้อมที่มีเสียงดังหรือสถานการณ์อื่นๆ ที่ไมโครโฟนของเครื่องช่วยฟังอาจทำงานได้ไม่ดี
การควบคุมระดับเสียงโดยรอบสำหรับเครื่องช่วยฟัง LEA
Android 16 เพิ่มความสามารถในการปรับระดับเสียงของเสียงรอบข้างที่ไมโครโฟนของเครื่องช่วยฟังตรวจพบให้แก่ผู้ใช้เครื่องช่วยฟัง LE Audio ซึ่งจะมีประโยชน์ในสถานการณ์ที่มีเสียงรบกวนรอบข้างดังหรือเบาเกินไป
กล้อง
Android 16 ยกระดับการรองรับสำหรับผู้ใช้กล้องระดับมืออาชีพ โดยช่วยให้สามารถใช้การเปิดรับแสงอัตโนมัติแบบไฮบริด รวมถึงการปรับอุณหภูมิสีและโทนสีที่แม่นยำ ตัวบ่งชี้โหมดกลางคืนแบบใหม่ช่วยให้แอปทราบว่าเมื่อใดควรเปลี่ยนไปใช้และออกจากเซสชันกล้องในโหมดกลางคืน การดำเนินการใหม่ของ Intent ช่วยให้จับภาพเคลื่อนไหวได้ง่ายขึ้น และเรายังคงปรับปรุงรูปภาพ UltraHDR อย่างต่อเนื่องด้วยการรองรับการเข้ารหัส HEIC และพารามิเตอร์ใหม่จากร่างมาตรฐาน ISO 21496-1
การปรับการรับแสงอัตโนมัติแบบไฮบริด
Android 16 เพิ่มโหมดการเปิดรับแสงอัตโนมัติแบบผสมใหม่ลงใน Camera2 ซึ่งช่วยให้คุณควบคุมแง่มุมต่างๆ ของการเปิดรับแสงด้วยตนเองได้ขณะที่อัลกอริทึมการเปิดรับแสงอัตโนมัติ (AE) จัดการส่วนที่เหลือ คุณสามารถควบคุมISO + AE และเวลาเปิดรับแสง + AE ซึ่งให้ความยืดหยุ่นมากกว่าแนวทางปัจจุบันที่คุณต้องควบคุมด้วยตนเองทั้งหมดหรือใช้การเปิดรับแสงอัตโนมัติทั้งหมด
fun setISOPriority() {
// ... (Your existing code before the snippet) ...
val availablePriorityModes = mStaticInfo.characteristics.get(
CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
)
// ... (Your existing code between the snippets) ...
// Turn on AE mode to set priority mode
reqBuilder.set(
CaptureRequest.CONTROL_AE_MODE,
CameraMetadata.CONTROL_AE_MODE_ON
)
reqBuilder.set(
CaptureRequest.CONTROL_AE_PRIORITY_MODE,
CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
)
reqBuilder.set(
CaptureRequest.SENSOR_SENSITIVITY,
TEST_SENSITIVITY_VALUE
)
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after the snippet) ...
}
การปรับอุณหภูมิสีและสีอ่อนที่แม่นยำ
Android 16 เพิ่มการรองรับกล้องสำหรับการปรับอุณหภูมิสีและการปรับสีเล็กน้อยเพื่อรองรับแอปพลิเคชันการบันทึกวิดีโอระดับมืออาชีพได้ดียิ่งขึ้น ใน Android เวอร์ชันก่อนหน้า คุณสามารถควบคุมการตั้งค่าสมดุลแสงสีขาวผ่าน CONTROL_AWB_MODE ซึ่งมีตัวเลือกที่จํากัดอยู่ในรายการที่กำหนดล่วงหน้า เช่น หลอดไส้ เมฆมาก และช่วงพลบค่ำ COLOR_CORRECTION_MODE_CCT ช่วยให้สามารถใช้ COLOR_CORRECTION_COLOR_TEMPERATURE และ COLOR_CORRECTION_COLOR_TINT เพื่อปรับสมดุลสีขาวได้อย่างแม่นยำตามอุณหภูมิสีที่เกี่ยวข้อง
fun setCCT() {
// ... (Your existing code before this point) ...
val colorTemperatureRange: Range<Int> =
mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]
// Set to manual mode to enable CCT mode
reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after this point) ...
}
ตัวอย่างต่อไปนี้แสดงลักษณะของรูปภาพหลังจากปรับอุณหภูมิสีและการปรับสีต่างๆ
การตรวจจับฉากในโหมดกลางคืนของกล้อง
Android 16 เพิ่ม EXTENSION_NIGHT_MODE_INDICATOR เพื่อช่วยแอปในการระบุเวลาสลับจากและไปยังเซสชันกล้องโหมดกลางคืน หากรองรับ ฟีเจอร์นี้จะอยู่ใน CaptureResult ภายใน Camera2
นี่คือ API ที่เราได้พูดถึงสั้นๆ ว่ากำลังจะเปิดตัวในบล็อกโพสต์วิธีที่ Instagram ช่วยผู้ใช้ให้ถ่ายภาพในที่แสงน้อยได้อย่างน่าทึ่ง โพสต์ดังกล่าวเป็นคำแนะนำที่เป็นประโยชน์เกี่ยวกับวิธีใช้โหมดกลางคืน พร้อมกรณีศึกษาที่เชื่อมโยงรูปภาพในโหมดกลางคืนในแอปที่มีคุณภาพสูงขึ้นกับจำนวนรูปภาพที่แชร์จากกล้องในแอปที่เพิ่มขึ้น
การดำเนินการตามความตั้งใจในการจับภาพเคลื่อนไหว
Android 16 添加了标准 intent 操作 ACTION_MOTION_PHOTO_CAPTURE 和 ACTION_MOTION_PHOTO_CAPTURE_SECURE,用于请求相机应用拍摄动态照片并将其返回。
您必须传递额外的 EXTRA_OUTPUT 来控制将图片写入的位置,或者通过 Intent.setClipData(ClipData) 传递 Uri。如果您未设置 ClipData,系统会在调用 Context.startActivity(Intent) 时将其复制到该位置。
การปรับปรุงรูปภาพ UltraHDR
Android 16 继续致力于通过 UltraHDR 图片提供出色的图片质量。它添加了对 HEIC 文件格式的 UltraHDR 图片的支持。这些图片将获得 ImageFormat 类型 HEIC_ULTRAHDR,并包含类似于现有 UltraHDR JPEG 格式的嵌入式增益图。我们还在努力为 UltraHDR 添加 AVIF 支持,敬请期待。
此外,Android 16 在 UltraHDR 中实现了 ISO 21496-1 草稿标准中的其他参数,包括能够获取和设置应应用增益图算法的色彩空间,以及支持使用 SDR 增益图的 HDR 编码基础图片。
กราฟิก
Android 16 มีการปรับปรุงกราฟิกล่าสุด เช่น เอฟเฟกต์กราฟิกที่กำหนดเองด้วย AGSL
เอฟเฟกต์กราฟิกที่กำหนดเองด้วย AGSL
Android 16 เพิ่ม RuntimeColorFilter และ RuntimeXfermode ซึ่งช่วยให้คุณสร้างเอฟเฟกต์ที่ซับซ้อนได้ เช่น เกณฑ์ สีซีเปีย และความอิ่มตัวของสี และนำไปใช้กับการโทรแบบวาดได้ ตั้งแต่ Android 13 เป็นต้นไป คุณสามารถใช้ AGSL เพื่อสร้าง RuntimeShaders ที่กําหนดเองซึ่งขยาย Shader API ใหม่นี้ทำงานแบบเดียวกัน โดยเพิ่ม RuntimeColorFilter ที่ทำงานด้วย AGSL ซึ่งขยาย ColorFilter และเอฟเฟกต์ Xfermode ที่ช่วยให้คุณใช้การคอมโพสและผสมผสานที่กำหนดเองตาม AGSL ระหว่างพิกเซลต้นทางและปลายทางได้
private val thresholdEffectString = """
uniform half threshold;
half4 main(half4 c) {
half luminosity = dot(c.rgb, half3(0.2126, 0.7152, 0.0722));
half bw = step(threshold, luminosity);
return bw.xxx1 * c.a;
}"""
fun setCustomColorFilter(paint: Paint) {
val filter = RuntimeColorFilter(thresholdEffectString)
filter.setFloatUniform(0.5);
paint.colorFilter = filter
}
การเชื่อมต่อ
Android 16 อัปเดตแพลตฟอร์มเพื่อให้แอปของคุณเข้าถึงความก้าวหน้าล่าสุดในด้านเทคโนโลยีการสื่อสารและเทคโนโลยีไร้สาย
การวัดระยะด้วยการรักษาความปลอดภัยที่ดียิ่งขึ้น
Android 16 เพิ่มการรองรับฟีเจอร์ด้านความปลอดภัยที่มีประสิทธิภาพในตำแหน่ง Wi-Fi บนอุปกรณ์ที่รองรับ 802.11az ของ Wi-Fi 6 ซึ่งช่วยให้แอปสามารถรวมความแม่นยำที่สูงขึ้น ความสามารถในการปรับขนาดที่มากขึ้น และการกําหนดเวลาแบบไดนามิกของโปรโตคอลเข้ากับการปรับปรุงด้านความปลอดภัย ซึ่งรวมถึงการเข้ารหัสตาม AES-256 และการป้องกันการโจมตี MITM ซึ่งช่วยให้ใช้งานได้อย่างปลอดภัยมากขึ้นใน Use Case ต่างๆ ในระยะใกล้ เช่น ปลดล็อกแล็ปท็อปหรือประตูรถยนต์ 802.11az ผสานรวมกับมาตรฐาน Wi-Fi 6 เพื่อใช้ประโยชน์จากโครงสร้างพื้นฐานและความสามารถของมาตรฐานนี้เพื่อการใช้งานในวงกว้างขึ้นและการติดตั้งใช้งานได้ง่ายขึ้น
API การกำหนดช่วงทั่วไป
Android 16 包含新的 RangingManager,它提供了在受支持的硬件上确定本地设备与远程设备之间的距离和角度的方法。RangingManager 支持使用各种测距技术,例如 BLE 信道声音探测、基于 BLE RSSI 的测距、超宽带和 Wi-Fi 往返时间。
การปรากฏของอุปกรณ์ใน Companion Device Manager
ใน Android 16 เราจะเปิดตัว API ใหม่สำหรับการเชื่อมโยงบริการของแอปที่ใช้ร่วมกัน บริการจะเชื่อมโยงเมื่อ BLE อยู่ในระยะสัญญาณและบลูทูธเชื่อมต่ออยู่ และบริการจะยกเลิกการเชื่อมโยงเมื่อ BLE อยู่นอกระยะสัญญาณหรือบลูทูธยกเลิกการเชื่อมต่อ แอปจะได้รับการเรียกกลับ 'onDevicePresenceEvent()' ใหม่ตาม DevicePresenceEvent ต่างๆ
ดูรายละเอียดเพิ่มเติมได้ใน 'startObservingDevicePresence(ObservingDevicePresenceRequest)'
สื่อ
Android 16 มีฟีเจอร์หลากหลายที่ช่วยปรับปรุงประสบการณ์การใช้งานสื่อ
การปรับปรุงเครื่องมือเลือกรูปภาพ
照片选择器为用户提供了一种安全的内置授权方式,让用户可以向应用授予对本地存储空间和云端存储空间中所选图片和视频的访问权限,而不是对整个媒体库的访问权限。通过 Google 系统更新和 Google Play 服务组合使用模块化系统组件,该工具向后支持到 Android 4.4(API 级别 19)。只需几行代码即可与相关的 Android Jetpack 库集成。
Android 16 对照片选择器进行了以下改进:
- 嵌入式照片选择器:新 API,可让应用将照片选择器嵌入其视图层次结构中。这样,它就感觉像是应用中更为集成的一部分,同时仍可利用进程隔离功能,让用户能够选择媒体,而无需应用拥有过于宽泛的权限。为了最大限度地提高跨平台版本的兼容性并简化集成,如果您想集成嵌入式照片选择器,则需要使用即将推出的 Android Jetpack 库。
- 照片选择器中的云搜索:新的 API 可让 Android 照片选择器从云端媒体提供商中进行搜索。照片选择器中的搜索功能即将推出。
วิดีโอระดับมืออาชีพขั้นสูง
Android 16 รองรับตัวแปลงรหัส Advanced Professional Video (APV) ซึ่งออกแบบมาเพื่อใช้ในการบันทึกวิดีโอคุณภาพสูงระดับมืออาชีพและหลังการประมวลผล
มาตรฐานตัวแปลงรหัส APV มีฟีเจอร์ต่อไปนี้
- คุณภาพวิดีโอที่ไม่มีการสูญเสียข้อมูล (ใกล้เคียงกับคุณภาพวิดีโอ RAW)
- การโค้ดภายในเฟรมเท่านั้นที่มีความซับซ้อนต่ำและมีอัตราผ่านข้อมูลสูง (ไม่มีการคาดการณ์โดเมนพิกเซล) เพื่อรองรับเวิร์กโฟลว์การแก้ไขได้ดียิ่งขึ้น
- รองรับช่วงอัตราบิตสูงถึง 2-3 Gbps สำหรับเนื้อหาความละเอียด 2K, 4K และ 8K ซึ่งเปิดใช้โดยรูปแบบการเข้ารหัสเอนโทรปีแบบเบา
- การแบ่งเฟรมเป็นไทล์สําหรับเนื้อหาที่สมจริงและเพื่อเปิดใช้การเข้ารหัสและการถอดรหัสแบบขนาน
- รองรับรูปแบบการสุ่มตัวอย่างสีและบิตความลึกที่หลากหลาย
- รองรับการถอดรหัสหลายครั้งและการเข้ารหัสอีกครั้งโดยไม่ทำให้คุณภาพของภาพลดลงอย่างรุนแรง
- รองรับวิดีโอหลายมุมมองและวิดีโอเสริม เช่น วิดีโอแสดงภาพระดับความลึก วิดีโออัลฟ่า และวิดีโอตัวอย่าง
- การรองรับ HDR10/10+ และข้อมูลเมตาที่ผู้ใช้กำหนด
การใช้งาน APV อ้างอิงมีให้ผ่านโปรเจ็กต์ OpenAPV Android 16 จะรองรับโปรไฟล์ APV 422-10 ซึ่งให้การสุ่มตัวอย่างสี YUV 422 พร้อมกับการเข้ารหัส 10 บิตและอัตราบิตเป้าหมายสูงสุด 2 Gbps
ความเป็นส่วนตัว
Android 16 มีฟีเจอร์หลากหลายที่ช่วยให้นักพัฒนาแอปปกป้องความเป็นส่วนตัวของผู้ใช้
ข้อมูลอัปเดตเกี่ยวกับ Health Connect
Health Connect 添加了 ACTIVITY_INTENSITY,这是一种根据世界卫生组织关于中等强度和剧烈强度活动的指南定义的数据类型。每个记录都需要提供开始时间、结束时间以及活动强度(中等或剧烈)。
Health Connect 还包含支持医疗记录的更新版 API。这样一来,应用便可在征得用户明确同意的情况下,读取和写入 FHIR 格式的医疗记录。
Privacy Sandbox ใน Android
Android 16 มี Privacy Sandbox ใน Android เวอร์ชันล่าสุด ซึ่งเป็นส่วนหนึ่งของความพยายามอย่างต่อเนื่องของเราในการพัฒนาเทคโนโลยีที่ผู้ใช้รู้ว่าความเป็นส่วนตัวของตนได้รับการคุ้มครอง เว็บไซต์ของเรามีข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมเบต้าสำหรับนักพัฒนาแอป Android ของ Privacy Sandbox เพื่อช่วยให้คุณเริ่มต้นใช้งาน โปรดดูรันไทม์ของ SDK ซึ่งช่วยให้ SDK ทำงานในสภาพแวดล้อมรันไทม์เฉพาะที่แยกจากแอปที่ให้บริการ ซึ่งช่วยเสริมเกราะป้องกันที่มากขึ้นในการเก็บรวบรวมและแชร์ข้อมูลผู้ใช้
ความปลอดภัย
Android 16 มีฟีเจอร์ที่ช่วยปรับปรุงความปลอดภัยของแอปและปกป้องข้อมูลของแอป
API การแชร์กุญแจ
Android 16 เพิ่ม API ที่รองรับการแชร์สิทธิ์เข้าถึงคีย์ใน Android Keystore กับแอปอื่นๆ คลาส KeyStoreManager ใหม่รองรับการให้และเพิกถอนสิทธิ์เข้าถึงคีย์ตาม uid ของแอป และมี API สําหรับแอปในการเข้าถึงคีย์ที่แชร์
รูปแบบของอุปกรณ์
Android 16 ช่วยให้แอปของคุณใช้ประโยชน์จากรูปแบบของ Android ได้อย่างเต็มที่
เฟรมเวิร์กคุณภาพของภาพและคุณภาพเสียงที่ได้มาตรฐานสำหรับทีวี
The new MediaQuality
package in Android 16 exposes
a set of standardized APIs for access to audio and picture profiles and
hardware-related settings. This allows streaming apps to query profiles and
apply them to media dynamically:
- Movies mastered with a wider dynamic range require greater color accuracy to see subtle details in shadows and adjust to ambient light, so a profile that prefers color accuracy over brightness may be appropriate.
- Live sporting events are often mastered with a narrow dynamic range, but are often watched in daylight, so a profile that preferences brightness over color accuracy can give better results.
- Fully interactive content wants minimal processing to reduce latency, and wants higher frame rates, which is why many TV's ship with a game profile.
The API allows apps to switch between profiles and users to enjoy tuning supported TVs to best suit their content.
การทำให้เป็นสากล
Android 16 เพิ่มฟีเจอร์และความสามารถที่ช่วยเสริมประสบการณ์ของผู้ใช้เมื่อใช้อุปกรณ์ในภาษาต่างๆ
ข้อความแนวตั้ง
Android 16 เพิ่มการรองรับระดับล่างสำหรับการแสดงผลและการวัดข้อความในแนวตั้งเพื่อให้บริการรองรับการเขียนแนวตั้งพื้นฐานสำหรับนักพัฒนาไลบรารี ซึ่งมีประโยชน์อย่างยิ่งสำหรับภาษาอย่างภาษาญี่ปุ่นที่ใช้ระบบการเขียนแนวตั้งโดยทั่วไป มีการเพิ่ม Flag ใหม่ VERTICAL_TEXT_FLAG ลงในคลาส Paint เมื่อตั้งค่า Flag นี้โดยใช้ Paint.setFlags API การวัดข้อความของ Paint จะรายงานการเลื่อนแนวตั้งแทนการเลื่อนแนวนอน และ Canvas จะวาดข้อความในแนวตั้ง
val text = "「春は、曙。」"
Box(
Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
drawIntoCanvas { canvas ->
val paint = Paint().apply { textSize = 64.sp.toPx() }
// Draw text vertically
paint.flags = paint.flags or VERTICAL_TEXT_FLAG
val height = paint.measureText(text)
canvas.nativeCanvas.drawText(
text,
0,
text.length,
size.width / 2,
(size.height - height) / 2,
paint
)
}
}
) {}
การปรับแต่งระบบการวัด
用户现在可以在“设置”中的地区偏好设置中自定义测量系统。用户偏好设置包含在语言区域代码中,因此您可以在 ACTION_LOCALE_CHANGED 上注册 BroadcastReceiver,以便在地区偏好设置发生更改时处理语言区域配置更改。
使用格式设置程序有助于提供符合当地体验的服务。例如,对于将手机设置为英语(丹麦)或将手机设置为英语(美国)并将公制作为首选测量系统的用户,“0.5 in”的英语(美国)对应于“12,7 mm”。
如需找到这些设置,请打开“设置”应用,然后依次前往系统 > 语言和地区。