Android 16 มาพร้อมฟีเจอร์และ 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 introduces progress-centric notifications to help users seamlessly track user-initiated, start-to-end journeys.
Notification.ProgressStyle is a new notification
style that lets you create progress-centric notifications. Key use cases include
rideshare, delivery, and navigation. Within the Notification.ProgressStyle
class, you can denote states and milestones in a user journey using
points and segments.
ดูข้อมูลเพิ่มเติมได้ที่หน้าเอกสารประกอบเกี่ยวกับการแจ้งเตือนที่เน้นความคืบหน้า
การอัปเดตการย้อนกลับที่คาดการณ์ได้
Android 16 เพิ่ม API ใหม่เพื่อช่วยให้คุณเปิดใช้การเคลื่อนไหวของระบบแบบคาดเดาสำหรับการนําทางด้วยท่าทางสัมผัส เช่น การเคลื่อนไหวกลับไปยังหน้าแรก การลงทะเบียน onBackInvokedCallback ด้วย PRIORITY_SYSTEM_NAVIGATION_OBSERVER ใหม่จะช่วยให้แอปของคุณได้รับการเรียก onBackInvoked ปกติทุกครั้งที่ระบบจัดการการนําทางกลับโดยไม่ส่งผลกระทบต่อขั้นตอนการนำทางกลับปกติ
Android 16 เพิ่ม finishAndRemoveTaskCallback() และ moveTaskToBackCallback เข้ามาด้วย การลงทะเบียนการเรียกกลับเหล่านี้กับ OnBackInvokedDispatcher จะช่วยให้ระบบทริกเกอร์ลักษณะการทำงานที่เฉพาะเจาะจงและเล่นภาพเคลื่อนไหวที่เกี่ยวข้องล่วงหน้าได้เมื่อมีการเรียกใช้ท่าทางสัมผัสกลับ
การโต้ตอบการสัมผัสที่ละเอียดยิ่งขึ้น
Android has exposed control over the haptic actuator ever since its inception.
Android 11 added support for more complex haptic effects that more advanced
actuators could support through
VibrationEffect.Compositions of device-defined semantic
primitives.
Android 16 adds haptic APIs that let apps define the amplitude and frequency curves of a haptic effect while abstracting away differences between device capabilities.
ประสิทธิภาพการทำงานและเครื่องมือสำหรับนักพัฒนาซอฟต์แวร์
แม้ว่างานส่วนใหญ่ของเราในการปรับปรุงประสิทธิภาพการทำงานของคุณจะมุ่งเน้นไปที่เครื่องมือต่างๆ เช่น Android Studio, Jetpack Compose และไลบรารี Android Jetpack แต่เราก็มองหาวิธีต่างๆ ในแพลตฟอร์มเพื่อช่วยให้คุณตระหนักถึงวิสัยทัศน์ของคุณอยู่เสมอ
การจัดการเนื้อหาสำหรับวอลเปเปอร์เคลื่อนไหว
In Android 16, the live wallpaper framework is gaining a new content API to
address the challenges of dynamic, user-driven wallpapers. Currently, live
wallpapers incorporating user-provided content require complex, service-specific
implementations. Android 16 introduces
WallpaperDescription and
WallpaperInstance. WallpaperDescription lets you
identify distinct instances of a live wallpaper from the same service. For
example, a wallpaper that has instances on both the home screen and on the lock
screen may have unique content in both places. The wallpaper picker and
WallpaperManager use this metadata to better present
wallpapers to users, streamlining the process for you to create diverse and
personalized live wallpaper experiences.
ประสิทธิภาพและแบตเตอรี่
Android 16 เปิดตัว API ที่ช่วยรวบรวมข้อมูลเชิงลึกเกี่ยวกับแอปของคุณ
การทำโปรไฟล์ที่ระบบทริกเกอร์
ProfilingManager was
added in Android 15, giving apps the ability to
request profiling data collection using Perfetto on public devices in the field.
However, since this profiling must be started from the app, critical flows such
as startups or ANRs would be difficult or impossible for apps to capture.
To help with this, Android 16 introduces system-triggered profiling to
ProfilingManager. Apps can register interest in receiving traces for certain
triggers such as cold start reportFullyDrawn
or ANRs, and then the system starts and stops a trace on the app's behalf. After
the trace completes, the results are delivered to the app's data directory.
เริ่มคอมโพเนนต์ใน ApplicationStartInfo
ApplicationStartInfo was added in Android
15, allowing an app to see reasons
for process start, start type, start times, throttling, and other useful
diagnostic data. Android 16 adds
getStartComponent()
to distinguish what component type triggered the start, which can be helpful for
optimizing the startup flow of your app.
การตรวจสอบงานที่ดีขึ้น
The JobScheduler#getPendingJobReason() API returns a reason why a job
might be pending. However, a job might be pending for multiple reasons.
In Android 16, we are introducing a new API
JobScheduler#getPendingJobReasons(int jobId), which returns multiple
reasons why a job is pending, due to both explicit constraints set by the
developer and implicit constraints set by the system.
We're also introducing
JobScheduler#getPendingJobReasonsHistory(int jobId), which returns a list
of the most recent constraint changes.
We recommend using the API to help you debug why your jobs may not be executing, especially if you're seeing reduced success rates of certain tasks or have bugs around latency of certain job completion. For example, updating widgets in the background failed to occur or prefetch job failed to be called prior to app start.
This can also better help you understand if certain jobs are not completing due to system defined constraints versus explicitly set constraints.
อัตราการรีเฟรชแบบปรับอัตโนมัติ
Adaptive refresh rate (ARR), introduced in Android 15, enables the display refresh rate on supported hardware to adapt to the content frame rate using discrete VSync steps. This reduces power consumption while eliminating the need for potentially jank-inducing mode-switching.
Android 16 introduces hasArrSupport() and
getSuggestedFrameRate(int) while restoring
getSupportedRefreshRates() to make it easier for your apps to take
advantage of ARR. RecyclerView
1.4 internally supports ARR when it is settling from a fling or
smooth scroll, and we're continuing our work to add ARR
support into more Jetpack libraries. This frame rate article covers
many of the APIs you can use to set the frame rate so that your app can directly
use ARR.
API พื้นที่ว่างใน ADPF
SystemHealthManager เปิดตัว API getCpuHeadroom และ getGpuHeadroom ซึ่งออกแบบมาเพื่อให้เกมและแอปที่ใช้ทรัพยากรมากทราบทรัพยากร CPU และ GPU ที่พร้อมใช้งานโดยประมาณ วิธีเหล่านี้เป็นวิธีให้คุณประเมินวิธีที่แอปหรือเกมจะปรับปรุงประสิทธิภาพของระบบได้ดีที่สุด โดยเฉพาะเมื่อใช้ร่วมกับ API อื่นๆ ของ Android Dynamic Performance Framework (ADPF) ที่ตรวจหาการจำกัดความร้อน
เมื่อใช้ CpuHeadroomParams และ GpuHeadroomParams ในอุปกรณ์ที่รองรับ คุณจะปรับแต่งกรอบเวลาที่ใช้คำนวณ Headroom และเลือกระหว่างความพร้อมใช้งานทรัพยากรโดยเฉลี่ยหรือขั้นต่ำได้ ซึ่งจะช่วยคุณลดการใช้ทรัพยากร CPU หรือ GPU ตามความเหมาะสม ส่งผลให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีขึ้นและอายุการใช้งานแบตเตอรี่เพิ่มขึ้น
การช่วยเหลือพิเศษ
Android 16 เพิ่ม API และฟีเจอร์การช่วยเหลือพิเศษใหม่ๆ ที่จะช่วยให้คุณนำแอปไปสู่ผู้ใช้ทุกคนได้
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) ...
}
ตัวอย่างต่อไปนี้แสดงลักษณะของรูปภาพหลังจากปรับอุณหภูมิสีและการปรับสีต่างๆ
การตรวจหาฉากในโหมดกลางคืนของกล้อง
To help your app know when to switch to and from a night mode camera session,
Android 16 adds EXTENSION_NIGHT_MODE_INDICATOR. If
supported, it's available in the CaptureResult within
Camera2.
This is the API we briefly mentioned as coming soon in the How Instagram enabled users to take stunning low light photos blog post. That post is a practical guide on how to implement night mode together with a case study that links higher-quality in-app night mode photos with an increase in the number of photos shared from the in-app camera.
การดำเนินการผ่าน Intent ในการจับภาพเคลื่อนไหว
Android 16 เพิ่มการดำเนินการของ Intent มาตรฐาน ACTION_MOTION_PHOTO_CAPTURE และ ACTION_MOTION_PHOTO_CAPTURE_SECURE ซึ่งจะส่งคําขอให้แอปพลิเคชันกล้องจับภาพเคลื่อนไหวและแสดงผล
คุณต้องส่ง EXTRA_OUTPUT เพิ่มเติมเพื่อควบคุมตำแหน่งที่จะเขียนรูปภาพ หรือส่ง Uri ผ่าน Intent.setClipData(ClipData) หากคุณไม่ได้ตั้งค่า
ClipData ระบบจะคัดลอกค่านั้นให้คุณเมื่อโทรไปที่ Context.startActivity(Intent)
การปรับปรุงรูปภาพ Ultra HDR
Android 16 continues our work to deliver dazzling image quality with UltraHDR
images. It adds support for UltraHDR images in the HEIC file
format. These images will get ImageFormat type
HEIC_ULTRAHDR and will contain an embedded gainmap similar
to the existing UltraHDR JPEG format. We're working on AVIF support for UltraHDR
as well, so stay tuned.
In addition, Android 16 implements additional parameters in UltraHDR from the ISO 21496-1 draft standard, including the ability to get and set the colorspace that gainmap math should be applied in, as well as support for HDR encoded base images with SDR gainmaps.
กราฟิก
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 adds support for robust security features in Wi-Fi location on supported devices with Wi-Fi 6's 802.11az, allowing apps to combine the higher accuracy, greater scalability, and dynamic scheduling of the protocol with security enhancements including AES-256-based encryption and protection against MITM attacks. This allows it to be used more safely in proximity use cases, such as unlocking a laptop or a vehicle door. 802.11az is integrated with the Wi-Fi 6 standard, leveraging its infrastructure and capabilities for wider adoption and easier deployment.
API การจัดอันดับทั่วไป
Android 16 มี RangingManager ใหม่ ซึ่งระบุวิธีหาระยะทางและมุมในฮาร์ดแวร์ที่รองรับระหว่างอุปกรณ์ในเครื่องกับอุปกรณ์ระยะไกล RangingManager รองรับการใช้เทคโนโลยีการระบุตำแหน่งแบบต่างๆ เช่น การตรวจหาช่อง BLE, การระบุตำแหน่งตาม RSSI ของ BLE, Ultra Wideband และเวลาในการรับส่งข้อมูล Wi-Fi
การตรวจหาอุปกรณ์ที่ใช้ร่วมกัน
ใน 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 adds ACTIVITY_INTENSITY, a data type defined according to World
Health Organization guidelines around moderate and vigorous activity. Each
record requires the start time, the end time, and whether the activity intensity
is moderate or vigorous.
Health Connect also contains updated APIs supporting medical records. This allows apps to read and write medical records in FHIR format with explicit user consent.
Privacy Sandbox ใน Android
Android 16 มี Privacy Sandbox ใน Android เวอร์ชันล่าสุด ซึ่งเป็นส่วนหนึ่งของความพยายามอย่างต่อเนื่องของเราในการพัฒนาเทคโนโลยีที่ผู้ใช้รู้ว่าความเป็นส่วนตัวของตนได้รับการคุ้มครอง เว็บไซต์ของเรามีข้อมูลเพิ่มเติมเกี่ยวกับโปรแกรมเบต้าสำหรับนักพัฒนาแอป Android ของ Privacy Sandbox เพื่อช่วยให้คุณเริ่มต้นใช้งาน โปรดดูรันไทม์ของ SDK ซึ่งช่วยให้ SDK ทำงานในสภาพแวดล้อมรันไทม์เฉพาะที่แยกจากแอปที่ให้บริการ ซึ่งช่วยเสริมเกราะป้องกันที่มากขึ้นในการเก็บรวบรวมและแชร์ข้อมูลผู้ใช้
ความปลอดภัย
Android 16 มีฟีเจอร์ที่จะช่วยเพิ่มความปลอดภัยของแอปและ ปกป้องข้อมูลของแอป
API การแชร์คีย์
Android 16 adds APIs that support sharing access to
Android Keystore keys with other apps. The new
KeyStoreManager class supports
granting and revoking access to keys
by app uid, and includes an API for apps to access shared
keys.
รูปแบบของอุปกรณ์
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 adds low-level support for rendering and measuring text vertically to
provide foundational vertical writing support for library developers. This is
particularly useful for languages like Japanese that commonly use vertical
writing systems. A new flag,
VERTICAL_TEXT_FLAG,
has been added to the Paint class. When
this flag is set using
Paint.setFlags, Paint's
text measurement APIs will report vertical advances instead of horizontal
advances, and Canvas will draw text
vertically.
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
)
}
}
) {}
การปรับแต่งระบบการวัด
Users can now customize their measurement system in regional preferences within
Settings. The user preference is included as part of the locale code, so you can
register a BroadcastReceiver on
ACTION_LOCALE_CHANGED to handle locale configuration changes when
regional preferences change.
Using formatters can help match the local experience. For example, "0.5 in" in English (United States), is "12,7 mm" for a user who has set their phone to English (Denmark) or who uses their phone in English (United States) with the metric system as the measurement system preference.
To find these settings, open the Settings app and navigate to System > Languages & region.