Android 15 में, डेवलपर के लिए कई बेहतरीन सुविधाएं और एपीआई उपलब्ध हैं. यहां दिए गए सेक्शन में, इन सुविधाओं के बारे में खास जानकारी दी गई है. इससे आपको इनसे जुड़े एपीआई का इस्तेमाल शुरू करने में मदद मिलेगी.
जोड़े गए, बदले गए, और हटाए गए एपीआई की पूरी सूची देखने के लिए, एपीआई में हुए बदलाव की रिपोर्ट पढ़ें. जोड़े गए एपीआई के बारे में ज़्यादा जानने के लिए, Android API रेफ़रंस पर जाएं. Android 15 के लिए, एपीआई लेवल 35 में जोड़े गए एपीआई देखें. जिन प्लैटफ़ॉर्म में हुए बदलावों से आपके ऐप्लिकेशन पर असर पड़ सकता है उनके बारे में जानने के लिए, Android 15 में हुए बदलावों के बारे में जानकारी देने वाले पेज देखें. ये पेज, Android 15 को टारगेट करने वाले ऐप्लिकेशन और सभी ऐप्लिकेशन के लिए उपलब्ध हैं.
कैमरा और मीडिया
Android 15 में कई ऐसी सुविधाएं शामिल हैं जिनसे कैमरा और मीडिया का अनुभव बेहतर होता है. साथ ही, आपको ऐसे टूल और हार्डवेयर का ऐक्सेस मिलता है जिनसे क्रिएटर्स को Android पर अपनी कल्पना को साकार करने में मदद मिलती है.
Android मीडिया और कैमरे के लिए, नई सुविधाओं और डेवलपर के लिए उपलब्ध समाधानों के बारे में ज़्यादा जानने के लिए, Google I/O में हुई Android मीडिया और कैमरे के आधुनिक अनुभव तैयार करना टॉक देखें.
कम रोशनी वाला मोड
Android 15 引入了弱光增强功能,这是一种自动曝光模式,适用于 Camera 2 和夜间模式相机扩展。“弱光增强”功能可在光线昏暗的环境下调整预览画面的曝光度。这与夜间模式相机扩展程序创建静态图片的方式不同,因为夜间模式会将一系列照片组合起来,以创建一张经过增强的单张图片。虽然夜间模式非常适合拍摄静态图片,但无法创建连续的帧流,而“低光增强”功能可以。因此,弱光增强功能可启用相机功能,例如:
- 提供增强型图片预览,以便用户更好地取景拍摄低光照片
- 在光线不足的情况下扫描二维码
如果您启用“弱光增强”功能,该功能会在光线较弱时自动开启,在光线较强时关闭。
应用可以在光线昏暗的环境下录制预览画面,以保存经过亮度提升的视频。
如需了解详情,请参阅弱光增强。
ऐप्लिकेशन में कैमरे के कंट्रोल
Android 15 में एक एक्सटेंशन जोड़ा गया है. इससे, जिन डिवाइसों पर यह वर्शन काम करता है उन पर कैमरे के हार्डवेयर और उसके एल्गोरिदम को ज़्यादा बेहतर तरीके से कंट्रोल किया जा सकता है:
- फ़्लैश की रोशनी में बदलाव करने की बेहतर सुविधा. इससे इमेज कैप्चर करते समय,
SINGLEऔरTORCH, दोनों मोड में फ़्लैश की रोशनी को सटीक तरीके से कंट्रोल किया जा सकता है.
एचडीआर हेडरूम कंट्रोल
Android 15, डिवाइस की क्षमताओं और पैनल की बिट-डेंसिटी के हिसाब से एचडीआर हेडरूम चुनता है. जिन पेजों पर ज़्यादा एसडीआर कॉन्टेंट होता है, जैसे कि एक एचडीआर थंबनेल दिखाने वाला मैसेजिंग ऐप्लिकेशन, उन पर इस व्यवहार का असर एसडीआर कॉन्टेंट की चमक पर पड़ सकता है. Android 15 में, setDesiredHdrHeadroom की मदद से एचडीआर हेडरूम को कंट्रोल किया जा सकता है. इससे एसडीआर और एचडीआर कॉन्टेंट के बीच संतुलन बना रहता है.
वॉल्यूम कंट्रोल

Android 15 में, आवाज़ के लिए CTA-2075 स्टैंडर्ड का इस्तेमाल करने की सुविधा जोड़ी गई है. इससे, ऑडियो की आवाज़ में होने वाले उतार-चढ़ावों से बचा जा सकता है. साथ ही, यह भी पक्का किया जा सकता है कि उपयोगकर्ताओं को कॉन्टेंट के बीच स्विच करते समय, वॉल्यूम को बार-बार अडजस्ट न करना पड़े. यह सिस्टम, आउटपुट डिवाइसों (हेडफ़ोन और स्पीकर) की जाने-पहचानी विशेषताओं के साथ-साथ, AAC ऑडियो कॉन्टेंट में उपलब्ध आवाज़ के मेटाडेटा का फ़ायदा उठाता है. इससे, ऑडियो की आवाज़ और डाइनैमिक रेंज कम्प्रेशन के लेवल को बेहतर तरीके से अडजस्ट किया जा सकता है.
इस सुविधा को चालू करने के लिए, आपको यह पक्का करना होगा कि आवाज़ की आवाज़ से जुड़ा मेटाडेटा
आपकी AAC सामग्री पर ध्यान दें और अपने ऐप्लिकेशन में प्लैटफ़ॉर्म सुविधा सक्षम करें. इसके लिए, आपको
LoudnessCodecController ऑब्जेक्ट को इसके हिसाब से इंस्टैंशिएट करें
ऑडियो के साथ बनाएँ बनाने का तरीका
संबंधित खाते का सेशन आईडी AudioTrack; यह
अपने-आप ऑडियो अपडेट लागू करना शुरू कर देता है. मदद के लिए
बदलाव करने या फ़िल्टर करने के लिए OnLoudnessCodecUpdateListener
तेज़ आवाज़ के पैरामीटर
MediaCodec.
// Media contains metadata of type MPEG_4 OR MPEG_D
val mediaCodec = …
val audioTrack = AudioTrack.Builder()
.setSessionId(sessionId)
.build()
...
// Create new loudness controller that applies the parameters to the MediaCodec
try {
val lcController = LoudnessCodecController.create(mSessionId)
// Starts applying audio updates for each added MediaCodec
}
AndroidX media3 ExoPlayer भी अपडेट किया जाएगा, ताकि
ऐप्लिकेशन के आसान इंटिग्रेशन के लिए, LoudnessCodecController API.
वर्चुअल एमआईडीआई 2.0 डिवाइस
Android 13 添加了对使用 USB 连接 MIDI 2.0 设备的支持,这些设备使用通用 MIDI 数据包 (UMP) 进行通信。Android 15 将 UMP 支持扩展到了虚拟 MIDI 应用,使作曲应用能够像使用 USB MIDI 2.0 设备一样,将虚拟 MIDI 2.0 设备用作控制合成器应用的设备。
AV1 सॉफ़्टवेयर डिकोडिंग को ज़्यादा बेहतर तरीके से किया जा सकता है
VideoLAN का लोकप्रिय AV1 सॉफ़्टवेयर डीकोडर dav1d, उन Android डिवाइसों के लिए उपलब्ध है जिनमें हार्डवेयर में AV1 को डिकोड करने की सुविधा नहीं है. dav1d, लेगसी AV1 सॉफ़्टवेयर डीकोडर की तुलना में तीन गुना ज़्यादा बेहतर परफ़ॉर्म करता है. इससे ज़्यादा उपयोगकर्ताओं के लिए, एचडी AV1 प्लेबैक की सुविधा मिलती है. इनमें कुछ लो और मिड टीयर डिवाइस भी शामिल हैं.
आपके ऐप्लिकेशन को dav1d का इस्तेमाल करने के लिए, नाम "c2.android.av1-dav1d.decoder" डालकर उसे ऑप्ट-इन करना होगा. अगले अपडेट में, dav1d को डिफ़ॉल्ट AV1 सॉफ़्टवेयर डिकोडर बनाया जाएगा. यह सुविधा, Android 11 वाले उन डिवाइसों के लिए स्टैंडर्ड और बैकपोर्ट की गई है जिन्हें Google Play के सिस्टम अपडेट मिलते हैं.
डेवलपर की प्रॉडक्टिविटी और टूल
आपकी प्रॉडक्टिविटी को बेहतर बनाने के लिए, हम ज़्यादातर Android Studio, Jetpack Compose, और Android Jetpack लाइब्रेरी जैसे टूल पर काम करते हैं. हालांकि, हम हमेशा ऐसे तरीके ढूंढते रहते हैं जिनसे आपको अपने विज़न को आसानी से पूरा करने में मदद मिल सके.
OpenJDK 17 के अपडेट
Android 15 में, Android की मुख्य लाइब्रेरी को रीफ़्रेश करने का काम जारी है, ताकि इसे OpenJDK LTS के नए रिलीज़ की सुविधाओं के साथ अलाइन किया जा सके.
इसमें ये मुख्य सुविधाएं और सुधार शामिल हैं:
- NIO बफ़र से जुड़ी सुविधाओं को बेहतर बनाया गया है
- लाइव स्ट्रीम
mathऔरstrictmathके लिए अन्य तरीकेutilपैकेज के अपडेट, जिनमें क्रम से लगाए गएcollection,map, औरsetशामिल हैंDeflaterमेंByteBufferकी सहायता- सुरक्षा से जुड़े अपडेट, जैसे कि
X500PrivateCredentialऔर सुरक्षा कुंजी के अपडेट
ये एपीआई, Google Play के सिस्टम अपडेट की मदद से, Android 12 (एपीआई लेवल 31) और उसके बाद के वर्शन वाले एक अरब से ज़्यादा डिवाइसों पर अपडेट किए जाते हैं, ताकि आप प्रोग्रामिंग की नई सुविधाओं को टारगेट कर सकें.
PDF से जुड़े सुधार
Android 15 में, PdfRenderer एपीआई में काफ़ी सुधार किए गए हैं. ऐप्लिकेशन में बेहतर सुविधाएं शामिल की जा सकती हैं. जैसे, पासवर्ड से सुरक्षित फ़ाइलों को रेंडर करना, एनोटेशन, फ़ॉर्म में बदलाव करना, खोजना, और कॉपी करने के साथ चुनें. लीनियर फ़ॉर्मैट में PDF
लोकल PDF देखने की रफ़्तार और संसाधन के इस्तेमाल को कम करने के लिए, ऑप्टिमाइज़ेशन का इस्तेमाल किया जा सकता है.
Jetpack PDF लाइब्रेरी में इन एपीआई का इस्तेमाल किया जाता है, ताकि PDF को आसानी से जोड़ा जा सके
देखने की क्षमता बढ़ाने के लिए.
PdfRenderer को ऐसे मॉड्यूल में ले जाया गया है जिसे Google का इस्तेमाल करके अपडेट किया जा सकता है
Play के सिस्टम से जुड़े अपडेट, प्लैटफ़ॉर्म के रिलीज़ होने के बाद भी उपलब्ध नहीं होते. हम
ये बदलाव, Android 11 (एपीआई लेवल 30) पर वापस आ जाएंगे. इसके लिए, यह एपीआई लेवल 30 के साथ काम करने वाला
Android 15 से पहले का एपीआई सरफ़ेस का वर्शन.
PdfRendererPreV.
अपने-आप भाषा बदलने की सुविधा में सुधार
Android 14 在音频中添加了设备端多语言识别功能,并支持在语言之间自动切换,但这可能会导致丢失字词,尤其是当两次语音之间语言切换的间隔时间较短时。Android 15 添加了其他控件,以帮助应用根据其用例调整此切换。EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS 会将自动切换限制在音频会话开始时,而 EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES 会在发生指定次数的切换后停用语言切换。如果您预计会话期间只会使用一种语言,并且该语言应被自动检测到,这些选项会特别有用。
बेहतर OpenType Variable Font API
Android 15, OpenType वैरिएबल के फ़ॉन्ट की उपयोगिता को बेहतर बनाता है. आप बना सकते हैं
वेट ऐक्सिस के बारे में बताए बिना, वैरिएबल फ़ॉन्ट का FontFamily इंस्टेंस
buildVariableFamily API के साथ इस्तेमाल किया जा सकेगा. टेक्स्ट रेंडरर, दिखाए जा रहे टेक्स्ट से मैच करने के लिए, wght ऐक्सिस की वैल्यू को बदल देता है.
एपीआई का इस्तेमाल करने से, Typeface आसानी से बनाया जा सकता है:
Kotlin
val newTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build()
Java
Typeface newTypeface = Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf").build()) .buildVariableFamily()) .build();
पहले, इसी Typeface को बनाने के लिए, आपको ज़्यादा कोड की ज़रूरत होगी:
Kotlin
val oldTypeface = Typeface.CustomFallbackBuilder( FontFamily.Builder( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build()) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ).build() ).build()
Java
Typeface oldTypeface = new Typeface.CustomFallbackBuilder( new FontFamily.Builder( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 400") .setWeight(400) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 100") .setWeight(100) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 200") .setWeight(200) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 300") .setWeight(300) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 500") .setWeight(500) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 600") .setWeight(600) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 700") .setWeight(700) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 800") .setWeight(800) .build() ) .addFont( new Font.Builder(assets, "RobotoFlex.ttf") .setFontVariationSettings("'wght' 900") .setWeight(900) .build() ) .build() ).build();
यहां एक उदाहरण दिया गया है कि पुराने और नए, दोनों एपीआई का इस्तेमाल करके Typeface कैसे बनाई गई
रेंडर करता है:
इस उदाहरण में, पुराने एपीआई की मदद से बनाए गए Typeface में
के लिए सही फ़ॉन्ट वेट बनाने की सुविधा 350, 450, 550 और 650
Font इंस्टेंस, इसलिए रेंडरर सबसे नज़दीकी वज़न पर वापस चला जाता है. इसलिए, इस मामले में 350 के बजाय 300, 450 के बजाय 400 वगैरह रेंडर किए जाते हैं. इसके उलट, नए एपीआई की मदद से बनाया गया Typeface डाइनैमिक तौर पर बनाता है
दिए गए वज़न के लिए एक Font इंस्टेंस, इसलिए 350 के लिए सटीक वेट रेंडर किए जाते हैं,
450, 550, और 650 भी हैं.
लाइन ब्रेक को कंट्रोल करने की बेहतर सुविधाएं
Android 15 से, TextView और लाइन ब्रेकर, टेक्स्ट के दिए गए हिस्से को एक ही लाइन में बनाए रख सकते हैं, ताकि उसे पढ़ने में आसानी हो. लाइन ब्रेक को पसंद के मुताबिक बनाने की सुविधा का फ़ायदा पाने के लिए, स्ट्रिंग रिसॉर्स में <nobreak> टैग या createNoBreakSpan का इस्तेमाल करें. इसी तरह, <nohyphen> टैग या
createNoHyphenationSpan का इस्तेमाल करके, शब्दों को हाइफ़न से बचाया जा सकता है.
उदाहरण के लिए, यहां दी गई स्ट्रिंग रिसॉर्स में लाइन ब्रेक शामिल नहीं है. साथ ही, यह "Pixel 8 Pro" टेक्स्ट के साथ रेंडर होती है. यह टेक्स्ट, रेंडर होने के दौरान गलत जगह पर ब्रेक लेता है:
<resources>
<string name="pixel8pro">The power and brains behind Pixel 8 Pro.</string>
</resources>
इसके उलट, इस स्ट्रिंग संसाधन में <nobreak> टैग शामिल है, जो "Pixel 8 Pro" वाक्यांश को रैप करता है और लाइन ब्रेक को रोकता है:
<resources>
<string name="pixel8pro">The power and brains behind <nobreak>Pixel 8 Pro.</nobreak></string>
</resources>
इन स्ट्रिंग को रेंडर करने के तरीके में अंतर को यहां दी गई इमेज में दिखाया गया है:
<nobreak> टैग का इस्तेमाल करके रैप न किया गया हो.
<nobreak> टैग का इस्तेमाल करके रैप किया गया है.ऐप्लिकेशन को संग्रहित करना
Android and Google Play announced support for app archiving last year, allowing users to free up space by partially removing infrequently used apps from the device that were published using Android App Bundle on Google Play. Android 15 includes OS level support for app archiving and unarchiving, making it easier for all app stores to implement it.
Apps with the REQUEST_DELETE_PACKAGES permission can call the
PackageInstaller requestArchive method to request archiving an
installed app package, which removes the APK and any cached files, but persists
user data. Archived apps are returned as displayable apps through the
LauncherApps APIs; users will see a UI treatment to highlight that those
apps are archived. If a user taps on an archived app, the responsible installer
will get a request to unarchive it, and the restoration process can be
monitored by the ACTION_PACKAGE_ADDED broadcast.
डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करके, किसी डिवाइस पर 16 केबी मोड चालू करना
डिवाइस को 16 केबी मोड में बूट करने के लिए, डेवलपर विकल्प में जाकर 16 केबी पेज साइज़ के साथ बूट करें को टॉगल करें.
Android 15 के QPR वर्शन में, डेवलपर विकल्प का इस्तेमाल किया जा सकता है. यह विकल्प, कुछ डिवाइसों पर उपलब्ध होता है. इससे डिवाइस को 16 केबी मोड में बूट किया जा सकता है और डिवाइस पर टेस्टिंग की जा सकती है. डेवलपर के लिए सेटिंग और टूल का इस्तेमाल करने से पहले, सेटिंग > सिस्टम > सॉफ़्टवेयर अपडेट पर जाएं और उपलब्ध अपडेट लागू करें.
यह डेवलपर विकल्प, इन डिवाइसों पर उपलब्ध है:
Pixel 8 और 8 Pro (Android 15 QPR1 या उसके बाद के वर्शन के साथ)
Pixel 8a (Android 15 QPR1 या इसके बाद के वर्शन के साथ)
Pixel 9, 9 Pro, और 9 Pro XL (Android 15 QPR2 या इसके बाद के वर्शन के साथ)
Pixel 9a (Android 16 या इसके बाद के वर्शन के साथ)
ग्राफ़िक
Android 15 में, ग्राफ़िक को बेहतर बनाने से जुड़े नए अपडेट शामिल हैं. इनमें ANGLE और Canvas ग्राफ़िक सिस्टम में किए गए बदलाव शामिल हैं.
Android में जीपीयू ऐक्सेस करने की सुविधा को बेहतर बनाना
与早期相比,Android 硬件已经有了很大的进步。早期,核心操作系统在单个 CPU 上运行,并且使用基于固定功能流水线的 API 访问 GPU。从 Android 7.0(API 级别 24)开始,NDK 中就提供了 Vulkan® 图形 API,其较低级别的抽象更好地反映了现代 GPU 硬件,可更好地扩缩以支持多个 CPU 核心,并可降低 CPU 驱动程序开销,从而提升应用性能。所有现代游戏引擎都支持 Vulkan。
Vulkan 是 Android 与 GPU 的首选接口。因此,Android 15 包含 ANGLE 作为可选层,用于在 Vulkan 基础上运行 OpenGL® ES。改用 ANGLE 将标准化 Android OpenGL 实现,提高兼容性,在某些情况下还有助于提升性能。在 Android 15 中,您可以依次前往设置 -> 系统 -> 开发者选项 -> 实验性功能:启用 ANGLE,启用开发者选项,以便通过 ANGLE 测试 OpenGL ES 应用的稳定性和性能。
Android ANGLE on Vulkan 路线图
为了简化 GPU 堆栈,我们今后将在更多新设备上将 ANGLE 作为 GL 系统驱动程序提供,未来 OpenGL/ES 将只能通过 ANGLE 获得支持。尽管如此,我们计划继续在所有设备上支持 OpenGL ES。
建议的后续措施
使用开发者选项为 OpenGL ES 选择 ANGLE 驱动程序,然后测试您的应用。对于新项目,我们强烈建议您为 C/C++ 使用 Vulkan。
Canvas में हुए सुधार
Android 15 में, Android के कैनवस ग्राफ़िक सिस्टम को और बेहतर बनाया गया है. इसमें ये नई सुविधाएं भी जोड़ी गई हैं:
Matrix44, निर्देशांकों को बदलने के लिए 4x4 मैट्रिक उपलब्ध कराता है. इसका इस्तेमाल तब करना चाहिए, जब आपको कैनवस को 3D में बदलना हो.clipShader, मौजूदा क्लिप को तय किए गए शेडर के साथ इंटरसेक्शन करता है. वहीं,clipOutShader, क्लिप को मौजूदा क्लिप और शेडर के अंतर पर सेट करता है. दोनों ही शेडर को ऐल्फ़ा मास्क के तौर पर इस्तेमाल करते हैं. इससे जटिल आकार आसानी से बनाए जा सकते हैं.
परफ़ॉर्मेंस और बैटरी
Android, आपके ऐप्लिकेशन की परफ़ॉर्मेंस और क्वालिटी को बेहतर बनाने में आपकी मदद करता रहेगा. Android 15 में ऐसे एपीआई पेश किए गए हैं जो आपके ऐप्लिकेशन में टास्क को ज़्यादा असरदार तरीके से पूरा करने, ऐप्लिकेशन की परफ़ॉर्मेंस को ऑप्टिमाइज़ करने, और अपने ऐप्लिकेशन के बारे में अहम जानकारी इकट्ठा करने में मदद करते हैं.
बैटरी की खपत कम करने के सबसे सही तरीके, नेटवर्क और बैटरी के इस्तेमाल से जुड़ी गड़बड़ियों को ठीक करने, और Android 15 और Android के हाल ही के वर्शन में बैकग्राउंड में होने वाले काम के लिए बैटरी की खपत कम करने के बारे में ज़्यादा जानकारी पाने के लिए, Google I/O में हुई Android पर बैकग्राउंड में होने वाले काम के लिए बैटरी की खपत कम करना टॉक देखें.
ApplicationStartInfo API
In previous versions of Android, app startup has been a bit of a mystery. It was
challenging to determine within your app whether it started from a cold, warm,
or hot state. It was also difficult to know how long your app spent during the
various launch phases: forking the process, calling onCreate, drawing the
first frame, and more. When your Application class was instantiated, you had no
way of knowing whether the app started from a broadcast, a content provider, a
job, a backup, boot complete, an alarm, or an Activity.
The ApplicationStartInfo API on Android 15 provides
all of this and more. You can even choose to add your own timestamps into the
flow to help collect timing data in one place. In addition to collecting
metrics, you can use ApplicationStartInfo to help directly optimize app
startup; for example, you can eliminate the costly instantiation of UI-related
libraries within your Application class when your app is starting up due to a
broadcast.
ऐप्लिकेशन के साइज़ के बारे में ज़्यादा जानकारी
Android 8.0 (एपीआई लेवल 26) से, Android में StorageStats.getAppBytes एपीआई शामिल है. यह एपीआई, किसी ऐप्लिकेशन के इंस्टॉल किए गए साइज़ की जानकारी, बाइट के तौर पर देता है. यह साइज़, APK के साइज़, APK से निकाली गई फ़ाइलों के साइज़, और डिवाइस पर जनरेट की गई फ़ाइलों के साइज़ का कुल योग होता है. जैसे, पहले से (एओटी) कंपाइल किया गया कोड. इस नंबर से यह पता नहीं चलता कि आपका ऐप्लिकेशन स्टोरेज का इस्तेमाल कैसे कर रहा है.
Android 15 में StorageStats.getAppBytesByDataType([type]) एपीआई जोड़ा गया है. इससे आपको यह जानकारी मिलती है कि आपका ऐप्लिकेशन, स्टोरेज का कितना हिस्सा इस्तेमाल कर रहा है. इसमें APK फ़ाइल के अलग-अलग हिस्से, AOT और तेज़ी से काम करने से जुड़ा कोड, dex मेटाडेटा, लाइब्रेरी, और गाइडेड प्रोफ़ाइलें शामिल हैं.
ऐप्लिकेशन के ज़रिए मैनेज की जाने वाली प्रोफ़ाइलिंग
Android 15 में ProfilingManager क्लास शामिल है. इसकी मदद से, अपने ऐप्लिकेशन में प्रोफ़ाइलिंग की जानकारी इकट्ठा की जा सकती है. जैसे, हेप डंप, हेप प्रोफ़ाइल, स्टैक सैंपलिंग वगैरह. यह आपके ऐप्लिकेशन को, दिए गए टैग के साथ कॉलबैक उपलब्ध कराता है. इससे, आउटपुट फ़ाइल की पहचान की जाती है. यह फ़ाइल, आपके ऐप्लिकेशन की फ़ाइल डायरेक्ट्री में डिलीवर की जाती है. एपीआई, परफ़ॉर्मेंस पर पड़ने वाले असर को कम करने के लिए, अनुरोध की दर को सीमित करता है.
अपने ऐप्लिकेशन में प्रोफ़ाइलिंग के अनुरोधों को आसानी से बनाने के लिए, हमारा सुझाव है कि आप Core 1.15.0-rc01 या इसके बाद के वर्शन में उपलब्ध, उससे जुड़े Profiling AndroidX API का इस्तेमाल करें.
SQLite डेटाबेस में सुधार
Android 15 में SQLite एपीआई उपलब्ध कराए गए हैं, जो इसमें मौजूद SQLite इंजन, जो परफ़ॉर्मेंस की उन समस्याओं को टारगेट करता है जो मेनिफ़ेस्ट करते हैं. ये एपीआई SQLite के अपडेट को वर्शन में शामिल करते हैं 3.44.3.
डेवलपर को अपने SQLite डेटाबेस का ज़्यादा से ज़्यादा फ़ायदा पाने के लिए, SQLite की परफ़ॉर्मेंस के लिए सबसे सही तरीकों के बारे में जानना चाहिए. ऐसा खास तौर पर, बड़े डेटाबेस के साथ काम करते समय या इंतज़ार का समय कम करने वाली क्वेरी चलाते समय ज़रूरी है.
- रीड-ओनली डेफ़र्ड ट्रांज़ैक्शन: रीड-ओनली ट्रांज़ैक्शन जारी करते समय (लिखने के स्टेटमेंट शामिल न करें), रीड-ओनली
DEFERREDट्रांज़ैक्शन जारी करने के लिए,beginTransactionReadOnly()औरbeginTransactionWithListenerReadOnly(SQLiteTransactionListener)का इस्तेमाल करें. ऐसे लेन-देन चलाए जा सकते हैं और डेटाबेस के WAL मोड में होने पर, ये दोनों काम कर सकते हैंIMMEDIATEयाEXCLUSIVEलेन-देन के साथ चलाए जाते हैं. - लाइन की संख्या और आईडी: एपीआई जोड़े गए हैं, ताकि बदली गई लाइनों की संख्या या डाली गई आखिरी लाइन का आईडी, अतिरिक्त क्वेरी जारी किए बिना वापस पाया जा सके.
getLastChangedRowCount(), मौजूदा ट्रांज़ैक्शन में सबसे हाल ही के एसक्यूएल स्टेटमेंट की मदद से डाली गई, अपडेट की गई या मिटाई गई पंक्तियों की संख्या दिखाता है. वहीं,getTotalChangedRowCount(), मौजूदा कनेक्शन की गिनती दिखाता है.getLastInsertRowId(), आखिरी पंक्ति काrowidदिखाता है को चालू करने के लिए किया जा सकता है. - रॉ स्टेटमेंट: रॉ SQlite स्टेटमेंट जारी करें. इससे, सुविधाजनक रैपर और प्रोसेसिंग के लिए होने वाले अतिरिक्त खर्च से बचा जा सकता है.
Android Dynamic Performance Framework के अपडेट
Android 15 继续投资于 Android 动态性能框架 (ADPF),这是一组 API,可让游戏和性能密集型应用更为直接地与 Android 设备的电源和散热系统进行互动。在受支持的设备上,Android 15 添加了 ADPF 功能:
- 针对提示会话的节能模式,用于指明其关联的线程应优先节能而非性能,非常适合长时间运行的后台工作负载。
- 系统可以在提示会话中报告 GPU 和 CPU 工作时长,以便同时调整 CPU 和 GPU 频率,以最佳方式满足工作负载需求。
- 热余量阈值,用于根据余量预测来解读可能的热节流状态。
如需详细了解如何在应用和游戏中使用 ADPF,请参阅相关文档。
निजता
Android 15 में कई ऐसी सुविधाएं शामिल हैं जिनसे ऐप्लिकेशन डेवलपर को उपयोगकर्ता की निजता बनाए रखने में मदद मिलती है.
स्क्रीन रिकॉर्डिंग का पता लगाने की सुविधा
Android 15 adds support for apps to detect that they are being recorded. A callback is invoked whenever the app transitions between being visible or invisible within a screen recording. An app is considered visible if activities owned by the registering process's UID are being recorded. This way, if your app is performing a sensitive operation, you can inform the user that they're being recorded.
val mCallback = Consumer<Int> { state ->
if (state == SCREEN_RECORDING_STATE_VISIBLE) {
// We're being recorded
} else {
// We're not being recorded
}
}
override fun onStart() {
super.onStart()
val initialState =
windowManager.addScreenRecordingCallback(mainExecutor, mCallback)
mCallback.accept(initialState)
}
override fun onStop() {
super.onStop()
windowManager.removeScreenRecordingCallback(mCallback)
}
IntentFilter की बेहतर सुविधाएँ
Android 15 通过 UriRelativeFilterGroup 支持更精确的 Intent 解析,UriRelativeFilterGroup 包含一组 UriRelativeFilter 对象,这些对象构成一组必须满足的 Intent 匹配规则,包括网址查询参数、网址片段以及屏蔽或排除规则。
您可以在 AndroidManifest XML 文件中使用 <uri-relative-filter-group> 标记来定义这些规则,该标记可以包含 android:allow 标记。这些代码可以包含使用现有数据代码属性以及 android:query 和 android:fragment 属性的 <data> 代码。
下面是一个 AndroidManifest 语法示例:
<intent-filter android:autoVerify="true">
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:host="astore.com" />
<uri-relative-filter-group>
<data android:pathPrefix="/auth" />
<data android:query="region=na" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:query="mobileoptout=true" />
</uri-relative-filter-group>
<uri-relative-filter-group android:allow="false">
<data android:pathPrefix="/auth" />
<data android:fragmentPrefix="faq" />
</uri-relative-filter-group>
</intent-filter>
प्राइवेट स्पेस
Private space lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. The private space uses a separate user profile. The user can choose to use the device lock or a separate lock factor for the private space.
Apps in the private space show up in a separate container in the launcher, and are hidden from the recents view, notifications, settings, and from other apps when the private space is locked. User-generated and downloaded content (such as media or files) and accounts are separated between the private space and the main space. The system sharesheet and the photo picker can be used to give apps access to content across spaces when the private space is unlocked.
Users can't move existing apps and their data into the private space. Instead, users select an install option in the private space to install an app using whichever app store they prefer. Apps in the private space are installed as separate copies from any apps in the main space (new copies of the same app).
When a user locks the private space, the profile is stopped. While the profile is stopped, apps in the private space are no longer active and can't perform foreground or background activities, including showing notifications.
We recommend that you test your app with private space to make sure your app works as expected, especially if your app falls into one of the following categories:
- Apps with logic for work profiles that assumes that any installed copies of their app that aren't in the main profile are in the work profile.
- Medical apps
- Launcher apps
- App store apps
'चुनिंदा फ़ोटो का ऐक्सेस' के लिए, उपयोगकर्ता के सबसे हाल ही के चुने गए विकल्प के बारे में क्वेरी करता है
मीडिया फ़ाइलों के लिए कुछ हिस्से का ऐक्सेस देने पर, ऐप्लिकेशन अब सिर्फ़ हाल ही में चुनी गई फ़ोटो और वीडियो को हाइलाइट कर सकते हैं. इस सुविधा को बेहतर बनाने के लिए,
उन ऐप्लिकेशन का उपयोगकर्ता अनुभव जो अक्सर फ़ोटो ऐक्सेस करने का अनुरोध करते हैं और
वीडियो. अपने ऐप्लिकेशन में इस सुविधा का इस्तेमाल करने के लिए, इसे चालू करें
MediaStore की क्वेरी करते समय QUERY_ARG_LATEST_SELECTION_ONLY तर्क
ContentResolver तक.
Kotlin
val externalContentUri = MediaStore.Files.getContentUri("external") val mediaColumns = arrayOf( FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE, ) val queryArgs = bundleOf( // Return only items from the last selection (selected photos access) QUERY_ARG_LATEST_SELECTION_ONLY to true, // Sort returned items chronologically based on when they were added to the device's storage QUERY_ARG_SQL_SORT_ORDER to "${FileColumns.DATE_ADDED} DESC", QUERY_ARG_SQL_SELECTION to "${FileColumns.MEDIA_TYPE} = ? OR ${FileColumns.MEDIA_TYPE} = ?", QUERY_ARG_SQL_SELECTION_ARGS to arrayOf( FileColumns.MEDIA_TYPE_IMAGE.toString(), FileColumns.MEDIA_TYPE_VIDEO.toString() ) )
Java
Uri externalContentUri = MediaStore.Files.getContentUri("external"); String[] mediaColumns = { FileColumns._ID, FileColumns.DISPLAY_NAME, FileColumns.MIME_TYPE }; Bundle queryArgs = new Bundle(); queryArgs.putBoolean(MediaStore.QUERY_ARG_LATEST_SELECTION_ONLY, true); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SORT_ORDER, FileColumns.DATE_ADDED + " DESC"); queryArgs.putString(MediaStore.QUERY_ARG_SQL_SELECTION, FileColumns.MEDIA_TYPE + " = ? OR " + FileColumns.MEDIA_TYPE + " = ?"); queryArgs.putStringArray(MediaStore.QUERY_ARG_SQL_SELECTION_ARGS, new String[] { String.valueOf(FileColumns.MEDIA_TYPE_IMAGE), String.valueOf(FileColumns.MEDIA_TYPE_VIDEO) });
Android पर Privacy Sandbox
Android 15 में, Android Ad Services के नए एक्सटेंशन शामिल हैं. इनमें Android पर Privacy Sandbox का नया वर्शन भी शामिल है. यह बदलाव, उपयोगकर्ता की निजता को बेहतर बनाने और मोबाइल ऐप्लिकेशन के लिए दिलचस्पी के हिसाब से असरदार विज्ञापन दिखाने वाली टेक्नोलॉजी बनाने के हमारे काम का हिस्सा है. हमारे Privacy Sandbox पेज पर, Android के डेवलपर प्रीव्यू और बीटा प्रोग्राम में Privacy Sandbox के बारे में ज़्यादा जानकारी दी गई है. इससे आपको इस प्रोग्राम को शुरू करने में मदद मिलेगी.
Health Connect
Android 15 integrates the latest extensions around Health Connect by Android, a secure and centralized platform to manage and share app-collected health and fitness data. This update adds support for additional data types across fitness, nutrition, skin temperature, training plans, and more.
Skin temperature tracking allows users to store and share more accurate temperature data from a wearable or other tracking device.
Training plans are structured workout plans to help a user achieve their fitness goals. Training plans support includes a variety of completion and performance goals:
- Completion goals around calories burned, distance, duration, repetition, and steps.
- Performance goals around as many repetitions as possible (AMRAP), cadence, heart rate, power, perceived rate of exertion, and speed.
Learn more about the latest updates to Health Connect in Android in the Building adaptable experiences with Android Health talk from Google I/O.
ऐप्लिकेशन की स्क्रीन शेयर करने की सुविधा
Android 15 में ऐप्लिकेशन की स्क्रीन शेयर करने की सुविधा उपलब्ध है. इसकी मदद से, उपयोगकर्ता अपने डिवाइस की पूरी स्क्रीन के बजाय, सिर्फ़ ऐप्लिकेशन की विंडो को शेयर या रिकॉर्ड कर सकते हैं. यह सुविधा, पहली बार Android 14 QPR2 में चालू की गई थी. इसमें MediaProjection कॉलबैक शामिल हैं. इनकी मदद से, आपके ऐप्लिकेशन को स्क्रीन शेयर करने के अनुभव को पसंद के मुताबिक बनाया जा सकता है. ध्यान दें कि Android 14 (एपीआई लेवल 34) या उसके बाद के वर्शन को टारगेट करने वाले ऐप्लिकेशन के लिए, हर MediaProjection कैप्चर सेशन के लिए उपयोगकर्ता की सहमति लेना ज़रूरी है.
उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)
Android 15, ऐप्लिकेशन डेवलपर और उपयोगकर्ताओं को अपने डिवाइस को अपनी ज़रूरतों के हिसाब से कॉन्फ़िगर करने के लिए, ज़्यादा कंट्रोल और सुविधा देता है.
Android 15 में किए गए नए सुधारों का इस्तेमाल करके, अपने ऐप्लिकेशन पर लोगों को बेहतर अनुभव देने के बारे में ज़्यादा जानने के लिए, Google I/O में हुई अपने Android ऐप्लिकेशन पर लोगों को बेहतर अनुभव देना बातचीत देखें.
जनरेटेड प्रीव्यू एपीआई की मदद से, विजेट की बेहतर झलकें
Before Android 15, the only way to provide widget picker previews was to specify a static image or layout resource. These previews often differ significantly from the look of the actual widget when it is placed on the home screen. Also, static resources can't be created with Jetpack Glance, so a Glance developer had to screenshot their widget or create an XML layout to have a widget preview.
Android 15 adds support for generated previews. This means that app widget
providers can generate RemoteViews to use as the picker preview, instead
of a static resource.
Push API
Apps can provide generated previews through a push API. Apps can provide
previews at any point in their lifecycle, and don't receive an explicit request
from the host to provide previews. Previews are persisted in AppWidgetService,
and hosts can request them on-demand. The following example loads an XML widget
layout resource and sets it as the preview:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
The expected flow is:
- At any time, the widget provider calls
setWidgetPreview. The provided previews are persisted inAppWidgetServicewith other provider info. setWidgetPreviewnotifies hosts of an updated preview through theAppWidgetHost.onProvidersChangedcallback. In response, the widget host reloads all of its provider information.- When displaying a widget preview, the host checks
AppWidgetProviderInfo.generatedPreviewCategories, and if the chosen category is available, callsAppWidgetManager.getWidgetPreviewto return the saved preview for this provider.
When to call setWidgetPreview
Because there is no callback to provide previews, apps can choose to send previews at any point when they are running. How often to update the preview depends on the widget's use case.
The following list describes the two main categories of preview use cases:
- Providers that show real data in their widget previews, such as personalized or recent information. These providers can set the preview once the user has signed in or has done initial configuration in their app. After this, they can set up a periodic task to update the previews at their chosen cadence. Examples of this type of widget could be a photo, calendar, weather or news widget.
- Providers that show static information in previews or quick-action widgets that don't display any data. These providers can set previews once, when the app first launches. Examples of this type of widget include a drive quick actions widget or chrome shortcuts widget.
Some providers might show static previews on the hub mode picker, but real information on the homescreen picker. These providers should follow the guidance for both of these use cases to set previews.
पिक्चर में पिक्चर
Android 15 引入了画中画 (PiP) 方面的变更,确保实现 更流畅的过渡效果。对于在主界面上叠加界面元素的应用,这将非常有用,因为这些界面元素会进入 PiP。
开发者使用 onPictureInPictureModeChanged 回调来定义逻辑
用于切换叠加界面元素的可见性。此回调是
在画中画进入或退出动画播放完毕时触发。距离开始还有
Android 15 中,PictureInPictureUiState 类包含另一种状态。
在此界面状态下,以 Android 15(API 级别 35)为目标平台的应用将遵守
使用以下参数调用 Activity#onPictureInPictureUiStateChanged 回调:
isTransitioningToPip()。还有
在画中画模式下,有很多与应用无关的界面元素,
包含建议、
评分和标题当应用进入画中画模式时,请使用
onPictureInPictureUiStateChanged 回调以隐藏这些界面元素。当
应用从画中画窗口进入全屏模式,使用
onPictureInPictureModeChanged 回调以取消隐藏这些元素,如
请参阅以下示例:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
不相关界面元素的快速可见性切换(适用于画中画窗口)有助于 确保画中画播放动画更流畅、无闪烁。
'परेशान न करें' सुविधा के बेहतर नियम
AutomaticZenRule की मदद से ऐप्लिकेशन, 'ध्यान दें' सुविधा को अपनी पसंद के मुताबिक बना सकते हैं
मैनेजमेंट (परेशान न करें) के नियम और तय करें कि इन्हें कब चालू या बंद करना है
उन्हें. Android 15, इन नियमों को बेहतर तरीके से दिखाता है. ऐसा करने का मकसद,
उपयोगकर्ता अनुभव मिलता है. इसमें ये बदलाव शामिल हैं:
AutomaticZenRuleमें टाइप जोड़े जा रहे हैं. इससे सिस्टम, खास वैल्यू लागू कर सकता है कुछ नियम-कानूनों के बारे में बताता है.AutomaticZenRuleमें आइकॉन जोड़ा जा रहा है. इससे मोड बेहतर तरीके से काम करेगा पहचानने लायक.AutomaticZenRuleमें ऐसीtriggerDescriptionस्ट्रिंग जोड़ी जा रही है जो यह बताए ऐसी शर्तें जिनके आधार पर, उपयोगकर्ता के लिए नियम चालू होना चाहिए.- जोड़े गए
ZenDeviceEffectsसेAutomaticZenRuleतक, जिससे नियम ग्रेस्केल जैसी चीज़ों को ट्रिगर कर सकेंगे वॉलपेपर की रोशनी कम करने के लिए भी किया जा सकता है.
सूचना चैनलों के लिए VibrationEffect सेट करना
Android 15 पर, आने वाली सूचनाओं के लिए शानदार वाइब्रेशन सेटिंग चालू की जा सकती है
NotificationChannel.setVibrationEffect का इस्तेमाल कर रहे हैं, इसलिए
आपके उपयोगकर्ता इसके बिना अलग-अलग तरह की सूचनाओं के बीच अंतर कर सकते हैं
उन्हें अपने डिवाइस में देखना पड़ता है.
मीडिया प्रोजेक्शन की स्थिति दिखाने वाली स्टेटस बार चिप और अपने-आप बंद होने की सुविधा
मीडिया प्रोजेक्शन की सुविधा से, उपयोगकर्ता की निजी जानकारी सार्वजनिक हो सकती है. एक नया और प्रमुख स्टेटस बार चिप, उपयोगकर्ताओं को स्क्रीन पर चल रहे प्रोजेक्शन के बारे में बताता है. स्क्रीन को कास्ट करने, शेयर करने या रिकॉर्ड करने की सुविधा बंद करने के लिए, उपयोगकर्ता चिप पर टैप कर सकते हैं. साथ ही, बेहतर उपयोगकर्ता अनुभव के लिए, डिवाइस की स्क्रीन लॉक होने पर, स्क्रीन पर चल रहा प्रोजेक्शन अपने-आप बंद हो जाता है.
बड़ी स्क्रीन और फ़ॉर्म फ़ैक्टर
Android 15, आपके ऐप्लिकेशन को Android के फ़ॉर्म फ़ैक्टर का ज़्यादा से ज़्यादा फ़ायदा पाने में मदद करता है. जैसे, बड़ी स्क्रीन, फ़्लिप किए जा सकने वाले डिवाइस, और फ़ोल्ड किए जा सकने वाले डिवाइस.
बड़ी स्क्रीन पर मल्टीटास्किंग की बेहतर सुविधा
Android 15 gives users better ways to multitask on large screen devices. For example, users can save their favorite split-screen app combinations for quick access and pin the taskbar on screen to quickly switch between apps. This means that making sure your app is adaptive is more important than ever.
Google I/O has sessions on Building adaptive Android apps and Building UI with the Material 3 adaptive library that can help, and our documentation has more to help you Design for large screens.
कवर स्क्रीन की सुविधा
您的应用可以声明一个属性,Android 15 会使用该属性来允许您的 Application 或 Activity 显示在受支持的可翻转设备的小封面屏幕上。这些屏幕太小,无法被视为适合运行 Android 应用的兼容目标平台,但您的应用可以选择支持它们,从而让您的应用在更多平台上可用。
कनेक्टिविटी
Android 15, प्लैटफ़ॉर्म को अपडेट करता है, ताकि आपके ऐप्लिकेशन को कम्यूनिकेशन और वायरलेस टेक्नोलॉजी के क्षेत्र में हुई नई तरक्की का ऐक्सेस मिल सके.
सैटलाइट की मदद से मैसेज भेजने की सुविधा
Android 15 继续扩大对卫星连接的平台支持,并包含一些界面元素,以确保在整个卫星连接环境中提供一致的用户体验。
应用可以使用 ServiceState.isUsingNonTerrestrialNetwork() 执行以下操作:
检测设备是否连接到卫星,让他们更清楚地了解
可能会导致完全网络服务不可用的原因此外,Android 15 支持短信和彩信应用以及预加载的 RCS 应用,以便使用卫星连接发送和接收消息。
एनएफ़सी की सुविधा का बेहतर अनुभव
Android 15 正在努力打造更顺畅、更可靠的感应式付款体验,同时继续支持 Android 强大的 NFC 应用生态系统。在受支持的设备上,应用可以请求 NfcAdapter 进入观察模式,在该模式下,设备会监听但不会响应 NFC 读卡器,并将应用的 NFC 服务 PollingFrame
对象发送以进行处理。PollingFrame 对象可用于在与 NFC 读卡器进行首次通信之前进行身份验证,在许多情况下,这支持一触式交易。
此外,应用可以在受支持的设备上注册过滤器,以便在有轮询循环活动时收到通知,从而能够与多个感知 NFC 的应用顺畅运行。
वॉलेट की भूमिका
Android 15 引入了钱包角色,可与用户的首选钱包应用更紧密地集成。此角色会取代 NFC 默认的感应式付款设置。用户可以前往设置 > 应用 > 默认应用,管理钱包角色持有者。
在为在付款类别中注册的 AID 路由 NFC 感应式付款时,系统会使用钱包角色。点按操作始终会转到 Google 钱包角色持有者,除非有已注册相同 AID 的其他应用在前台运行。
此角色还用于确定“Google 钱包”快速访问功能块在启用后应显示在何处。将角色设为“无”时,“快速访问”功能块不可用,并且支付类别 NFC 点按仅传送到前台应用。
सुरक्षा
Android 15 की मदद से, अपने ऐप्लिकेशन की सुरक्षा को बेहतर बनाया जा सकता है. साथ ही, ऐप्लिकेशन के डेटा को सुरक्षित रखा जा सकता है. इसके अलावा, उपयोगकर्ताओं को उनके डेटा के बारे में ज़्यादा जानकारी दी जा सकती है और उन्हें डेटा पर ज़्यादा कंट्रोल दिया जा सकता है. उपयोगकर्ताओं की सुरक्षा को बेहतर बनाने और आपके ऐप्लिकेशन को नए खतरों से बचाने के लिए, हम क्या कर रहे हैं, इस बारे में ज़्यादा जानने के लिए, Google I/O में Android पर उपयोगकर्ताओं की सुरक्षा करना टॉक देखें.
ऑटोमैटिक तरीके से जानकारी भरने की सुविधा के साथ Credential Manager को इंटिग्रेट करना
Starting with Android 15, developers can link specific views like username or password fields with Credential Manager requests, making it easier to provide a tailored user experience during the sign-in process. When the user focuses on one of these views, a corresponding request is sent to Credential Manager. The resulting credentials are aggregated across providers and displayed in autofill fallback UIs, such as inline suggestions or drop-down suggestions. The Jetpack androidx.credentials library is the preferred endpoint for developers to use and will soon be available to further enhance this feature in Android 15 and higher.
बायोमेट्रिक प्रॉम्प्ट के साथ, एक टैप में साइन-अप और साइन-इन करने की सुविधा को इंटिग्रेट करना
क्रेडेंशियल मैनेजर बायोमेट्रिक प्रॉम्प्ट को क्रेडेंशियल बनाने की सुविधा में इंटिग्रेट करता है और साइन-इन करने की प्रोसेस को पूरा करता है. इससे, सेवा देने वाली कंपनियों को अपने बायोमेट्रिक प्रॉम्प्ट. इस वजह से, क्रेडेंशियल देने वालों को सिर्फ़ बनाने और पाने के नतीजे, बायोमेट्रिक फ़्लो के नतीजे के साथ बेहतर बनाए जाते हैं. यह आसान प्रोसेस, ज़्यादा बेहतर और आसान क्रेडेंशियल बनाती है बनाने और वापस पाने की प्रोसेस.
एंड-टू-एंड एन्क्रिप्शन के लिए कुंजी मैनेजमेंट
We are introducing the E2eeContactKeysManager in Android 15, which
facilitates end-to-end encryption (E2EE) in your Android apps by providing an
OS-level API for the storage of cryptographic public keys.
The E2eeContactKeysManager is designed to integrate with the platform
contacts app to give users a centralized way to manage and verify their
contacts' public keys.
कॉन्टेंट यूआरआई पर अनुमतियों की जांच
Android 15 में ऐसे एपीआई का एक सेट शामिल किया गया है जो कॉन्टेंट के यूआरआई पर अनुमति की जांच करते हैं:
Context.checkContentUriPermissionFull: यह कॉन्टेंट यूआरआई पर अनुमति की पूरी जांच करता है.Activityमेनिफ़ेस्ट एट्रिब्यूटrequireContentUriPermissionFromCaller: यह गतिविधि शुरू होने पर, दिए गए कॉन्टेंट यूआरआई पर तय की गई अनुमतियां लागू करता है.Activityकॉलर के लिएComponentCallerक्लास: यह उस ऐप्लिकेशन को दिखाता है जिसने गतिविधि शुरू की.
सुलभता
Android 15 में, उपयोगकर्ताओं के लिए ऐक्सेसिबिलिटी को बेहतर बनाने वाली सुविधाएं जोड़ी गई हैं.
बेहतर ब्रेल
हमने Android 15 में, TalkBack को यूएसबी और सुरक्षित ब्लूटूथ, दोनों के ज़रिए HID स्टैंडर्ड का इस्तेमाल करने वाले ब्रेल डिसप्ले के साथ काम करने की सुविधा दी है.
यह स्टैंडर्ड, माउस और कीबोर्ड के इस्तेमाल किए जाने वाले स्टैंडर्ड से काफ़ी मिलता-जुलता है. इससे Android को समय के साथ, ब्रेल डिसप्ले की ज़्यादा से ज़्यादा वैरायटी के साथ काम करने में मदद मिलेगी.
इंटरनैशनलाइजेशन
Android 15 में ऐसी सुविधाएं और क्षमताएं जोड़ी गई हैं जो अलग-अलग भाषाओं में डिवाइस इस्तेमाल करने पर, उपयोगकर्ता अनुभव को बेहतर बनाती हैं.
सीजेके वैरिएबल फ़ॉन्ट
Android 15 से, चाइनीज़, जैपनीज़, और कोरियन (CJK) भाषाओं के लिए फ़ॉन्ट फ़ाइल, NotoSansCJK अब वैरिएबल फ़ॉन्ट है. वैरिएबल फ़ॉन्ट की मदद से, CJK भाषाओं में क्रिएटिव टाइपोग्राफ़ी की संभावनाएं बढ़ जाती हैं. डिज़ाइनर, अलग-अलग तरह के स्टाइल आज़मा सकते हैं और ऐसे लेआउट बना सकते हैं जो पहले मुश्किल या असंभव थे.
अक्षरों के बीच में स्पेस को सही तरीके से अलाइन करना
Android 15 से, JUSTIFICATION_MODE_INTER_CHARACTER का इस्तेमाल करके, अक्षरों के बीच के स्पेस का इस्तेमाल करके टेक्स्ट को अलाइन किया जा सकता है. एक ही शब्द में दो बार सही ठहराने की वजह यह थी
पहली बार Android 8.0 (एपीआई लेवल 26) और इंटर-कैरेक्टर में पेश किया गया था
वजह बताने की सुविधा, उन भाषाओं के लिए समान सुविधाएं देती है जो
चाइनीज़, जैपनीज़ वगैरह जैसे सेगमेंटेशन के लिए खाली सफ़ेद जगह.
JUSTIFICATION_MODE_NONE का इस्तेमाल करने वाले जैपनीज़ टेक्स्ट के लिए लेआउट.
JUSTIFICATION_MODE_NONE का इस्तेमाल करके अंग्रेज़ी टेक्स्ट के लिए लेआउट.
JUSTIFICATION_MODE_INTER_WORD का इस्तेमाल करके, जैपनीज़ टेक्स्ट के लिए लेआउट.
JUSTIFICATION_MODE_INTER_WORD का इस्तेमाल करके अंग्रेज़ी टेक्स्ट के लिए लेआउट.
JUSTIFICATION_MODE_INTER_CHARACTER का इस्तेमाल करके, जैपनीज़ टेक्स्ट के लिए लेआउट.
JUSTIFICATION_MODE_INTER_CHARACTER का इस्तेमाल करके अंग्रेज़ी टेक्स्ट का लेआउट.लाइन अपने-आप टूटने की सुविधा को कॉन्फ़िगर करना
Android ने जैपनीज़ और कोरियन भाषा के लिए, फ़्रेज़ के आधार पर लाइन ब्रेक की सुविधा शुरू की
Android 13 (एपीआई लेवल 33). हालांकि, वाक्यांश के आधार पर लाइन ब्रेक से,
टेक्स्ट की छोटी पंक्तियों को पढ़ना आता है, इसलिए ये टेक्स्ट की लंबी लाइनों के लिए ठीक से काम नहीं करते.
Android 15 में, ऐप्लिकेशन सिर्फ़ छोटी लाइनों के लिए, फ़्रेज़ के आधार पर लाइन ब्रेक का इस्तेमाल कर सकते हैं
LINE_BREAK_WORD_STYLE_AUTO का इस्तेमाल करके, टेक्स्ट का इस्तेमाल किया गया है
का विकल्प शामिल है. यह विकल्प, टेक्स्ट के लिए सबसे सही वर्ड स्टाइल विकल्प चुनता है.
टेक्स्ट की छोटी लाइनों के लिए, फ़्रेज़-आधारित लाइन ब्रेक का इस्तेमाल किया जाता है, जो एक जैसी होती हैं
LINE_BREAK_WORD_STYLE_PHRASE के तौर पर, जैसा कि
निम्न चित्र:
LINE_BREAK_WORD_STYLE_AUTO
टेक्स्ट पढ़ने में आसान बनाने के लिए, फ़्रेज़ के आधार पर लाइन ब्रेक लागू करता है.
यह वैसा ही है जैसे
LINE_BREAK_WORD_STYLE_PHRASE लागू करना.टेक्स्ट की लंबी लाइनों के लिए, LINE_BREAK_WORD_STYLE_AUTO "नहीं" का इस्तेमाल करता है
पंक्ति ब्रेक शब्द शैली, जो इसके समान है
LINE_BREAK_WORD_STYLE_NONE, जैसा कि
निम्न चित्र:
LINE_BREAK_WORD_STYLE_AUTO, टेक्स्ट की लंबी लाइनों के लिए, टेक्स्ट को आसानी से पढ़ने लायक बनाने के लिए, लाइन-ब्रेक वर्ड स्टाइल लागू नहीं करता.
यह आवेदन करने के जैसा ही है
LINE_BREAK_WORD_STYLE_NONE.जापानी हेंटाइगाना फ़ॉन्ट
Android 15 में, पुराने जैपनीज़ हीरागाना (जिसे हेंटाइगाना कहा जाता है) के लिए एक फ़ॉन्ट फ़ाइल डिफ़ॉल्ट रूप से शामिल होता है. हेंटाइगाना के किरदारों के खास आकार से कला या डिज़ाइन में अपनी विशेषज्ञता के साथ-साथ सटीक जानकारी को सुरक्षित रखने में भी मदद मिलती है प्राचीन जापानी दस्तावेज़ों का ट्रांसमिशन और समझ.
VideoLAN cone कॉपीराइट (c) 1996-2010 VideoLAN. इस लोगो या इसके बदले गए वर्शन का इस्तेमाल, कोई भी व्यक्ति VideoLAN प्रोजेक्ट या VideoLAN टीम के बनाए गए किसी भी प्रॉडक्ट के बारे में बताने के लिए कर सकता है. हालांकि, इसका मतलब यह नहीं है कि प्रोजेक्ट ने इस प्रॉडक्ट का प्रमोशन किया है.
Vulkan और Vulkan का लोगो, Khronos Group Inc. के रजिस्टर किए हुए ट्रेडमार्क हैं.
OpenGL एक रजिस्टर किया गया ट्रेडमार्क है और OpenGL ES लोगो, हेवलेट पैकार्ड एंटरप्राइज़ का ट्रेडमार्क है. इसका इस्तेमाल, Khronos की अनुमति से किया जाता है.