सुविधाएं और एपीआई

Android 16 में, डेवलपर के लिए शानदार नई सुविधाएं और एपीआई जोड़े गए हैं. इन सुविधाओं के बारे में खास जानकारी देने के लिए, यहां दिए गए सेक्शन में इनके बारे में बताया गया है. इससे, आपको इनसे जुड़े एपीआई का इस्तेमाल शुरू करने में मदद मिलेगी.

नए, बदले गए, और हटाए गए एपीआई की पूरी सूची के लिए, एपीआई के बीच अंतर की रिपोर्ट पढ़ें. नए एपीआई के बारे में ज़्यादा जानने के लिए, Android एपीआई का रेफ़रंस देखें — नए एपीआई को हाइलाइट किया गया है, ताकि उन्हें आसानी से देखा जा सके.

आपको उन जगहों की भी समीक्षा करनी चाहिए जहां प्लैटफ़ॉर्म में हुए बदलावों का आपके ऐप्लिकेशन पर असर पड़ सकता है. ज़्यादा जानकारी के लिए, ये पेज देखें:

मुख्य फ़ंक्शन

Android में नए एपीआई शामिल हैं, जो Android सिस्टम की मुख्य सुविधाओं को बेहतर बनाते हैं.

साल 2025 में Android के दो एपीआई रिलीज़ किए जाएंगे

  • This preview is for the next major release of Android with a planned launch in Q2 of 2025. This release is similar to all of our API releases in the past, where we can have planned behavior changes that are often tied to a targetSdkVersion.
  • We're planning the major release a quarter earlier (Q2 rather than Q3 in prior years) to better align with the schedule of device launches across our ecosystem, so more devices can get the major release of Android sooner. With the major release coming in Q2, you'll need to do your annual compatibility testing a few months earlier than in previous years to make sure your apps are ready.
  • We plan to have another release in Q4 of 2025 which also will include new developer APIs. The Q2 major release will be the only release in 2025 to include planned behavior changes that could affect apps.

In addition to new developer APIs, the Q4 minor release will pick up feature updates, optimizations, and bug fixes; it will not include any app-impacting behavior changes.

Timeline view of Android releases in 2025, noting that the 25Q2
       release is a major release and the 25Q4 release is a minor release.

We'll continue to have quarterly Android releases. The Q1 and Q3 updates in-between the API releases will provide incremental updates to help ensure continuous quality. We're actively working with our device partners to bring the Q2 release to as many devices as possible.

Using new APIs with major and minor releases

Guarding a code block with a check for API level is done today using the SDK_INT constant with VERSION_CODES. This will continue to be supported for major Android releases.

if (SDK_INT >= VERSION_CODES.BAKLAVA) {
  // Use APIs introduced in Android 16
}

The new SDK_INT_FULL constant can be used for API checks against both major and minor versions with the new VERSION_CODES_FULL enumeration.

if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
  // Use APIs introduced in a major or minor release
}

You can also use the Build.getMinorSdkVersion() method to get just the minor SDK version.

val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)

These APIs have not yet been finalized and are subject to change, so please send us feedback if you have any concerns.

उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)

Android 16, ऐप्लिकेशन डेवलपर और उपयोगकर्ताओं को अपने डिवाइस को अपनी ज़रूरतों के हिसाब से कॉन्फ़िगर करने के लिए ज़्यादा कंट्रोल और सुविधाएं देता है.

प्रोग्रेस से जुड़ी सूचनाएं

Android 16 में, प्रोग्रेस पर आधारित सूचनाएं देने की सुविधा जोड़ी गई है. इससे उपयोगकर्ताओं को, शुरू से लेकर आखिर तक की प्रोसेस को आसानी से ट्रैक करने में मदद मिलती है.

Notification.ProgressStyle, सूचनाओं का एक नया स्टाइल है. इसकी मदद से, प्रोग्रेस के बारे में सूचनाएं बनाई जा सकती हैं. इस्तेमाल के मुख्य उदाहरणों में, राइडशेयर, डिलीवरी, और नेविगेशन शामिल हैं. Notification.ProgressStyle क्लास में, पॉइंट और सेगमेंट का इस्तेमाल करके, उपयोगकर्ता के सफ़र में स्टेटस और माइलस्टोन दिखाए जा सकते हैं.

ज़्यादा जानने के लिए, प्रगति से जुड़ी सूचनाएं दस्तावेज़ पेज देखें.

लॉकस्क्रीन पर दिखने वाली, प्रोग्रेस से जुड़ी सूचना.
सूचना शेड में दिखाई गई, प्रोग्रेस से जुड़ी सूचना.

'पीछे जाने पर झलक दिखाने वाला हाथ का जेस्चर' सुविधा से जुड़े अपडेट

Android 16 में नए एपीआई जोड़े गए हैं. इनकी मदद से, जेस्चर नेविगेशन में प्रिडिक्टिव बैक सिस्टम ऐनिमेशन चालू किए जा सकते हैं. जैसे, होम पेज पर वापस जाने के लिए ऐनिमेशन. 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 引入了 WallpaperDescriptionWallpaperInstance。借助 WallpaperDescription,您可以识别同一服务中的动态壁纸的不同实例。例如,如果某张壁纸同时在主屏幕和锁定屏幕上显示,则这两种情况下显示的内容可能各不相同。壁纸选择器和 WallpaperManager 会使用此元数据更好地向用户呈现壁纸,从而简化创建多样化个性化动态壁纸体验的过程。

परफ़ॉर्मेंस और बैटरी

Android 16 में ऐसे एपीआई शामिल किए गए हैं जिनकी मदद से, आपके ऐप्लिकेशन के बारे में अहम जानकारी इकट्ठा की जा सकती है.

सिस्टम से ट्रिगर की गई प्रोफ़ाइलिंग

ProfilingManager को Android 15 में जोड़ा गया था. इससे ऐप्लिकेशन, फ़ील्ड में मौजूद सार्वजनिक डिवाइसों पर Perfetto का इस्तेमाल करके, प्रोफ़ाइलिंग डेटा इकट्ठा करने का अनुरोध कर सकते हैं. हालांकि, यह प्रोफ़ाइलिंग ऐप्लिकेशन से शुरू की जानी चाहिए. इसलिए, ऐप्लिकेशन के लिए स्टार्टअप या ANR जैसे अहम फ़्लो को कैप्चर करना मुश्किल या असंभव होगा.

इसकी मदद करने के लिए, Android 16 में ProfilingManager के लिए, सिस्टम से ट्रिगर की जाने वाली प्रोफ़ाइलिंग की सुविधा जोड़ी गई है. ऐप्लिकेशन, कुछ ट्रिगर के लिए ट्रेस पाने में दिलचस्पी रजिस्टर कर सकते हैं. जैसे, कोल्ड स्टार्ट reportFullyDrawn या ANR. इसके बाद, सिस्टम ऐप्लिकेशन की ओर से ट्रेस शुरू और बंद करता है. ट्रैक पूरा होने के बाद, नतीजे ऐप्लिकेशन की डेटा डायरेक्ट्री में डिलीवर किए जाते हैं.

ApplicationStartInfo में कॉम्पोनेंट शुरू करना

ApplicationStartInfo को Android 15 में जोड़ा गया था. इससे ऐप्लिकेशन को प्रोसेस शुरू होने की वजहें, शुरू होने का टाइप, शुरू होने का समय, थ्रॉटलिंग, और गड़बड़ी की जानकारी देने वाला अन्य काम का डेटा देखने की सुविधा मिलती है. Android 16 में getStartComponent() को जोड़ा गया है, ताकि यह पता लगाया जा सके कि ऐप्लिकेशन को किस तरह के कॉम्पोनेंट ने ट्रिगर किया. इससे, ऐप्लिकेशन के स्टार्टअप फ़्लो को ऑप्टिमाइज़ करने में मदद मिल सकती है.

नौकरी के बारे में बेहतर तरीके से जानकारी पाना

JobScheduler#getPendingJobReason() एपीआई, किसी जॉब के लंबित होने की वजह बताता है. हालांकि, किसी जॉब के पूरा न होने की कई वजहें हो सकती हैं.

हम Android 16 में एक नया एपीआई JobScheduler#getPendingJobReasons(int jobId) पेश कर रहे हैं. इससे, किसी जॉब के लंबे समय से पेंडिंग होने की कई वजहें पता चलती हैं. ये वजहें, डेवलपर की ओर से सेट की गई साफ़ तौर पर बताई गई पाबंदियों और सिस्टम की ओर से सेट की गई छिपी हुई पाबंदियों, दोनों की वजह से होती हैं.

हम JobScheduler#getPendingJobReasonsHistory(int jobId) को भी पेश कर रहे हैं. इससे, पाबंदी में हुए सबसे हाल के बदलावों की सूची दिखती है.

हमारा सुझाव है कि एपीआई का इस्तेमाल करके, यह पता लगाएं कि आपकी जॉब क्यों नहीं चल रही हैं. ऐसा खास तौर पर तब करें, जब आपको कुछ टास्क के पूरा होने की दर में कमी दिख रही हो या किसी जॉब के पूरा होने में लगने वाले समय से जुड़ी गड़बड़ियां दिख रही हों. उदाहरण के लिए, बैकग्राउंड में विजेट अपडेट नहीं हो पाए या ऐप्लिकेशन शुरू होने से पहले, डेटा को पहले से लोड करने की सुविधा को कॉल नहीं किया जा सका.

इससे आपको यह समझने में भी मदद मिल सकती है कि कुछ जॉब, सिस्टम की तय की गई पाबंदियों की वजह से पूरी नहीं हो रहे हैं या साफ़ तौर पर सेट की गई पाबंदियों की वजह से.

अडैप्टिव रीफ़्रेश रेट

Android 15 में, अडैप्टिव रिफ़्रेश रेट (एआरआर) की सुविधा जोड़ी गई है. इसकी मदद से, डिसप्ले रिफ़्रेश रेट को डिवाइस के हिसाब से अडजस्ट किया जा सकता है. इसके लिए, अलग-अलग VSync चरण का इस्तेमाल करके, कॉन्टेंट के फ़्रेम रेट के हिसाब से डिसप्ले रिफ़्रेश रेट को अडजस्ट किया जाता है. इससे बिजली की खपत कम होती है. साथ ही, मोड स्विच करने की ज़रूरत भी नहीं पड़ती.

Android 16 में hasArrSupport() और getSuggestedFrameRate(int) को शामिल किया गया है. साथ ही, getSupportedRefreshRates() को वापस लाया गया है, ताकि आपके ऐप्लिकेशन आसानी से ARR का फ़ायदा ले सकें. RecyclerView 1.4, फ़्लिंग या स्मूद स्क्रोल से सेटल होने पर, अंदरूनी तौर पर ARR के साथ काम करता है. हम ज़्यादा Jetpack लाइब्रेरी में ARR की सुविधा जोड़ने के लिए काम कर रहे हैं. फ़्रेम रेट के बारे में इस लेख में, ऐसे कई एपीआई के बारे में बताया गया है जिनका इस्तेमाल करके फ़्रेम रेट सेट किया जा सकता है. इससे आपका ऐप्लिकेशन सीधे तौर पर ARR का इस्तेमाल कर सकता है.

ADPF में Headroom API

SystemHealthManager में getCpuHeadroom और getGpuHeadroom एपीआई को शामिल किया गया है. इन एपीआई को गेम और ज़्यादा संसाधनों वाले ऐप्लिकेशन के लिए उपलब्ध सीपीयू और जीपीयू संसाधनों का अनुमान देने के लिए डिज़ाइन किया गया है. इन तरीकों से यह पता लगाया जा सकता है कि आपका ऐप्लिकेशन या गेम, सिस्टम की परफ़ॉर्मेंस को कैसे बेहतर बना सकता है. खास तौर पर, जब इनका इस्तेमाल Android डाइनैमिक परफ़ॉर्मेंस फ़्रेमवर्क (ADPF) के अन्य एपीआई के साथ किया जाता है, जो थर्मल ट्रिलिंग का पता लगाते हैं.

जिन डिवाइसों पर यह सुविधा काम करती है उन पर CpuHeadroomParams और GpuHeadroomParams का इस्तेमाल करके, हेडरूम का हिसाब लगाने के लिए इस्तेमाल की जाने वाली समयावधि को पसंद के मुताबिक बनाया जा सकता है. साथ ही, संसाधन की औसत या कम से कम उपलब्धता में से किसी एक को चुना जा सकता है. इससे, सीपीयू या जीपीयू के संसाधनों के इस्तेमाल को कम करने में मदद मिल सकती है. इससे, उपयोगकर्ताओं को बेहतर अनुभव मिलता है और बैटरी लाइफ़ भी बेहतर होती है.

सुलभता

Android 16 में, सुलभता से जुड़े नए एपीआई और सुविधाएं जोड़ी गई हैं. इनकी मदद से, हर उपयोगकर्ता के लिए अपना ऐप्लिकेशन उपलब्ध कराया जा सकता है.

सुलभता से जुड़े बेहतर एपीआई

Android 16 添加了其他 API 来增强界面语义,这有助于为依赖于无障碍服务(例如 TalkBack)的用户提高一致性。

为文字添加轮廓,以最大限度地提高文字对比度

视力较低的用户对对比度的敏感度通常较低,因此很难将对象与背景区分开来。为了帮助这些用户,Android 16 引入了轮廓文本,取代了高对比度文本,后者会在文本周围绘制较大的对比度区域,以大大提高可辨性。

Android 16 包含新的 AccessibilityManager API,可让您的应用检查注册监听器,以查看此模式是否已启用。这主要适用于 Compose 等界面工具包,以提供类似的视觉体验。如果您维护界面工具包库,或者您的应用执行绕过 android.text.Layout 类的自定义文本渲染,则可以使用此方法来了解何时启用轮廓文本。

Android 16 推出新的轮廓文本无障碍功能前后,对比度更高的文本

向 TtsSpan 添加了时长

Android 16 使用 TYPE_DURATION 扩展了 TtsSpan,其中包含 ARG_HOURSARG_MINUTESARG_SECONDS。这样,您就可以直接为时长添加注释,确保通过 TalkBack 等服务获得准确且一致的文本转语音输出。

支持具有多个标签的元素

Android 目前允许界面元素从其他元素派生其无障碍功能标签,现在还支持关联多个标签,这是 Web 内容中常见的情况。通过在 AccessibilityNodeInfo 中引入基于列表的 API,Android 可以直接支持这些多标签关系。在进行这项更改的过程中,我们已弃用 AccessibilityNodeInfo#setLabeledBy#getLabeledBy,改用 #addLabeledBy#removeLabeledBy#getLabeledByList

改进了对可展开元素的支持

Android 16 添加了无障碍功能 API,可让您传达互动元素(例如菜单和展开式列表)的展开或收起状态。通过使用 setExpandedState 设置展开状态,并使用 CONTENT_CHANGE_TYPE_EXPANDED 内容更改类型调度 TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents,您可以确保 TalkBack 等屏幕阅读器会读出状态更改,从而提供更直观、更包容的用户体验。

不确定进度条

Android 16 添加了 RANGE_TYPE_INDETERMINATE,让您可以为确定性和不确定性 ProgressBar 微件公开 RangeInfo,从而让 TalkBack 等服务能够更一致地为进度指示器提供反馈。

三态复选框

Android 16 中的新 AccessibilityNodeInfo getCheckedsetChecked(int) 方法现在除了“已选中”和“未选中”之外,还支持“部分选中”状态。此字段取代了已废弃的布尔值 isCheckedsetChecked(boolean)

补充说明

如果无障碍服务提供关于 ViewGroup 的说明,则会将来自其子视图的内容标签合并在一起。如果您为 ViewGroup 提供 contentDescription,无障碍服务会假定您还要覆盖不可聚焦的子视图的说明。如果您想为下拉菜单等内容添加标签(例如“字体系列”),同时保留当前的无障碍功能选择(例如“Roboto”),这可能会造成问题。Android 16 添加了 setSupplementalDescription,以便您提供用于提供 ViewGroup 相关信息的文本,而不会覆盖其子项中的信息。

必填表单字段

Android 16 向 AccessibilityNodeInfo 添加了 setFieldRequired,以便应用可以告知无障碍服务需要输入表单字段。对于填写各种类型表单的用户而言,这是一个重要的场景,即使是简单的必填条款及条件复选框,也能帮助用户始终如一地识别必填字段并在必填字段之间快速导航。

LEA कान की मशीनों के साथ वॉइस कॉल के लिए, फ़ोन को माइक्रोफ़ोन इनपुट के तौर पर इस्तेमाल करना

Android 16 新增了一项功能,让 LE Audio 助听器用户能够在助听器的内置麦克风和手机上的麦克风之间切换,以进行语音通话。在嘈杂的环境或助听器麦克风可能无法正常工作的其他情况下,这会很有帮助。

LEA कान की मशीनों के लिए, आस-पास की आवाज़ के हिसाब से वॉल्यूम कंट्रोल करने की सुविधा

Android 16 में, LE Audio की सुविधा वाली कान की मशीन के उपयोगकर्ताओं के लिए, आस-पास की आवाज़ की आवाज़ कम या ज़्यादा करने की सुविधा जोड़ी गई है. यह आवाज़, कान की मशीन के माइक्रोफ़ोन से रिकॉर्ड की जाती है. यह सुविधा, उन स्थितियों में मददगार हो सकती है जहां बैकग्राउंड का शोर बहुत ज़्यादा या बहुत कम हो.

कैमरा

Android 16 में, प्रोफ़ेशनल कैमरे इस्तेमाल करने वाले लोगों के लिए बेहतर सुविधाएं जोड़ी गई हैं. इनमें, कलर टेंपरेचर और टिनट में सटीक बदलाव करने के साथ-साथ, हाइब्रिड ऑटो एक्सपोज़र की सुविधा भी शामिल है. नाइट मोड के नए इंडिकेटर की मदद से, आपके ऐप्लिकेशन को यह पता चलता है कि नाइट मोड वाले कैमरे सेशन पर कब स्विच करना है और कब उससे वापस आना है. Intent के नए ऐक्शन की मदद से, मोशन फ़ोटो आसानी से कैप्चर की जा सकती हैं. साथ ही, हम HEIC एन्कोडिंग और ISO 21496-1 ड्राफ़्ट स्टैंडर्ड के नए पैरामीटर की मदद से, अल्ट्रा एचडीआर इमेज को बेहतर बना रहे हैं.

हाइब्रिड ऑटो एक्सपोज़र

Android 16 में, Camera2 में नए हाइब्रिड ऑटो-एक्सपोज़र मोड जोड़े गए हैं. इनकी मदद से, एक्सपोज़र के कुछ खास पहलुओं को मैन्युअल तरीके से कंट्रोल किया जा सकता है. बाकी काम, ऑटो-एक्सपोज़र (एई) एल्गोरिदम करता है. ISO + AE और एक्सपोज़र टाइम + AE को कंट्रोल किया जा सकता है. इससे, मौजूदा तरीके की तुलना में ज़्यादा सुविधा मिलती है. मौजूदा तरीके में, आपके पास या तो पूरी तरह से मैन्युअल कंट्रोल होता है या पूरी तरह से ऑटो-एक्सपोज़र पर निर्भर रहना पड़ता है.

public void setISOPriority() {
  ...
  int[] availablePriorityModes =
     mStaticInfo.getCharacteristics().get(CameraCharacteristics.
     COLOR_AE_AVAILABLE_PRIORITY_MODES);
  ...
  // 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);
  reqBuilder.set(CaptureRequest.SENSOR_SENSITIVITY,
      TEST_SENSITIVITY_VALUE);
  CaptureRequest request = reqBuilder.build();
  ...
}

कलर टेंपरेचर और टिनट में सटीक बदलाव करना

Android 16 में कैमरे के लिए, कलर टेंपरेचर और टिनट में बदलाव करने की सुविधा जोड़ी गई है. इससे, प्रोफ़ेशनल वीडियो रिकॉर्डिंग ऐप्लिकेशन को बेहतर तरीके से काम करने में मदद मिलेगी. Android के पिछले वर्शन में, CONTROL_AWB_MODE की मदद से व्हाइट बैलेंस की सेटिंग को कंट्रोल किया जा सकता था. इसमें पहले से तय की गई सूची में मौजूद विकल्प ही उपलब्ध होते थे. जैसे, इंकैंडेसेंट, बादल छाए होने पर, और शाम ढलते समय. COLOR_CORRECTION_MODE_CCT, COLOR_CORRECTION_COLOR_TEMPERATURE और COLOR_CORRECTION_COLOR_TINT का इस्तेमाल करने की सुविधा देता है. इससे, कलर टेंपरेचर के आधार पर, व्हाइट बैलेंस को सटीक तरीके से अडजस्ट किया जा सकता है.

public void setCCT() {
  ...
  Range<Integer> colorTemperatureRange =
     mStaticInfo.getCharacteristics().get(CameraCharacteristics.
     COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE);
  // Set to manual mode to enable CCT mode
  reqBuilder.set(CaptureRequest.CONTROL_AWB_MODE, CameraMetadata.CONTROL_AWB_MODE_OFF);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_MODE,
      CameraMetadata.COLOR_CORRECTION_MODE_CCT);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE, 5000);
  reqBuilder.set(CaptureRequest.COLOR_CORRECTION_COLOR_TINT, 30);
  CaptureRequest request = reqBuilder.build();
  ...
}

नीचे दिए गए उदाहरणों से पता चलता है कि अलग-अलग रंग के तापमान और रंग में बदलाव करने के बाद, फ़ोटो कैसी दिखेगी:

ओरिजनल इमेज, जिसमें कलर टेंपरेचर या टिनट में कोई बदलाव नहीं किया गया है.
3000 पर सेट किए गए कलर टेंपरेचर वाली इमेज.
कलर टेंपरेचर को 7000 पर सेट करके ली गई इमेज.


इमेज में टिनट लेवल को 50% कम किया गया है.
इमेज में टिनट लेवल को 50 तक बढ़ाया गया है.

कैमरे के नाइट मोड में सीन की पहचान करने की सुविधा

为了帮助应用了解何时切换到夜间模式相机会话以及何时从夜间模式相机会话切换出,Android 16 添加了 EXTENSION_NIGHT_MODE_INDICATOR。如果受支持,则可在 Camera2 内的 CaptureResult 中使用。

这是我们在Instagram 如何让用户拍出令人惊艳的低光照片博文中提到的即将推出的 API。该博文提供了有关如何实现夜间模式的实用指南,并附有一份案例研究,该案例研究将应用内夜间模式照片质量的提升与通过应用内相机分享的照片数量的增加联系起来。

मोशन फ़ोटो कैप्चर करने के लिए इंटेंट ऐक्शन

Android 16 में स्टैंडर्ड इंटेंट ऐक्शन — ACTION_MOTION_PHOTO_CAPTURE और ACTION_MOTION_PHOTO_CAPTURE_SECURE — जोड़े गए हैं. इनसे कैमरा ऐप्लिकेशन को मोशन फ़ोटो कैप्चर करने और उसे दिखाने का अनुरोध किया जाता है.

इमेज को कहां लिखा जाएगा, यह कंट्रोल करने के लिए आपको एक अतिरिक्त EXTRA_OUTPUT पास करना होगा या Intent.setClipData(ClipData) के ज़रिए Uri पास करना होगा. अगर आपने कोई ClipData सेट नहीं किया है, तो Context.startActivity(Intent) को कॉल करते समय वह आपके लिए वहां कॉपी हो जाएगा.

मोशन फ़ोटो का उदाहरण, जिसमें स्टिल इमेज के बाद मोशन प्लेबैक दिख रहा है.

अल्ट्रा एचडीआर की मदद से इमेज को बेहतर बनाना

इस इमेज में, स्टैंडर्ड डाइनैमिक रेंज (एसडीआर) और हाई डाइनैमिक रेंज (एचडीआर) वाली इमेज की क्वालिटी की तुलना की गई है.

Android 16 में, हमने अल्ट्रा एचडीआर इमेज की मदद से बेहतरीन क्वालिटी वाली इमेज उपलब्ध कराने की सुविधा को जारी रखा है. इससे, HEIC फ़ाइल फ़ॉर्मैट में UltraHDR इमेज के लिए सहायता मिलती है. इन इमेज को ImageFormat टाइप HEIC_ULTRAHDR मिलेगा. साथ ही, इनमें मौजूदा UltraHDR JPEG फ़ॉर्मैट जैसा एम्बेड किया गया गेनमैप होगा. हम UltraHDR के लिए भी AVIF फ़ॉर्मैट की सुविधा उपलब्ध कराने पर काम कर रहे हैं. इसलिए, हमारे साथ बने रहें.

इसके अलावा, Android 16 में ISO 21496-1 ड्राफ़्ट स्टैंडर्ड के आधार पर, अल्ट्रा एचडीआर में कुछ और पैरामीटर लागू किए गए हैं. इनमें, गेनमैप के हिसाब से कलरस्पेस को सेट करने और उसे पाने की सुविधा शामिल है. साथ ही, एसडीआर गेनमैप के साथ एचडीआर में एन्कोड की गई बेस इमेज के लिए भी यह सुविधा काम करती है.

ग्राफ़िक्स

Android 16 में, ग्राफ़िक्स से जुड़े नए सुधार शामिल हैं. जैसे, AGSL की मदद से कस्टम ग्राफ़िक इफ़ेक्ट.

एजीएसएल की मदद से, पसंद के मुताबिक ग्राफ़िक इफ़ेक्ट

Android 16 添加了 RuntimeColorFilterRuntimeXfermode,让您可以创作阈值、Sepia 和 Hue Saturation 等复杂效果,并将其应用于绘制调用。从 Android 13 开始,您可以使用 AGSL 创建扩展 Shader 的自定义 RuntimeShader。新 API 反映了这一点,添加了由 AGSL 驱动的 RuntimeColorFilter(用于扩展 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 6 的 802.11az 的受支持设备上为 Wi-Fi 位置信息添加了对强大的安全功能的支持,让应用能够将该协议的更高精确性、更高可伸缩性和动态调度与安全增强功能(包括基于 AES-256 的加密和防范中间人攻击)相结合。这样,在近距离使用情形(例如解锁笔记本电脑或车门)时,便可更安全地使用该功能。802.11az 与 Wi-Fi 6 标准集成,可利用其基础架构和功能实现更广泛的采用和更轻松的部署。

सामान्य रेंजिंग एपीआई

Android 16 में नया RangingManager शामिल है. इससे, लोकल डिवाइस और रिमोट डिवाइस के बीच की दूरी और कोण का पता लगाने के लिए, काम करने वाले हार्डवेयर पर तरीके मिलते हैं. RangingManager, रेंजिंग की कई टेक्नोलॉजी का इस्तेमाल करता है. जैसे, बीएलई चैनल साउंडिंग, बीएलई आरएसएसआई पर आधारित रेंजिंग, अल्ट्रा वाइडबैंड, और वाई-फ़ाई राउंड ट्रिप टाइम.

कंपैनियन डिवाइस मैनेजर के डिवाइस की मौजूदगी

In Android 16, new APIs are being introduced for binding your companion app service. Service will be bound when BLE is in range and Bluetooth is connected and service will be unbound when BLE is out of range or Bluetooth is disconnected. App will receives a new 'onDevicePresenceEvent()' callback based on various of DevicePresenceEvent. More details can be found in 'startObservingDevicePresence(ObservingDevicePresenceRequest)'.

मीडिया

Android 16 में कई सुविधाएं शामिल हैं, जो मीडिया का अनुभव बेहतर बनाती हैं.

फ़ोटो पिकर में किए गए सुधार

फ़ोटो पिकर की सुविधा, उपयोगकर्ताओं के लिए ऐप्लिकेशन में पहले से मौजूद है. इसकी मदद से, उपयोगकर्ता अपने डिवाइस की पूरी मीडिया लाइब्रेरी के बजाय, ऐप्लिकेशन को सिर्फ़ अपनी चुनी हुई फ़ोटो और वीडियो का ऐक्सेस दे सकते हैं. यह सुविधा सुरक्षित है. Google के सिस्टम अपडेट और Google Play services की मदद से, मॉड्यूलर सिस्टम कॉम्पोनेंट का इस्तेमाल करके, यह सुविधा Android 4.4 (एपीआई लेवल 19) तक के वर्शन पर काम करती है. इंटिग्रेशन के लिए, Android Jetpack लाइब्रेरी के साथ सिर्फ़ कुछ लाइनों का कोड ज़रूरी है.

Android 16 में, फ़ोटो पिकर में ये सुधार किए गए हैं:

  • एम्बेड किया गया फ़ोटो पिकर: नए एपीआई, जिनकी मदद से ऐप्लिकेशन, फ़ोटो पिकर को अपने व्यू की हैरारकी में एम्बेड कर सकते हैं. इससे, यह ऐप्लिकेशन के एक बेहतर हिस्से की तरह महसूस होता है. साथ ही, प्रोसेस को अलग रखने की सुविधा का फ़ायदा भी मिलता है. इस सुविधा की मदद से, उपयोगकर्ता ऐप्लिकेशन को ज़्यादा अनुमतियां दिए बिना ही मीडिया चुन सकते हैं. अगर आपको एम्बेड किए गए फ़ोटो पिकर को इंटिग्रेट करना है, तो आपको Android के आने वाले समय में लॉन्च होने वाली Jetpack लाइब्रेरी का इस्तेमाल करना होगा. इससे, सभी प्लैटफ़ॉर्म के वर्शन के साथ काम करने की सुविधा बढ़ेगी और इंटिग्रेशन आसान हो जाएगा.
  • फ़ोटो पिकर में क्लाउड सर्च: Android फ़ोटो पिकर के लिए, क्लाउड मीडिया प्रोवाइडर से खोजने की सुविधा देने वाले नए एपीआई. फ़ोटो चुनने वाले टूल में खोजने की सुविधा जल्द ही उपलब्ध होगी.

बेहतर प्रोफ़ेशनल वीडियो

Android 16 引入了对高级专业视频 (APV) 编解码器的支持,该编解码器专为专业级高品质视频录制和后期制作而设计。

APV 编解码器标准具有以下特点:

  • 感知上无损的视频画质(接近原始视频画质)
  • 复杂度低且吞吐量高的仅帧内编码(无像素域预测),以更好地支持编辑工作流
  • 支持高比特率范围(最高几十 Gbps),适用于 2K、4K 和 8K 分辨率内容,由轻量级熵编码方案实现
  • 帧平铺,用于沉浸式内容和启用并行编码和解码
  • 支持各种色度采样格式和位深
  • 支持多次解码和重新编码,且不会严重降低视觉质量
  • 支持多视图视频和辅助视频,例如深度、Alpha 和预览
  • 支持 HDR10/10+ 和用户定义的元数据

OpenAPV 项目提供了 APV 的参考实现。Android 16 将实现对 APV 422-10 配置文件的支持,该配置文件提供 YUV 422 色彩采样以及 10 位编码,并且目标比特率最高可达 2 Gbps。

निजता

Android 16 में कई सुविधाएं शामिल हैं. इनकी मदद से, ऐप्लिकेशन डेवलपर उपयोगकर्ता की निजता को सुरक्षित रख सकते हैं.

Health Connect से जुड़े अपडेट

Health Connect में ACTIVITY_INTENSITY जोड़ा गया है. यह डेटा टाइप, विश्व स्वास्थ्य संगठन के दिशा-निर्देशों के मुताबिक, सामान्य और ज़्यादा गतिविधि के आधार पर तय किया जाता है. हर रिकॉर्ड के लिए, शुरू होने का समय, खत्म होने का समय, और गतिविधि की तीव्रता सामान्य है या ज़्यादा मेहनत वाली है, यह जानकारी देना ज़रूरी है.

Health Connect में, मेडिकल रिकॉर्ड के साथ काम करने वाले अपडेट किए गए एपीआई भी शामिल हैं. इससे ऐप्लिकेशन, उपयोगकर्ता की सहमति के साथ, एफ़एचआईआर फ़ॉर्मैट में मौजूद मेडिकल रिकॉर्ड पढ़ और लिख सकते हैं.

Android पर Privacy Sandbox

Android 16 incorporates the latest version of the Privacy Sandbox on Android, part of our ongoing work to develop technologies where users know their privacy is protected. Our website has more about the Privacy Sandbox on Android developer beta program to help you get started. Check out the SDK Runtime which allows SDKs to run in a dedicated runtime environment separate from the app they are serving, providing stronger safeguards around user data collection and sharing.

सुरक्षा

Android 16 में ऐसी सुविधाएं शामिल हैं जिनसे आपको अपने ऐप्लिकेशन की सुरक्षा को बेहतर बनाने और अपने ऐप्लिकेशन के डेटा को सुरक्षित रखने में मदद मिलती है.

पासकोड शेयर करने वाला एपीआई

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 के फ़ॉर्मैट फ़ैक्टर का ज़्यादा से ज़्यादा फ़ायदा पाने में मदद करता है.

टीवी के लिए, पिक्चर और ऑडियो क्वालिटी का स्टैंडर्ड फ़्रेमवर्क

Android 16 中的新 MediaQuality 软件包公开了一组标准化 API,用于访问音频和图片配置文件以及与硬件相关的设置。这样,在线播放应用就可以查询配置文件并将其动态应用于媒体:

  • 使用更大动态范围进行母版制作的电影需要更高的色彩准确度,才能看清阴影中的细微细节并根据环境光线进行调整,因此,最好使用色彩准确度优先于亮度的配置文件。
  • 体育赛事直播通常采用较窄的动态范围进行母版制作,但通常是在白天观看,因此偏向亮度而非色彩准确度的配置文件可以获得更好的效果。
  • 完全交互式内容需要尽可能减少处理以缩短延迟时间,并且需要更高的帧速率,因此许多电视都附带游戏配置文件。

借助此 API,应用可以在个人资料之间切换,用户可以享受调整支持的电视,以便尽可能适合其内容。

इंटरनैशनलाइज़ेशन

Android 16 में ऐसी सुविधाएं और क्षमताएं जोड़ी गई हैं जिनसे डिवाइस को अलग-अलग भाषाओं में इस्तेमाल करने पर, उपयोगकर्ता अनुभव बेहतर होता है.

वर्टिकल टेक्स्ट

Android 16 में, टेक्स्ट को वर्टिकल तौर पर रेंडर करने और मेज़र करने के लिए, लो-लेवल की सुविधा जोड़ी गई है. इससे लाइब्रेरी डेवलपर को वर्टिकल तौर पर लिखने की बुनियादी सुविधा मिलती है. यह सुविधा, खास तौर पर जैपनीज़ जैसी भाषाओं के लिए काम की है, जिनमें आम तौर पर वर्टिकल लिखने के सिस्टम का इस्तेमाल किया जाता है. Paint क्लास में एक नया फ़्लैग, VERTICAL_TEXT_FLAG, जोड़ा गया है. Paint.setFlags का इस्तेमाल करके इस फ़्लैग को सेट करने पर, 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 इंच" का मतलब "12.7 मिमी" होगा.

ये सेटिंग ढूंढने के लिए, Settings ऐप्लिकेशन खोलें और सिस्टम > language & region पर जाएं.