اندروید 15 ویژگی ها و API های عالی را برای توسعه دهندگان معرفی می کند. بخشهای زیر این ویژگیها را خلاصه میکنند تا به شما در شروع کار با APIهای مرتبط کمک کنند.
برای فهرست دقیق APIهای اضافه شده، اصلاح شده و حذف شده، گزارش تفاوت API را بخوانید. برای جزئیات بیشتر در مورد APIهای اضافه شده به مرجع Android API مراجعه کنید — برای Android 15، به دنبال APIهایی بگردید که در سطح API 35 اضافه شده اند. برای اطلاع از مناطقی که تغییرات پلت فرم ممکن است بر برنامه های شما تأثیر بگذارد، حتماً تغییرات رفتار Android 15 را برای برنامه هایی که Android 15 و برای همه برنامه ها را هدف قرار می دهند بررسی کنید.
دوربین و رسانه
اندروید 15 شامل ویژگیهای مختلفی است که تجربه دوربین و رسانه را بهبود میبخشد و به شما امکان میدهد به ابزارها و سختافزارهایی برای حمایت از سازندگان برای زنده کردن دیدگاهشان در اندروید دسترسی داشته باشید.
برای اطلاعات بیشتر در مورد جدیدترین ویژگیها و راهحلهای برنامهنویس برای رسانه و دوربین Android، به بحث ساخت رسانهها و تجربههای دوربین مدرن Android از Google I/O مراجعه کنید.
تقویت نور کم
اندروید 15 کم نور ، حالت نوردهی خودکار را معرفی می کند که هم برای دوربین 2 و هم برای پسوند دوربین حالت شب در دسترس است. Low Light Boost نوردهی جریان پیش نمایش را در شرایط کم نور تنظیم می کند. این با نحوه ایجاد تصاویر ثابت توسط پسوند دوربین حالت شب متفاوت است، زیرا حالت شب مجموعه ای از عکس ها را برای ایجاد یک تصویر واحد و پیشرفته ترکیب می کند. در حالی که حالت شب برای ایجاد یک تصویر ثابت بسیار خوب عمل می کند، نمی تواند یک جریان مداوم از فریم ها ایجاد کند، اما Low Light Boost می تواند. بنابراین، Low Light Boost قابلیت های دوربین را فعال می کند، مانند:
- ارائه یک پیشنمایش تصویر پیشرفته، بنابراین کاربران بهتر میتوانند عکسهای خود را در نور کم قاب کنند
- اسکن کدهای QR در نور کم
اگر Low Light Boost را فعال کنید، هنگامی که سطح نور کم باشد به طور خودکار روشن می شود و زمانی که نور بیشتر باشد خاموش می شود.
برنامهها میتوانند جریان پیشنمایش را در شرایط کمنور ضبط کنند تا یک ویدیوی روشن را ذخیره کنند.
برای اطلاعات بیشتر، Low Light Boost را ببینید.
کنترل های دوربین درون برنامه ای
اندروید 15 یک افزونه برای کنترل بیشتر بر سخت افزار دوربین و الگوریتم های آن در دستگاه های پشتیبانی شده اضافه می کند:
- تنظیمات پیشرفته قدرت فلاش که امکان کنترل دقیق شدت فلاش را در هر دو حالت
SINGLE
وTORCH
در هنگام ثبت تصاویر فراهم می کند.
کنترل فضای سر HDR
اندروید 15 فضای سر HDR را انتخاب میکند که برای قابلیتهای دستگاه زیربنایی و عمق بیت پانل مناسب است. برای صفحاتی که محتوای SDR زیادی دارند، مانند برنامه پیامرسانی که یک تصویر کوچک HDR را نمایش میدهد، این رفتار میتواند در نهایت بر روشنایی درک شده محتوای SDR تأثیر منفی بگذارد. اندروید 15 به شما امکان میدهد تا فضای سر HDR را با setDesiredHdrHeadroom
کنترل کنید تا بین محتوای SDR و HDR تعادل برقرار کنید.

کنترل بلندی صدا
اندروید 15 از استاندارد بلندی صدای CTA-2075 پشتیبانی می کند تا به شما کمک کند از تناقضات بلندی صدا جلوگیری کنید و اطمینان حاصل کنید که کاربران مجبور نیستند به طور مداوم صدا را هنگام جابجایی بین محتوا تنظیم کنند. این سیستم از ویژگی های شناخته شده دستگاه های خروجی (هدفون و بلندگو) به همراه ابرداده بلندی صدای موجود در محتوای صوتی AAC استفاده می کند تا به طور هوشمندانه میزان بلندی صدا و تراکم دامنه پویا را تنظیم کند.
برای فعال کردن این ویژگی، باید مطمئن شوید که ابرداده بلندی صدا در محتوای AAC شما موجود است و ویژگی پلتفرم را در برنامه خود فعال کنید. برای این کار، یک شی LoudnessCodecController
را با فراخوانی متد create factory آن با شناسه جلسه صوتی از 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 همچنین برای استفاده از API های LoudnessCodecController
برای یکپارچه سازی یکپارچه برنامه به روز می شود.
دستگاه های مجازی MIDI 2.0
Android 13 添加了对使用 USB 连接 MIDI 2.0 设备的支持,这些设备使用通用 MIDI 数据包 (UMP) 进行通信。Android 15 将 UMP 支持扩展到了虚拟 MIDI 应用,使作曲应用能够像使用 USB MIDI 2.0 设备一样,将虚拟 MIDI 2.0 设备用作控制合成器应用的设备。
رمزگشایی نرم افزار AV1 کارآمدتر
dav1d ، رمزگشای محبوب نرم افزار AV1 از VideoLAN برای دستگاه های اندرویدی که از رمزگشایی AV1 در سخت افزار پشتیبانی نمی کنند، در دسترس است. عملکرد dav1d تا 3 برابر بیشتر از رمزگشای نرمافزار AV1 قدیمی است و امکان پخش HD AV1 را برای کاربران بیشتری از جمله برخی دستگاههای سطح پایین و متوسط فراهم میکند.
برنامه شما باید با فراخوانی آن با نام "c2.android.av1-dav1d.decoder"
استفاده از dav1d را انتخاب کند. dav1d در به روز رسانی بعدی به عنوان رمزگشای پیش فرض نرم افزار AV1 تبدیل خواهد شد. این پشتیبانی استاندارد شده و برای دستگاههای Android 11 که بهروزرسانیهای سیستم Google Play را دریافت میکنند، پشتیبانی میشود.
بهره وری توسعه دهندگان و ابزار
در حالی که بیشتر کار ما برای بهبود بهرهوری شما حول ابزارهایی مانند Android Studio ، Jetpack Compose ، و کتابخانههای Android Jetpack متمرکز است، ما همیشه به دنبال راههایی در این پلتفرم هستیم تا به شما کمک کند راحتتر به دیدگاه خود پی ببرید.
به روز رسانی OpenJDK 17
اندروید 15 به کار تازه سازی کتابخانه های اصلی اندروید برای هماهنگی با ویژگی های آخرین نسخه OpenJDK LTS ادامه می دهد.
ویژگیها و بهبودهای کلیدی زیر شامل میشوند:
- بهبود کیفیت زندگی در اطراف بافرهای NIO
- جریان ها
- روشهای اضافی
math
وstrictmath
-
util
بسته شاملcollection
متوالی،map
وset
- پشتیبانی
ByteBuffer
درDeflater
- به روز رسانی های امنیتی مانند
X500PrivateCredential
و به روز رسانی های کلید امنیتی
این APIها در بیش از یک میلیارد دستگاه دارای Android 12 (سطح API 31) و بالاتر از طریق بهروزرسانیهای سیستم Google Play بهروزرسانی میشوند، بنابراین میتوانید آخرین ویژگیهای برنامهنویسی را هدف قرار دهید.
پیشرفت های PDF
اندروید 15 شامل بهبودهای قابل توجهی در APIهای PdfRenderer
است. برنامهها میتوانند ویژگیهای پیشرفتهای مانند ارائه فایلهای محافظتشده با رمز عبور ، حاشیهنویسی، ویرایش فرم ، جستجو و انتخاب با کپی را در خود جای دهند. بهینه سازی خطی PDF برای سرعت بخشیدن به مشاهده PDF محلی و کاهش استفاده از منابع پشتیبانی می شود. کتابخانه PDF Jetpack از این APIها برای ساده کردن افزودن قابلیت مشاهده PDF به برنامه شما استفاده می کند.

PdfRenderer
به ماژولی منتقل شده است که میتواند با استفاده از بهروزرسانیهای سیستم Google Play مستقل از نسخه پلتفرم بهروزرسانی شود، و ما با ایجاد یک نسخه سازگار پیش از Android 15 از این تغییرات به Android 11 (سطح API 30) پشتیبانی میکنیم. سطح API، به نام PdfRendererPreV
.
اندروید 15 شامل بهبودهای قابل توجهی در APIهای PdfRenderer
است. برنامهها میتوانند ویژگیهای پیشرفتهای مانند ارائه فایلهای محافظتشده با رمز عبور ، حاشیهنویسی، ویرایش فرم ، جستجو و انتخاب با کپی را در خود جای دهند. بهینه سازی خطی PDF برای سرعت بخشیدن به مشاهده PDF محلی و کاهش استفاده از منابع پشتیبانی می شود. کتابخانه PDF Jetpack از این APIها برای ساده کردن افزودن قابلیت مشاهده PDF به برنامه شما استفاده می کند.

PdfRenderer
به ماژولی منتقل شده است که میتواند با استفاده از بهروزرسانیهای سیستم Google Play مستقل از نسخه پلتفرم بهروزرسانی شود، و ما با ایجاد یک نسخه سازگار پیش از Android 15 از این تغییرات به Android 11 (سطح API 30) پشتیبانی میکنیم. سطح API، به نام PdfRendererPreV
.
اندروید 15 شامل بهبودهای قابل توجهی در APIهای PdfRenderer
است. برنامهها میتوانند ویژگیهای پیشرفتهای مانند ارائه فایلهای محافظتشده با رمز عبور ، حاشیهنویسی، ویرایش فرم ، جستجو و انتخاب با کپی را در خود جای دهند. بهینه سازی خطی PDF برای سرعت بخشیدن به مشاهده PDF محلی و کاهش استفاده از منابع پشتیبانی می شود. کتابخانه PDF Jetpack از این APIها برای ساده کردن افزودن قابلیت مشاهده PDF به برنامه شما استفاده می کند.

PdfRenderer
به ماژولی منتقل شده است که میتواند با استفاده از بهروزرسانیهای سیستم Google Play مستقل از نسخه پلتفرم بهروزرسانی شود، و ما با ایجاد یک نسخه سازگار پیش از Android 15 از این تغییرات به Android 11 (سطح API 30) پشتیبانی میکنیم. سطح API، به نام PdfRendererPreV
.
اصلاحات تغییر خودکار زبان
Android 14 added on-device, multi-language recognition in audio with automatic
switching between languages, but this can cause words to get dropped,
especially when languages switch with less of a pause between the two
utterances. Android 15 adds additional controls to help apps tune this switching
to their use case.
EXTRA_LANGUAGE_SWITCH_INITIAL_ACTIVE_DURATION_TIME_MILLIS
confines the automatic switching to the beginning of the audio session, while
EXTRA_LANGUAGE_SWITCH_MATCH_SWITCHES
deactivates the
language switching after a defined number of switches. These options are
particularly useful if you expect that there will be a single language spoken
during the session that should be autodetected.
API فونت متغیر OpenType بهبود یافته است
Android 15 improves the usability of the OpenType variable font. You can create
a FontFamily
instance from a variable font without specifying weight axes
with the buildVariableFamily
API. The text renderer overrides the value
of wght
axis to match the displaying text.
Using the API simplifies the code for creating a Typeface
considerably:
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();
Previously, to create the same Typeface
, you would need much more code:
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();
Here's an example of how a Typeface
created with both the old and new APIs
renders:
In this example, the Typeface
created with the old API doesn't have the
capability to create accurate font weights for the 350, 450, 550 and 650
Font
instances, so the renderer falls back to the closest weight. So in
this case, 300 is rendered instead of 350, 400 is rendered instead of 450, and
so on. By contrast, the Typeface
created with the new APIs dynamically creates
a Font
instance for a given weight, so accurate weights are rendered for 350,
450, 550, and 650 as well.
کنترل های شکست خط دانه ای
با شروع در اندروید 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 کیلوبایتی را در دستگاهی فعال کنید

گزینه Boot with 16KB page size developer را تغییر دهید تا دستگاه در حالت 16 کیلوبایت بوت شود.
با شروع اندروید 15 QPR1، میتوانید از گزینه توسعهدهنده موجود در دستگاههای خاص برای راهاندازی دستگاه در حالت 16 کیلوبایتی و انجام تست روی دستگاه استفاده کنید . قبل از استفاده از گزینه توسعه دهنده، به Settings > System > Software updates بروید و هر به روز رسانی موجود را اعمال کنید.
این گزینه توسعه دهنده در دستگاه های زیر موجود است:
Pixel 8 و 8 Pro (با Android 15 QPR1 یا بالاتر)
Pixel 8a (با Android 15 QPR1 یا بالاتر)
Pixel 9، 9 Pro، و 9 Pro XL (با Android 15 QPR2 Beta 2 یا بالاتر)
گرافیک
اندروید 15 جدیدترین پیشرفتهای گرافیکی، از جمله ANGLE و اضافهشدهها به سیستم گرافیکی Canvas را به ارمغان میآورد.
مدرن کردن دسترسی به پردازنده گرافیکی اندروید
Android hardware has evolved quite a bit from the early days where the core OS would run on a single CPU and GPUs were accessed using APIs based on fixed-function pipelines. The Vulkan® graphics API has been available in the NDK since Android 7.0 (API level 24) with a lower-level abstraction that better reflects modern GPU hardware, scales better to support multiple CPU cores, and offers reduced CPU driver overhead — leading to improved app performance. Vulkan is supported by all modern game engines.
Vulkan is Android's preferred interface to the GPU. Therefore, Android 15 includes ANGLE as an optional layer for running OpenGL® ES on top of Vulkan. Moving to ANGLE will standardize the Android OpenGL implementation for improved compatibility, and, in some cases, improved performance. You can test out your OpenGL ES app stability and performance with ANGLE by enabling the developer option in Settings -> System -> Developer Options -> Experimental: Enable ANGLE on Android 15.
The Android ANGLE on Vulkan roadmap

As part of streamlining our GPU stack, going forward we will be shipping ANGLE as the GL system driver on more new devices, with the future expectation that OpenGL/ES will be only available through ANGLE. That being said, we plan to continue support for OpenGL ES on all devices.
Recommended next steps
Use the developer options to select the ANGLE driver for OpenGL ES and test your app. For new projects, we strongly encourage using Vulkan for C/C++.
بهبودهایی برای بوم
اندروید 15 به مدرن سازی سیستم گرافیکی Canvas اندروید با قابلیت های اضافی ادامه می دهد:
-
Matrix44
یک ماتریس 4x4 برای تبدیل مختصات ارائه می دهد که باید برای دستکاری بوم به صورت سه بعدی استفاده شود. -
clipShader
کلیپ فعلی را با سایهزن مشخص شده قطع میکند، در حالی کهclipOutShader
کلیپ را روی تفاوت کلیپ فعلی و سایهزن تنظیم میکند و هر کدام سایهزن را به عنوان یک ماسک آلفا در نظر میگیرند. این از ترسیم اشکال پیچیده به طور موثر پشتیبانی می کند.
عملکرد و باتری
Android به تمرکز خود بر کمک به شما در بهبود عملکرد و کیفیت برنامههایتان ادامه میدهد. Android 15 API هایی را معرفی می کند که به کارآمدتر کردن وظایف در برنامه شما برای اجرا، بهینه سازی عملکرد برنامه و جمع آوری اطلاعات بینش در مورد برنامه های شما کمک می کند.
برای بهترین شیوههای کارآمد باتری، اشکالزدایی شبکه و مصرف انرژی، و جزئیات نحوه بهبود کارایی باتری در کار پسزمینه در Android 15 و نسخههای اخیر Android، به بهبود کارایی باتری در کار پسزمینه در بحث Android از Google I/O مراجعه کنید.
API ApplicationStartInfo
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 (سطح API 26)، Android دارای StorageStats.getAppBytes
API است که اندازه نصب شده یک برنامه را به صورت یک تعداد بایت خلاصه می کند، که مجموع اندازه APK، اندازه فایل های استخراج شده از APK است. و فایل هایی که روی دستگاه تولید شده اند مانند کدهای کامپایل شده پیش از زمان (AOT). این عدد از نظر نحوه استفاده برنامه شما از فضای ذخیرهسازی خیلی روشنکننده نیست.
Android 15 API StorageStats.getAppBytesByDataType([type])
را اضافه می کند، که به شما امکان می دهد بینشی در مورد نحوه استفاده برنامه شما از این فضا، از جمله تقسیم فایل های APK، AOT و کدهای مربوط به سرعت بخشیدن، داده های dex، کتابخانه ها و نمایه های هدایت شونده داشته باشید.
پروفایل مدیریت شده توسط برنامه
Android 15 包含 ProfilingManager
类,可让您从应用内部收集性能分析信息,例如堆转储、堆分析报告、堆栈采样等。它使用提供的标记为您的应用提供回调,以标识输出文件,该文件将传递给应用的文件目录。该 API 会进行速率限制,以尽可能降低对性能的影响。
为了简化在应用中构建性能分析请求的过程,我们建议您使用 Core 1.15.0-rc01 或更高版本中的相应 Profiling
AndroidX API。
بهبود پایگاه داده SQLite
Android 15 引入了 SQLite API,这些 API 可公开底层 SQLite 引擎的高级功能,以解决可能在应用中出现的特定性能问题。将 SQLite 更新到版本 3.44.3。
开发者应参阅 SQLite 性能最佳实践 以便充分利用其 SQLite 数据库,尤其是在处理大型 或运行对延迟敏感的查询时
- 只读延迟事务:在发出
只读(不包括写入语句),请使用
beginTransactionReadOnly()
和beginTransactionWithListenerReadOnly(SQLiteTransactionListener)
发出只读的DEFERRED
事务。此类事务 如果数据库处于 WAL 模式 与IMMEDIATE
或EXCLUSIVE
事务并发运行。 - 行数和 ID:添加了 API 以检索已更改的行数和 ID
行或最后插入的行 ID 而不发出额外的查询。
getLastChangedRowCount()
会返回当前事务中最近的 SQL 语句插入、更新或删除的行数,而getTotalChangedRowCount()
会返回当前连接的计数。getLastInsertRowId()
返回最后一行的rowid
以便在当前连接中插入 - 原始语句:发出原始 SQlite 语句,从而绕过便利 及其可能产生的任何额外处理开销。
بهروزرسانیهای چارچوب عملکرد پویا اندروید
Android 15 به سرمایه گذاری ما در Android Dynamic Performance Framework (ADPF) ادامه می دهد، مجموعه ای از API ها که به بازی ها و برنامه های فشرده عملکرد اجازه می دهد تا به طور مستقیم با سیستم های قدرت و حرارت دستگاه های Android ارتباط برقرار کنند. در دستگاههای پشتیبانیشده، Android 15 قابلیتهای ADPF را اضافه میکند:
- یک حالت بهره وری انرژی برای جلسات راهنمایی که نشان می دهد رشته های مرتبط آنها باید صرفه جویی در مصرف انرژی را به عملکرد ترجیح دهند، که برای بارهای کاری پس زمینه طولانی مدت عالی است.
- مدت زمان کار GPU و CPU را می توان هر دو در جلسات راهنمایی گزارش کرد و به سیستم اجازه می دهد فرکانس های CPU و GPU را با هم تنظیم کند تا به بهترین شکل نیازهای بار کاری را برآورده کند.
- آستانههای دمایی برای تفسیر وضعیت احتمالی درگیری حرارتی بر اساس پیشبینی فضای سر.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از ADPF در برنامه ها و بازی های خود، به مستندات مراجعه کنید .
،Android 15 به سرمایه گذاری ما در Android Dynamic Performance Framework (ADPF) ادامه می دهد، مجموعه ای از API ها که به بازی ها و برنامه های فشرده عملکرد اجازه می دهد تا به طور مستقیم با سیستم های قدرت و حرارت دستگاه های Android ارتباط برقرار کنند. در دستگاههای پشتیبانیشده، Android 15 قابلیتهای ADPF را اضافه میکند:
- یک حالت بهره وری انرژی برای جلسات راهنمایی که نشان می دهد رشته های مرتبط آنها باید صرفه جویی در مصرف انرژی را به عملکرد ترجیح دهند، که برای بارهای کاری پس زمینه طولانی مدت عالی است.
- مدت زمان کار GPU و CPU را می توان هر دو در جلسات راهنمایی گزارش کرد و به سیستم اجازه می دهد فرکانس های CPU و GPU را با هم تنظیم کند تا به بهترین شکل نیازهای بار کاری را برآورده کند.
- آستانههای دمایی برای تفسیر وضعیت احتمالی درگیری حرارتی بر اساس پیشبینی فضای سر.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از ADPF در برنامه ها و بازی های خود، به مستندات مراجعه کنید .
،Android 15 به سرمایه گذاری ما در Android Dynamic Performance Framework (ADPF) ادامه می دهد، مجموعه ای از API ها که به بازی ها و برنامه های فشرده عملکرد اجازه می دهد تا به طور مستقیم با سیستم های قدرت و حرارت دستگاه های Android ارتباط برقرار کنند. در دستگاههای پشتیبانیشده، Android 15 قابلیتهای ADPF را اضافه میکند:
- یک حالت بهره وری انرژی برای جلسات راهنمایی که نشان می دهد رشته های مرتبط آنها باید صرفه جویی در مصرف انرژی را به عملکرد ترجیح دهند، که برای بارهای کاری پس زمینه طولانی مدت عالی است.
- مدت زمان کار GPU و CPU را می توان هر دو در جلسات راهنمایی گزارش کرد و به سیستم اجازه می دهد فرکانس های CPU و GPU را با هم تنظیم کند تا به بهترین شکل نیازهای بار کاری را برآورده کند.
- آستانههای دمایی برای تفسیر وضعیت احتمالی درگیری حرارتی بر اساس پیشبینی فضای سر.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از ADPF در برنامه ها و بازی های خود، به مستندات مراجعه کنید .
حریم خصوصی
اندروید 15 دارای ویژگی های مختلفی است که به توسعه دهندگان اپلیکیشن کمک می کند تا از حریم خصوصی کاربران محافظت کنند.
تشخیص ضبط صفحه
اندروید 15 پشتیبانی از برنامه ها را اضافه می کند تا تشخیص دهد که آنها در حال ضبط هستند. هر زمان که برنامه بین حالت قابل مشاهده یا نامرئی در یک صفحه ضبط ضبط شده تغییر می کند، یک تماس برگشتی فراخوانی می شود. اگر فعالیتهای متعلق به UID فرآیند ثبتنام در حال ثبت باشد، یک برنامه قابل مشاهده در نظر گرفته میشود. به این ترتیب، اگر برنامه شما عملیات حساسی را انجام می دهد، می توانید به کاربر اطلاع دهید که آنها در حال ضبط هستند.
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
که شامل مجموعهای از اشیاء UriRelativeFilter
است که مجموعهای از قوانین تطبیق Intent
را تشکیل میدهد که هر کدام باید رعایت شوند، از جمله پارامترهای جستجوی URL، قطعات URL، و قوانین مسدود کردن یا حذف، از وضوح دقیقتر Intent
پشتیبانی میکند.
این قوانین را می توان در فایل XML AndroidManifest
با تگ <uri-relative-filter-group>
تعریف کرد، که به صورت اختیاری می تواند یک تگ android:allow
داشته باشد. این برچسبها میتوانند حاوی تگهای <data>
باشند که از ویژگیهای تگ دادههای موجود و همچنین ویژگیهای android:query
و android:fragment
استفاده میکنند.
در اینجا مثالی از نحو 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>
فضای خصوصی
فضای خصوصی به کاربران این امکان را می دهد که فضای جداگانه ای در دستگاه خود ایجاد کنند که در آن می توانند برنامه های حساس را از چشمان کنجکاو دور نگه دارند، زیر یک لایه دیگر از احراز هویت. فضای خصوصی از یک پروفایل کاربری مجزا استفاده می کند. کاربر می تواند انتخاب کند که از قفل دستگاه یا فاکتور قفل جداگانه برای فضای خصوصی استفاده کند.
برنامههای موجود در فضای خصوصی در یک محفظه جداگانه در راهانداز نمایش داده میشوند و وقتی فضای خصوصی قفل است از نمای اخیر، اعلانها، تنظیمات و از سایر برنامهها پنهان میشوند. محتوای تولید شده و دانلود شده توسط کاربر (مانند رسانه یا فایل ها) و حساب ها بین فضای خصوصی و فضای اصلی جدا می شوند. از اشتراکگذاری سیستم و انتخابگر عکس میتوان برای دسترسی برنامهها به محتوا در فضاهای مختلف زمانی که فضای خصوصی باز است استفاده کرد.
کاربران نمی توانند برنامه های موجود و داده های آنها را به فضای خصوصی منتقل کنند. در عوض، کاربران یک گزینه نصب را در فضای خصوصی برای نصب یک برنامه با استفاده از فروشگاه برنامه ای که ترجیح می دهند انتخاب می کنند. برنامههای موجود در فضای خصوصی بهعنوان نسخههای جداگانه از هر برنامهای در فضای اصلی (کپیهای جدید همان برنامه) نصب میشوند.
وقتی کاربر فضای خصوصی را قفل می کند، نمایه متوقف می شود. وقتی نمایه متوقف شده است، برنامههای موجود در فضای خصوصی دیگر فعال نیستند و نمیتوانند فعالیتهای پیشزمینه یا پسزمینه، از جمله نمایش اعلانها را انجام دهند.
توصیه می کنیم برنامه خود را با فضای خصوصی آزمایش کنید تا مطمئن شوید برنامه شما همانطور که انتظار می رود کار می کند، به خصوص اگر برنامه شما در یکی از دسته های زیر قرار می گیرد:
- برنامههایی با منطق برای نمایههای کاری که فرض میکنند هر نسخه نصبشده برنامهشان که در نمایه اصلی نیست، در نمایه کاری است.
- اپلیکیشن های پزشکی
- برنامه های راه اندازی
- اپلیکیشن های اپ استور
آخرین انتخاب کاربر را برای دسترسی به عکسهای انتخابی جستجو کنید
برنامهها اکنون میتوانند تنها عکسها و ویدیوهایی را که اخیراً انتخاب شدهاند، در صورت اعطای دسترسی جزئی به مجوزهای رسانه، برجسته کنند. این ویژگی میتواند تجربه کاربری را برای برنامههایی که اغلب درخواست دسترسی به عکسها و ویدیوها را دارند، بهبود بخشد. برای استفاده از این ویژگی در برنامه خود، هنگام درخواست MediaStore
از طریق ContentResolver
آرگومان QUERY_ARG_LATEST_SELECTION_ONLY
را فعال کنید.
کاتلین
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() ) )
جاوا
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 15 شامل جدیدترین برنامههای افزودنی Android Ad Services است که جدیدترین نسخه جعبه ایمنی حریم خصوصی در Android را در خود جای داده است. این افزوده بخشی از کار ما برای توسعه فناوریهایی است که حریم خصوصی کاربر را بهبود میبخشد و تجربههای تبلیغاتی شخصی و مؤثر را برای برنامههای تلفن همراه امکانپذیر میسازد. صفحه جعبه ایمنی حریم خصوصی ما اطلاعات بیشتری درباره Privacy Sandbox در برنامههای پیشنمایش برنامهنویس Android و بتا دارد تا به شما در شروع کار کمک کند.
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.
اشتراک گذاری صفحه نمایش برنامه
اندروید 15 از اشتراکگذاری صفحه برنامه پشتیبانی میکند، بنابراین کاربران میتوانند فقط یک پنجره برنامه را بهجای کل صفحه دستگاه به اشتراک بگذارند یا ضبط کنند. این ویژگی که برای اولین بار در Android 14 QPR2 فعال شد، شامل تماسهای MediaProjection
میشود که به برنامه شما امکان میدهد تجربه اشتراکگذاری صفحه برنامه را سفارشی کند. توجه داشته باشید که برای برنامههایی که Android 14 (سطح API 34) یا بالاتر را هدف قرار میدهند، رضایت کاربر برای هر جلسه ضبط MediaProjection
لازم است.
تجربه کاربری و رابط کاربری سیستم
اندروید 15 به توسعه دهندگان و کاربران برنامه کنترل و انعطاف بیشتری را برای پیکربندی دستگاه خود مطابق با نیازهایشان می دهد.
برای کسب اطلاعات بیشتر در مورد نحوه استفاده از آخرین پیشرفتها در Android 15 برای بهبود تجربه کاربری برنامه، به بحث بهبود تجربه کاربری برنامه Android خود از Google I/O مراجعه کنید.
پیشنمایشهای غنیتر ویجت با Generated Previews API
قبل از اندروید 15، تنها راه برای ارائه پیشنمایشهای انتخابگر ویجت، تعیین یک تصویر ثابت یا منبع چیدمان بود. این پیشنمایشها اغلب با ظاهر ویجت واقعی زمانی که در صفحه اصلی قرار میگیرد، تفاوت زیادی دارد. همچنین، منابع ثابت را نمی توان با Jetpack Glance ایجاد کرد، بنابراین یک توسعه دهنده Glance مجبور شد از ویجت خود اسکرین شات بگیرد یا یک طرح XML ایجاد کند تا پیش نمایش ویجت داشته باشد.
اندروید 15 پشتیبانی از پیش نمایش های تولید شده را اضافه می کند. این بدان معنی است که ارائه دهندگان ابزارک برنامه می توانند RemoteViews
برای استفاده به عنوان پیش نمایش انتخاب کننده، به جای یک منبع ثابت، تولید کنند.

Push API
برنامه ها می توانند پیش نمایش های تولید شده را از طریق یک push API ارائه دهند. برنامهها میتوانند پیشنمایشهایی را در هر مقطعی از چرخه عمر خود ارائه دهند و درخواست صریحی از میزبان برای ارائه پیشنمایش دریافت نمیکنند. پیشنمایشها در AppWidgetService
ادامه دارند و میزبانها میتوانند آنها را بر حسب تقاضا درخواست کنند. مثال زیر یک منبع طرح بندی ویجت XML را بارگیری می کند و آن را به عنوان پیش نمایش تنظیم می کند:
AppWidgetManager.getInstance(appContext).setWidgetPreview(
ComponentName(
appContext,
SociaLiteAppWidgetReceiver::class.java
),
AppWidgetProviderInfo.WIDGET_CATEGORY_HOME_SCREEN,
RemoteViews("com.example", R.layout.widget_preview)
)
جریان مورد انتظار عبارت است از:
- در هر زمان، ارائهدهنده ویجت با
setWidgetPreview
تماس میگیرد. پیشنمایشهای ارائهشده درAppWidgetService
با سایر اطلاعات ارائهدهنده وجود دارند. -
setWidgetPreview
از طریقAppWidgetHost.onProvidersChanged
، میزبان ها را از پیش نمایش به روز شده مطلع می کند. در پاسخ، میزبان ویجت تمام اطلاعات ارائه دهنده خود را دوباره بارگیری می کند. - هنگام نمایش یک پیشنمایش ویجت، میزبان
AppWidgetProviderInfo.generatedPreviewCategories
را بررسی میکند و اگر دسته انتخابی موجود باشد،AppWidgetManager.getWidgetPreview
را برای بازگرداندن پیشنمایش ذخیرهشده برای این ارائهدهنده تماس میگیرد.
زمان تماس با setWidgetPreview
از آنجایی که هیچ تماسی برای ارائه پیشنمایش وجود ندارد، برنامهها میتوانند در هر زمانی که در حال اجرا هستند، پیشنمایش ارسال کنند. هر چند وقت یکبار بهروزرسانی پیشنمایش بستگی به مورد استفاده ویجت دارد.
لیست زیر دو دسته اصلی موارد استفاده پیش نمایش را شرح می دهد:
- ارائه دهندگانی که داده های واقعی را در پیش نمایش ویجت خود نشان می دهند، مانند اطلاعات شخصی یا اخیر. این ارائه دهندگان می توانند پس از ورود کاربر به سیستم یا انجام تنظیمات اولیه در برنامه خود، پیش نمایش را تنظیم کنند. پس از این، آنها می توانند یک کار دوره ای برای به روز رسانی پیش نمایش ها در آهنگ انتخابی خود تنظیم کنند. نمونه هایی از این نوع ویجت می تواند ویجت عکس، تقویم، آب و هوا یا اخبار باشد.
- ارائهدهندگانی که اطلاعات ثابت را در پیشنمایشها یا ویجتهای اقدام سریع که هیچ دادهای را نمایش نمیدهند نشان میدهند. این ارائه دهندگان می توانند یک بار، زمانی که برنامه برای اولین بار راه اندازی می شود، پیش نمایش ها را تنظیم کنند. نمونه هایی از این نوع ویجت شامل ویجت اقدامات سریع درایو یا ویجت میانبرهای کروم است.
برخی از ارائه دهندگان ممکن است پیش نمایش های ثابت را در انتخابگر حالت هاب نشان دهند، اما اطلاعات واقعی را در انتخابگر صفحه اصلی نشان می دهند. این ارائهدهندگان باید از دستورالعملهای هر دوی این موارد استفاده برای تنظیم پیشنمایش پیروی کنند.
تصویر در تصویر
اندروید 15 تغییراتی را در Picture-in-Picture (PiP) ارائه میکند که هنگام ورود به حالت PiP، انتقال حتی نرمتر را تضمین میکند. این برای برنامههایی که عناصر UI را در بالای رابط کاربری اصلی خود که به PiP میرود، پوشانده شدهاند، مفید خواهد بود.
توسعهدهندگان از پاسخ به تماس onPictureInPictureModeChanged
برای تعریف منطقی استفاده میکنند که نمایان شدن عناصر رابط کاربری روکششده را تغییر میدهد. این تماس پس از تکمیل انیمیشن ورود یا خروج PiP فعال می شود. با شروع اندروید 15، کلاس PictureInPictureUiState
شامل حالت دیگری می شود.
با این حالت رابط کاربری، برنامههایی که Android 15 (سطح API 35) را هدف قرار میدهند، به محض شروع انیمیشن PiP، پاسخ تماس Activity#onPictureInPictureUiStateChanged
را مشاهده میکنند که با isTransitioningToPip()
فراخوانی میشود. بسیاری از عناصر رابط کاربری وجود دارند که زمانی که برنامه در حالت PiP قرار دارد به آن مربوط نیستند، برای مثال نماها یا طرحبندیهایی که شامل اطلاعاتی مانند پیشنهادها، ویدیوهای آینده، رتبهبندیها و عناوین هستند. وقتی برنامه به حالت PiP رفت، از پاسخ تماس onPictureInPictureUiStateChanged
برای پنهان کردن این عناصر رابط کاربری استفاده کنید. هنگامی که برنامه از پنجره PiP به حالت تمام صفحه می رود، از onPictureInPictureModeChanged
برای باز کردن این عناصر استفاده کنید، همانطور که در مثال های زیر نشان داده شده است:
override fun onPictureInPictureUiStateChanged(pipState: PictureInPictureUiState) {
if (pipState.isTransitioningToPip()) {
// Hide UI elements
}
}
override fun onPictureInPictureModeChanged(isInPictureInPictureMode: Boolean) {
if (isInPictureInPictureMode) {
// Unhide UI elements
}
}
این تغییر قابلیت مشاهده سریع عناصر رابط کاربری نامربوط (برای یک پنجره PiP) به اطمینان از ورود یک انیمیشن روانتر و بدون لرزش PiP کمک میکند.
قوانین مزاحم نشوید بهبود یافته است
AutomaticZenRule
به برنامهها اجازه میدهد قوانین مدیریت توجه (مزاحم نشوید) را سفارشی کنند و تصمیم بگیرند که چه زمانی آنها را فعال یا غیرفعال کنند. اندروید 15 با هدف بهبود تجربه کاربری، این قوانین را تا حد زیادی تقویت می کند. پیشرفت های زیر گنجانده شده است:
- افزودن انواع به
AutomaticZenRule
، به سیستم اجازه می دهد تا رفتار خاصی را برای برخی از قوانین اعمال کند. - افزودن یک نماد به
AutomaticZenRule
، کمک میکند تا حالتها بیشتر قابل تشخیص باشند. - افزودن یک رشته
triggerDescription
بهAutomaticZenRule
که شرایطی را که در آن قانون باید برای کاربر فعال شود، توضیح میدهد. -
ZenDeviceEffects
بهAutomaticZenRule
اضافه شده است، که به قوانین اجازه می دهد مواردی مانند صفحه نمایش در مقیاس خاکستری، حالت شب، یا کم نور کردن کاغذ دیواری را فعال کنند.
VibrationEffect را برای کانال های اعلان تنظیم کنید
Android 15 از تنظیم ارتعاشات غنی برای اعلانهای دریافتی توسط کانال با استفاده از NotificationChannel.setVibrationEffect
پشتیبانی میکند، بنابراین کاربران شما میتوانند بدون نیاز به نگاه کردن به دستگاه خود، بین انواع مختلف اعلانها تمایز قائل شوند.
تراشه نوار وضعیت نمایش رسانه و توقف خودکار
طرح رسانه ای می تواند اطلاعات خصوصی کاربر را در معرض نمایش بگذارد. یک تراشه نوار وضعیت برجسته و جدید، کاربران را از هرگونه نمایش صفحه نمایش در حال انجام آگاه می کند. کاربران میتوانند روی تراشه ضربه بزنند تا پخش، اشتراکگذاری یا ضبط صفحه را متوقف کنند. همچنین، برای تجربه کاربری شهودیتر، هر گونه نمایش صفحه نمایش در حال پیشرفت اکنون به طور خودکار با قفل شدن صفحه نمایش دستگاه متوقف میشود.

صفحه نمایش های بزرگ و عوامل شکل
Android 15 به برنامههای شما پشتیبانی میکند تا از فاکتورهای فرم اندروید، از جمله صفحهنمایشهای بزرگ، قابلیتهای تاشو، و تاشو نهایت استفاده را ببرند.
چندوظیفه ای با صفحه نمایش بزرگ بهبود یافته است
اندروید 15 راه های بهتری را برای چندوظیفگی در دستگاه های صفحه نمایش بزرگ به کاربران ارائه می دهد. برای مثال، کاربران میتوانند ترکیبهای برنامههای تقسیمشده مورد علاقه خود را برای دسترسی سریع ذخیره کنند و نوار وظیفه را روی صفحه پین کنند تا به سرعت بین برنامهها جابجا شوند. این بدان معنی است که اطمینان از تطبیق بودن برنامه شما مهمتر از همیشه است.
Google I/O جلساتی در مورد ساخت برنامههای Android تطبیقی و Building UI با کتابخانه تطبیقی Material 3 دارد که میتواند به شما کمک کند، و اسناد ما بیشتر برای کمک به طراحی برای صفحههای بزرگ به شما کمک میکند.
پشتیبانی از صفحه نمایش پوششی
您的应用可以声明一个属性,Android 15 会使用该属性来允许您的 Application
或 Activity
显示在受支持的可翻转设备的小封面屏幕上。这些屏幕太小,无法被视为适合运行 Android 应用的兼容目标平台,但您的应用可以选择支持它们,从而让您的应用在更多平台上可用。
قابلیت اتصال
Android 15 پلتفرم را به روز می کند تا برنامه شما به آخرین پیشرفت ها در زمینه ارتباطات و فناوری های بی سیم دسترسی داشته باشد.
پشتیبانی ماهواره ای
Android 15 به گسترش پشتیبانی پلت فرم برای اتصال ماهوارهای ادامه میدهد و شامل برخی از عناصر رابط کاربری برای اطمینان از تجربه کاربری ثابت در سراسر چشمانداز اتصال ماهوارهای است.
برنامهها میتوانند از ServiceState.isUsingNonTerrestrialNetwork()
برای تشخیص اینکه یک دستگاه به یک ماهواره متصل است، استفاده کنند و به آنها آگاهی بیشتری نسبت به اینکه چرا خدمات شبکه کامل ممکن است در دسترس نباشد، میدهند. علاوه بر این، اندروید 15 از برنامه های SMS و MMS و همچنین برنامه های RCS از پیش بارگذاری شده برای استفاده از اتصال ماهواره ای برای ارسال و دریافت پیام پشتیبانی می کند.

تجربه های روان تر NFC
Android 15 در تلاش است تا تجربه پرداخت یکپارچهتر و قابلاطمینانتر را ایجاد کند و در عین حال به پشتیبانی از اکوسیستم قدرتمند برنامه NFC اندروید ادامه دهد. در دستگاههای پشتیبانیشده، برنامهها میتوانند از NfcAdapter
درخواست کنند تا وارد حالت مشاهده شود، جایی که دستگاه گوش میدهد اما به خوانندههای NFC پاسخ نمیدهد و اشیاء PollingFrame
سرویس NFC برنامه را برای پردازش ارسال میکند. اشیاء PollingFrame
را می توان برای احراز هویت قبل از اولین ارتباط با خواننده NFC استفاده کرد که در بسیاری از موارد امکان تراکنش با یک ضربه را فراهم می کند.
علاوه بر این، برنامهها میتوانند فیلتری را روی دستگاههای پشتیبانیشده ثبت کنند تا بتوانند از فعالیت حلقه نظرسنجی مطلع شوند، که امکان عملکرد روان با چندین برنامه کاربردی NFC آگاه را فراهم میکند.
نقش کیف پول
اندروید 15 نقش کیف پول را معرفی میکند که اجازه میدهد با برنامه کیف پول ترجیحی کاربر یکپارچهتر شود. این نقش جایگزین تنظیم پیشفرض پرداخت بدون تماس NFC میشود. کاربران می توانند با رفتن به تنظیمات > برنامه ها > برنامه های پیش فرض، دارنده نقش Wallet را مدیریت کنند.
نقش Wallet هنگام مسیریابی شیرهای NFC برای ایدزهای ثبت شده در دسته پرداخت استفاده می شود. ضربه ها همیشه به دارنده نقش Wallet می روند مگر اینکه برنامه دیگری که برای همان AID ثبت شده باشد در پیش زمینه اجرا شود.
این نقش همچنین برای تعیین محل قرار گرفتن کاشی دسترسی سریع کیف پول هنگام فعال شدن استفاده می شود. وقتی نقش روی «هیچکدام» تنظیم شود، کاشی دسترسی سریع در دسترس نیست و ضربههای NFC دسته پرداخت فقط به برنامه پیشزمینه تحویل داده میشود.
امنیت
Android 15 به شما کمک می کند امنیت برنامه خود را افزایش دهید، از داده های برنامه خود محافظت کنید، و به کاربران شفافیت و کنترل بیشتری بر روی داده های خود می دهد. برای اطلاعات بیشتر در مورد کارهایی که برای بهبود ایمنی کاربر و محافظت از برنامه شما در برابر تهدیدات جدید انجام می دهیم، گفتگوی حفاظت از امنیت کاربر در Android را از Google I/O ببینید.
مدیریت اعتبار را با تکمیل خودکار ادغام کنید
با شروع Android 15، توسعهدهندگان میتوانند نماهای خاصی مانند فیلدهای نام کاربری یا گذرواژه را با درخواستهای Credential Manager پیوند دهند ، که ارائه یک تجربه کاربری مناسب در طول فرآیند ورود به سیستم را آسانتر میکند. هنگامی که کاربر روی یکی از این نماها تمرکز می کند، درخواست مربوطه به Credential Manager ارسال می شود. اعتبارنامههای بهدستآمده در بین ارائهدهندگان جمعآوری میشوند و در رابطهای کاربری جایگزین تکمیل خودکار، مانند پیشنهادات درون خطی یا پیشنهادات کشویی نمایش داده میشوند. کتابخانه Jetpack androidx.credentials نقطه پایانی ترجیحی برای استفاده توسعه دهندگان است و به زودی برای بهبود بیشتر این ویژگی در اندروید 15 و بالاتر در دسترس خواهد بود.
ثبتنام و ورود با یک ضربه را با اعلانهای بیومتریک ادغام کنید
Credential Manager اعلانهای بیومتریک را در فرآیندهای ایجاد اعتبار و ورود به سیستم ادغام میکند و نیاز ارائهدهندگان را برای مدیریت درخواستهای بیومتریک از بین میبرد. در نتیجه، ارائه دهندگان اعتبار فقط باید بر نتایج ایجاد و دریافت جریان ها، به همراه نتیجه جریان بیومتریک تمرکز کنند. این فرآیند ساده، فرآیند ایجاد و بازیابی اعتبار کارآمدتر و کارآمدتر را ایجاد می کند.
مدیریت کلید برای رمزگذاری سرتاسر
ما E2eeContactKeysManager
را در اندروید 15 معرفی می کنیم که رمزگذاری سرتاسر (E2EE) را در برنامه های اندرویدی شما با ارائه یک API در سطح سیستم عامل برای ذخیره کلیدهای عمومی رمزنگاری تسهیل می کند.
E2eeContactKeysManager
برای ادغام با برنامه مخاطبین پلتفرم طراحی شده است تا به کاربران راهی متمرکز برای مدیریت و تأیید کلیدهای عمومی مخاطبینشان بدهد.
مجوزهای URI محتوا را بررسی می کند
اندروید 15 مجموعهای از APIها را معرفی میکند که بررسیهای مجوز را روی URI محتوا انجام میدهند:
-
Context.checkContentUriPermissionFull
: این یک بررسی کامل مجوز در URIهای محتوا را انجام می دهد. - ویژگی مانیفست
Activity
requireContentUriPermissionFromCaller
: این مجوزهای مشخص شده را در URIهای محتوای ارائه شده در هنگام راه اندازی فعالیت اعمال می کند. - کلاس
ComponentCaller
برای تماس گیرندگانActivity
: این نشان دهنده برنامه ای است که فعالیت را راه اندازی کرده است.
دسترسی
اندروید 15 ویژگی هایی را اضافه می کند که دسترسی کاربران را بهبود می بخشد.
خط بریل بهتر
در Android 15، ما این امکان را برای TalkBack فراهم کردهایم که از نمایشگرهای بریل که از استاندارد HID از طریق USB و بلوتوث ایمن استفاده میکنند، پشتیبانی کند.
این استاندارد، دقیقاً مشابه استانداردی که توسط ماوس ها و صفحه کلیدها استفاده می شود، به اندروید کمک می کند تا در طول زمان از طیف وسیع تری از نمایشگرهای بریل پشتیبانی کند.
بین المللی شدن
اندروید 15 ویژگیها و قابلیتهایی را اضافه میکند که تجربه کاربر را در هنگام استفاده از دستگاه به زبانهای مختلف تکمیل میکند.
فونت متغیر CJK
با شروع Android 15، فایل فونت برای زبان های چینی، ژاپنی و کره ای (CJK)، NotoSansCJK، اکنون یک فونت متغیر است. فونت های متغیر فرصت هایی را برای تایپوگرافی خلاقانه در زبان های CJK باز می کنند. طراحان میتوانند طیف وسیعتری از سبکها را بررسی کنند و طرحبندیهای بصری چشمگیری ایجاد کنند که قبلاً دستیابی به آنها دشوار یا غیرممکن بود.

توجیه بین شخصیتی
با شروع Android 15، متن را می توان با استفاده از فاصله حروف با استفاده از JUSTIFICATION_MODE_INTER_CHARACTER
توجیه کرد. توجیه بین کلمه ای برای اولین بار در اندروید 8.0 (سطح API 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 (سطح API 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
است.فونت ژاپنی Hentaigana اضافی
در اندروید 15، یک فایل فونت برای هیراگانای ژاپنی قدیمی (معروف به Hentaigana) به طور پیش فرض همراه است. اشکال منحصربهفرد شخصیتهای هنتایگانا میتواند استعدادی متمایز به آثار هنری یا طراحی اضافه کند و در عین حال به حفظ انتقال دقیق و درک اسناد باستانی ژاپنی کمک کند.

مخروط VideoLAN حق چاپ (ج) 1996-2010 VideoLAN. این لوگو یا نسخه اصلاح شده ممکن است توسط هر کسی برای ارجاع به پروژه VideoLAN یا هر محصولی که توسط تیم VideoLAN توسعه داده شده است استفاده یا اصلاح شود، اما نشان دهنده تایید پروژه نیست.
Vulkan و لوگوی Vulkan علائم تجاری ثبت شده شرکت Khronos Group هستند.
OpenGL یک علامت تجاری ثبت شده است و لوگوی OpenGL ES یک علامت تجاری Hewlett Packard Enterprise است که با مجوز Khronos استفاده می شود.