Android 16 ویژگیها و میاناهای برنامهسازی کاربردی جدید فوقالعادهای برای توسعهدهندگان معرفی میکند. بخشهای زیر این ویژگیها را خلاصه میکند تا به شما کمک کند با میاناهای برنامهسازی کاربردی مرتبط شروع کنید.
برای مشاهده فهرست دقیق میاناهای برنامهسازی کاربردی جدید، اصلاحشده، و حذفشده، گزارش تفاوت میانای برنامهسازی کاربردی را بخوانید. برای جزئیات درباره میاناهای برنامهسازی کاربردی جدید، به مرجع میانای برنامهسازی کاربردی Android مراجعه کنید — میاناهای برنامهسازی کاربردی جدید برای دید بهتر برجسته شدهاند.همچنین باید بخشهایی را که تغییرات پلاتفرم ممکن است بر برنامههایتان تأثیر بگذارد مرور کنید. برای اطلاعات بیشتر، صفحههای زیر را ببینید:
- تغییرات رفتاری که بر برنامهها هنگام هدفیابی Android 16 تأثیر میگذارد
- تغییرات رفتاری که بر همه برنامهها صرفنظر از
targetSdkVersionتأثیر میگذارد.
عملکرد اصلی
Android شامل میاناهای برنامهسازی کاربردی جدیدی است که قابلیتهای اصلی سیستم Android را گسترش میدهد.
دو نسخه میانای برنامهسازی کاربردی Android در سال ۲۰۲۵
- این پیش نمایش برای نسخه اصلی بعدی اندروید با راه اندازی برنامه ریزی شده در سه ماهه دوم سال 2025 است. این نسخه مشابه همه نسخه های API ما در گذشته است، جایی که می توانیم تغییرات رفتاری برنامه ریزی شده ای داشته باشیم که اغلب به یک targetSdkVersion گره خورده است.
- ما در حال برنامهریزی نسخه اصلی یک ربع زودتر (به جای Q3 در سالهای قبل) هستیم تا با برنامه زمانبندی راهاندازی دستگاهها در سراسر اکوسیستم خود هماهنگی بیشتری داشته باشیم، بنابراین دستگاههای بیشتری بتوانند زودتر نسخه اصلی Android را دریافت کنند. با انتشار اصلی در سه ماهه دوم، باید آزمایش سازگاری سالانه خود را چند ماه زودتر از سالهای گذشته انجام دهید تا مطمئن شوید برنامههایتان آماده هستند.
- ما قصد داریم در سه ماهه چهارم سال 2025 نسخه دیگری داشته باشیم که شامل API های توسعه دهندگان جدید نیز می شود. نسخه اصلی Q2 تنها نسخه در سال 2025 خواهد بود که شامل تغییرات رفتاری برنامه ریزی شده است که می تواند برنامه ها را تحت تأثیر قرار دهد.
علاوه بر APIهای توسعهدهنده جدید، نسخه جزئی Q4 بهروزرسانیها، بهینهسازیها و رفع اشکالها را در اختیار خواهد داشت. این شامل هیچ گونه تغییر رفتاری تأثیرگذار بر برنامه نخواهد بود.
ما به انتشار سه ماهه اندروید ادامه خواهیم داد. بهروزرسانیهای Q1 و Q3 بین نسخههای API بهروزرسانیهای افزایشی را برای اطمینان از کیفیت مداوم ارائه میدهند. ما فعالانه با شرکای دستگاه خود کار می کنیم تا نسخه Q2 را تا حد امکان به دستگاه های بیشتری ارائه کنیم.
محافظت از بلوک کد با بررسی سطح API امروز با استفاده از ثابت SDK_INT با VERSION_CODES انجام می شود. این همچنان برای نسخه های اصلی اندروید پشتیبانی می شود.
if (SDK_INT >= VERSION_CODES.BAKLAVA) {
// Use APIs introduced in Android 16
}
ثابت جدید SDK_INT_FULL می تواند برای بررسی های API در برابر هر دو نسخه اصلی و فرعی با شمارش جدید VERSION_CODES_FULL استفاده شود.
if (SDK_INT_FULL >= VERSION_CODES_FULL.[MAJOR or MINOR RELEASE]) {
// Use APIs introduced in a major or minor release
}
همچنین میتوانید از متد Build.getMinorSdkVersion() برای دریافت نسخه کوچک SDK استفاده کنید.
val minorSdkVersion = Build.getMinorSdkVersion(VERSION_CODES_FULL.BAKLAVA)
این API ها هنوز نهایی نشده اند و در معرض تغییر هستند، بنابراین لطفاً در صورت داشتن هر گونه نگرانی، بازخورد خود را برای ما ارسال کنید.
تجربه کاربری و واسط کاربر سیستم
Android 16 به توسعهدهندگان نرمافزار و کاربران کنترل و انعطافپذیری بیشتری برای پیکربندی دستگاهشان مطابق با نیازهایشان میدهد.
اعلانهای پیشرفتمحور
اندروید 16 اعلانهای پیشرفتمحور را معرفی میکند تا به کاربران کمک کند بهطور یکپارچه سفرهای شروع تا پایان توسط کاربر را ردیابی کنند.
Notification.ProgressStyle یک سبک اعلان جدید است که به شما امکان می دهد اعلان های پیشرفت محور ایجاد کنید. موارد استفاده کلیدی شامل rideshare، تحویل، و ناوبری است. در کلاس Notification.ProgressStyle ، میتوانید وضعیتها و نقاط عطف در سفر کاربر را با استفاده از نقاط و بخشها مشخص کنید.
To learn more, see the Progress-centric notifications documentation page.
بهروزرسانیهای اشاره برگشت پیشگویانه
Android 16 API های جدیدی را اضافه می کند تا به شما کمک کند انیمیشن های سیستمی پیش بینی کننده را در جهت یابی حرکتی مانند انیمیشن بازگشت به خانه فعال کنید. ثبت کردن onBackInvokedCallback با PRIORITY_SYSTEM_NAVIGATION_OBSERVER جدید به برنامه شما امکان میدهد هر زمان که سیستم یک پیمایش برگشتی را انجام میدهد، بدون تأثیر بر جریان ناوبری عادی، تماس معمولی onBackInvoked دریافت کند.
اندروید 16 علاوه بر این finishAndRemoveTaskCallback() و moveTaskToBackCallback را اضافه می کند. با ثبت این تماسهای برگشتی با OnBackInvokedDispatcher ، سیستم میتواند رفتارهای خاصی را فعال کند و در هنگام فراخوانی ژست بازگشت، انیمیشنهای مربوطه را پخش کند.
فناوری لمسی غنیتر
Android has exposed control over the haptic actuator ever since its inception.
Android 11 added support for more complex haptic effects that more advanced
actuators could support through
VibrationEffect.Compositions of device-defined semantic
primitives.
Android 16 adds haptic APIs that let apps define the amplitude and frequency curves of a haptic effect while abstracting away differences between device capabilities.
بهرهوری و ابزارهای توسعهدهنده
درحالیکه بیشتر کارهای ما برای بهبود بهرهوری شما حول ابزارهایی مانند استودیو Android، Jetpack Compose، و کتابخانههای Android Jetpack میچرخد، ما همیشه بهدنبال راههایی در پلاتفرم هستیم تا به شما کمک کنیم دیدگاه خود را محقق کنید.
مدیریت محتوا برای کاغذدیواریهای پویا
در اندروید 16، چارچوب تصویر زمینه زنده در حال به دست آوردن یک API محتوای جدید برای مقابله با چالشهای والپیپرهای پویا و کاربر محور است. در حال حاضر، والپیپرهای زنده که محتوای ارائه شده توسط کاربر را در خود جای داده اند، به پیاده سازی های پیچیده و خاص سرویس نیاز دارند. Android 16 WallpaperDescription و WallpaperInstance را معرفی می کند. WallpaperDescription به شما امکان می دهد نمونه های متمایز یک تصویر زمینه زنده را از همان سرویس شناسایی کنید. برای مثال، کاغذدیواریای که هم در صفحه اصلی و هم در صفحه قفل دارای نمونههایی است ممکن است در هر دو مکان دارای محتوای منحصربهفرد باشد. انتخابگر کاغذ دیواری و WallpaperManager از این ابرداده برای ارائه بهتر والپیپرها به کاربران استفاده می کنند و فرآیند ایجاد تصاویر پس زمینه زنده متنوع و شخصی سازی شده را برای شما ساده می کنند.
عملکرد و باتری
Android 16 میاناهای برنامهسازی کاربردیای را معرفی میکند که به جمعآوری اطلاعات آماری درباره برنامههایتان کمک میکند.
نمایهسازی راهاندازیشده توسط سیستم
ProfilingManager در اندروید 15 اضافه شد و به برنامهها امکان درخواست جمعآوری دادههای پروفایل با استفاده از Perfetto در دستگاههای عمومی در این زمینه را میدهد. با این حال، از آنجایی که این نمایهسازی باید از برنامه شروع شود، دریافت جریانهای حیاتی مانند راهاندازیها یا ANR برای برنامهها دشوار یا غیرممکن است.
برای کمک به این امر، اندروید 16 پروفایل سیستمی را به ProfilingManager معرفی می کند. برنامهها میتوانند علاقه خود را به دریافت ردیابی برای محرکهای خاصی مانند گزارش شروع سرد reportFullyDrawn یا ANR ثبت کنند و سپس سیستم یک ردیابی را از طرف برنامه شروع و متوقف کند. پس از تکمیل ردیابی، نتایج به فهرست داده های برنامه تحویل داده می شود.
مؤلفه شروع در ApplicationStartInfo
ApplicationStartInfo در Android 15 اضافه شد و به برنامه اجازه میدهد دلایل شروع فرآیند، نوع شروع، زمان شروع، throttling و سایر دادههای تشخیصی مفید را ببیند. Android 16 getStartComponent() را برای تشخیص اینکه چه نوع مؤلفهای شروع به کار کرده است اضافه میکند، که میتواند برای بهینهسازی جریان راهاندازی برنامه شما مفید باشد.
دروننگری شغلی بهتر
API JobScheduler#getPendingJobReason() دلیلی برای معلق بودن یک کار برمی گرداند. با این حال، یک کار ممکن است به دلایل متعدد در انتظار باشد.
در اندروید 16، یک API جدید JobScheduler#getPendingJobReasons(int jobId) معرفی میکنیم که دلایل متعددی را برای معلق بودن یک کار، به دلیل محدودیتهای صریح توسط توسعهدهنده و محدودیتهای ضمنی تعیینشده توسط سیستم، برمیگرداند.
ما همچنین JobScheduler#getPendingJobReasonsHistory(int jobId) را معرفی می کنیم که لیستی از آخرین تغییرات محدودیت را برمی گرداند.
توصیه میکنیم از API برای کمک به رفع اشکالزدایی کنید که چرا ممکن است کارهایتان اجرا نشوند، بهویژه اگر شاهد کاهش نرخ موفقیت در برخی کارها هستید یا اشکالاتی در مورد تأخیر تکمیل کار خاص دارید. به عنوان مثال، بهروزرسانی ویجتها در پسزمینه انجام نشد یا کار واکشی پیش از شروع برنامه فراخوانی نشد.
این همچنین میتواند به شما کمک کند تا بفهمید که آیا کارهای خاصی به دلیل محدودیتهای تعریفشده سیستم در مقابل محدودیتهای مشخص شده تکمیل نمیشوند یا خیر.
نرخ بازآوری تطبیقپذیر
نرخ تازه سازی تطبیقی (ARR) که در اندروید 15 معرفی شد، نرخ تازه سازی نمایشگر را در سخت افزار پشتیبانی شده قادر می سازد تا با استفاده از مراحل گسسته VSync، با نرخ فریم محتوا سازگار شود. این امر مصرف برق را کاهش می دهد و در عین حال نیاز به تغییر حالت بالقوه تحریک کننده jank را از بین می برد.
اندروید 16 همزمان با بازیابی getSupportedRefreshRates() hasArrSupport() و getSuggestedFrameRate(int) معرفی میکند تا برنامههای شما بتوانند از مزایای ARR راحتتر استفاده کنند. RecyclerView 1.4 به صورت داخلی از ARR پشتیبانی می کند، زمانی که از یک فلش یا اسکرول صاف می نشیند ، و ما به کار خود برای افزودن پشتیبانی ARR به کتابخانه های Jetpack بیشتر ادامه می دهیم. این مقاله نرخ فریم بسیاری از API هایی را پوشش می دهد که می توانید از آنها برای تنظیم نرخ فریم استفاده کنید تا برنامه شما بتواند مستقیماً از ARR استفاده کند.
میاناهای برنامهسازی کاربردی Headroom در ADPF
The SystemHealthManager introduces the
getCpuHeadroom and
getGpuHeadroom APIs, designed to provide games and
resource-intensive apps with estimates of available CPU and GPU resources. These
methods offer a way for you to gauge how your app or game can best improve
system health, particularly when used in conjunction with other Android Dynamic
Performance Framework (ADPF) APIs that detect thermal
throttling.
By using CpuHeadroomParams and
GpuHeadroomParams on supported devices, you can
customize the time window used to compute the headroom and select between
average or minimum resource availability. This can help you reduce your CPU or
GPU resource usage accordingly, leading to better user experiences and improved
battery life.
دسترسپذیری
Android 16 ویژگیها و APIهای دسترسپذیری جدیدی اضافه میکند که میتواند به شما کمک کند برنامهتان را برای همه کاربران دردسترس قرار دهید.
ایپیآیهای دسترسپذیری بهبودیافته
Android 16 APIهای اضافی را برای بهبود معنای رابط کاربری اضافه میکند که به بهبود سازگاری برای کاربرانی که به خدمات دسترسپذیری متکی هستند، مانند TalkBack کمک میکند.
کاربرانی که بینایی ضعیفی دارند اغلب حساسیت کنتراست کمتری دارند که تشخیص اشیاء از پسزمینهشان دشوار است. برای کمک به این کاربران، اندروید 16 متن طرح کلی را معرفی میکند و جایگزین متن با کنتراست بالا میشود، که منطقه متضاد بزرگتری را در اطراف متن ترسیم میکند تا خوانایی را تا حد زیادی بهبود بخشد.
Android 16 حاوی API های AccessibilityManager جدیدی است که به برنامه های شما امکان می دهد شنونده را بررسی یا ثبت کنند تا ببینند آیا این حالت فعال است یا خیر. این در درجه اول برای ابزارهای UI مانند Compose است تا تجربه بصری مشابهی را ارائه دهند. اگر یک کتابخانه UI Toolkit دارید یا برنامه شما رندر متن سفارشی را انجام می دهد که کلاس android.text.Layout را دور می زند، می توانید از این برای اطلاع از فعال بودن متن طرح استفاده کنید.
Android 16 TtsSpan با TYPE_DURATION ، متشکل از ARG_HOURS ، ARG_MINUTES و ARG_SECONDS گسترش میدهد. این به شما امکان میدهد مستقیماً مدت زمان را حاشیهنویسی کنید و از خروجی متن به گفتار دقیق و ثابت با سرویسهایی مانند TalkBack اطمینان حاصل کنید.
Android در حال حاضر به عناصر UI اجازه می دهد تا برچسب دسترسی خود را از برچسب دیگری استخراج کنند، و اکنون این امکان را برای چندین برچسب ارائه می دهد که یک سناریوی رایج در محتوای وب است. با معرفی یک API مبتنی بر فهرست در AccessibilityNodeInfo ، Android میتواند مستقیماً از این روابط چند برچسبی پشتیبانی کند. به عنوان بخشی از این تغییر، AccessibilityNodeInfo#setLabeledBy و #getLabeledBy را به نفع #addLabeledBy ، #removeLabeledBy و #getLabeledByList منسوخ کردیم.
Android 16 APIهای دسترسپذیری را اضافه میکند که به شما امکان میدهد حالت گسترده یا جمعشده عناصر تعاملی، مانند منوها و لیستهای قابل ارتقا را منتقل کنید. با تنظیم حالت گسترش یافته با استفاده از setExpandedState و ارسال TYPE_WINDOW_CONTENT_CHANGED AccessibilityEvents با نوع تغییر محتوا CONTENT_CHANGE_TYPE_EXPANDED ، می توانید اطمینان حاصل کنید که صفحه خوان هایی مانند TalkBack تغییرات وضعیت را اعلام می کنند و تجربه کاربری بصری و فراگیرتری را ارائه می دهند.
Android 16 RANGE_TYPE_INDETERMINATE اضافه میکند و راهی را برای شما فراهم میکند تا RangeInfo برای ویجتهای ProgressBar معین و نامشخص در معرض نمایش قرار دهید، و به سرویسهایی مانند TalkBack اجازه میدهد تا بازخورد بیشتری برای شاخصهای پیشرفت ارائه دهند.
روشهای جدید AccessibilityNodeInfo getChecked و setChecked(int) در اندروید 16 اکنون علاوه بر علامتگذاری شده و علامتنخورده، از حالت «تا حدی بررسی شده» نیز پشتیبانی میکنند. این جایگزین بولی منسوخ شده isChecked و setChecked(boolean) .
وقتی یک سرویس دسترسپذیری یک ViewGroup را توصیف میکند، برچسبهای محتوا را از نماهای فرزند خود ترکیب میکند. اگر یک contentDescription برای ViewGroup ارائه میکنید، سرویسهای دسترسپذیری فرض میکنند که شرح نماهای فرزند غیرقابل تمرکز را نیز نادیده میگیرید. اگر بخواهید مواردی مانند کشویی (مثلاً "Font Family") را با حفظ انتخاب فعلی برای دسترسی (مثلاً "Roboto") برچسب گذاری کنید، می تواند مشکل ساز باشد. Android 16 setSupplementalDescription اضافه میکند تا بتوانید متنی را ارائه کنید که اطلاعاتی درباره یک ViewGroup ارائه میکند بدون اینکه اطلاعاتی را از فرزندان آن حذف کنید.
Android 16 setFieldRequired به AccessibilityNodeInfo اضافه میکند تا برنامهها بتوانند به سرویس دسترسپذیری اطلاع دهند که وارد فیلد فرم لازم است. این یک سناریوی مهم برای کاربرانی است که انواع بسیاری از فرمها را پر میکنند، حتی موارد سادهای مانند چک باکس شرایط و ضوابط الزامی، و به کاربران کمک میکند تا به طور مداوم بین فیلدهای مورد نیاز را شناسایی کرده و به سرعت حرکت کنند.
تلفن بهعنوان ورودی میکروفون برای تماسهای گفتاری با سمعکهای LEA
Android 16 adds the capability for users of LE Audio hearing aids to switch between the built-in microphones on the hearing aids and the microphone on their phone for voice calls. This can be helpful in noisy environments or other situations where the hearing aid's microphones might not perform well.
کنترلهای صدای محیط برای سمعکهای LEA
اندروید 16 این قابلیت را به کاربران سمعک LE Audio اضافه می کند تا میزان صدای محیطی را که توسط میکروفون های سمعک دریافت می شود تنظیم کنند. این می تواند در شرایطی که نویز پس زمینه خیلی بلند یا خیلی آرام است مفید باشد.
دوربین
Android 16 پشتیبانی از کاربران دوربین حرفهای را بهبود میبخشد و امکان نوردهی خودکار ترکیبی را همراه با تنظیمات دقیق دمای رنگ و سایهرنگ فراهم میکند. نشانگر جدید
حالت شب به برنامه شما کمک میکند بداند چه زمانی به جلسه دوربین حالت شب برود و چه زمانی از آن خارج شود. کنشهای جدید Intent ضبط عکسهای حرکتی را آسانتر میکند،
و ما همچنان به بهبود تصاویر UltraHDR با پشتیبانی از کدبندی HEIC
و پارامترهای جدید از پیشنویس استاندارد ISO 21496-1 ادامه میدهیم.
نوردهی خودکار ترکیبی
اندروید 16 حالتهای نوردهی خودکار ترکیبی جدیدی را به Camera2 اضافه میکند و به شما این امکان را میدهد تا جنبههای خاصی از نوردهی را به صورت دستی کنترل کنید در حالی که به الگوریتم نوردهی خودکار (AE) اجازه میدهید بقیه موارد را کنترل کند. میتوانید ISO + AE و زمان نوردهی + AE را کنترل کنید، که انعطافپذیری بیشتری را در مقایسه با رویکرد فعلی که در آن کنترل دستی کامل دارید یا کاملاً به نوردهی خودکار متکی هستید، ارائه میکنید.
fun setISOPriority() {
// ... (Your existing code before the snippet) ...
val availablePriorityModes = mStaticInfo.characteristics.get(
CameraCharacteristics.CONTROL_AE_AVAILABLE_PRIORITY_MODES
)
// ... (Your existing code between the snippets) ...
// Turn on AE mode to set priority mode
reqBuilder.set(
CaptureRequest.CONTROL_AE_MODE,
CameraMetadata.CONTROL_AE_MODE_ON
)
reqBuilder.set(
CaptureRequest.CONTROL_AE_PRIORITY_MODE,
CameraMetadata.CONTROL_AE_PRIORITY_MODE_SENSOR_SENSITIVITY_PRIORITY
)
reqBuilder.set(
CaptureRequest.SENSOR_SENSITIVITY,
TEST_SENSITIVITY_VALUE
)
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after the snippet) ...
}
تنظیمات دقیق دمای رنگ و تهرنگ
اندروید 16 برای پشتیبانی بهتر از برنامههای فیلمبرداری حرفهای، پشتیبانی دوربین را برای تنظیم دمای رنگ و رنگ خوب اضافه میکند. در نسخههای قبلی اندروید، میتوانید تنظیمات تراز سفیدی را از طریق CONTROL_AWB_MODE کنترل کنید، که شامل گزینههایی محدود به یک لیست از پیش تعیین شده، مانند رشتهای ، ابری ، و گرگ و میش است. COLOR_CORRECTION_MODE_CCT استفاده از COLOR_CORRECTION_COLOR_TEMPERATURE و COLOR_CORRECTION_COLOR_TINT را برای تنظیمات دقیق تراز سفیدی بر اساس دمای رنگ مرتبط امکانپذیر میسازد.
fun setCCT() {
// ... (Your existing code before this point) ...
val colorTemperatureRange: Range<Int> =
mStaticInfo.characteristics[CameraCharacteristics.COLOR_CORRECTION_COLOR_TEMPERATURE_RANGE]
// Set to manual mode to enable CCT mode
reqBuilder[CaptureRequest.CONTROL_AWB_MODE] = CameraMetadata.CONTROL_AWB_MODE_OFF
reqBuilder[CaptureRequest.COLOR_CORRECTION_MODE] = CameraMetadata.COLOR_CORRECTION_MODE_CCT
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TEMPERATURE] = 5000
reqBuilder[CaptureRequest.COLOR_CORRECTION_COLOR_TINT] = 30
val request: CaptureRequest = reqBuilder.build()
// ... (Your existing code after this point) ...
}
مثالهای زیر نشان میدهند که یک عکس پس از اعمال تنظیمات مختلف دمای رنگ و رنگ چگونه به نظر میرسد:
تشخیص صحنه حالت شب دوربین
To help your app know when to switch to and from a night mode camera session,
Android 16 adds EXTENSION_NIGHT_MODE_INDICATOR. If
supported, it's available in the CaptureResult within
Camera2.
This is the API we briefly mentioned as coming soon in the How Instagram enabled users to take stunning low light photos blog post. That post is a practical guide on how to implement night mode together with a case study that links higher-quality in-app night mode photos with an increase in the number of photos shared from the in-app camera.
کنشهای قصد ضبط عکس حرکتی
Android 16 اقدامات استاندارد Intent را اضافه میکند - ACTION_MOTION_PHOTO_CAPTURE و ACTION_MOTION_PHOTO_CAPTURE_SECURE - که از برنامه دوربین درخواست میکند یک عکس متحرک بگیرد و آن را برگرداند.
یا باید یک EXTRA_OUTPUT اضافی برای کنترل محل نوشته شدن تصویر ارسال کنید، یا یک Uri از طریق Intent.setClipData(ClipData) . اگر ClipData تنظیم نکنید، هنگام تماس با Context.startActivity(Intent) برای شما کپی می شود.
بهسازی تصویر UltraHDR
Android 16 به کار ما برای ارائه کیفیت تصویر خیره کننده با تصاویر UltraHDR ادامه می دهد. پشتیبانی از تصاویر UltraHDR در فرمت فایل HEIC را اضافه می کند. این تصاویر نوع ImageFormat HEIC_ULTRAHDR را دریافت خواهند کرد و دارای یک نقشه ی تعبیه شده مشابه فرمت UltraHDR JPEG موجود خواهند بود. ما در حال کار بر روی پشتیبانی AVIF برای UltraHDR نیز هستیم، پس با ما همراه باشید.
علاوه بر این، Android 16 پارامترهای اضافی را در UltraHDR از استاندارد پیشنویس ISO 21496-1 پیادهسازی میکند، از جمله توانایی دریافت و تنظیم فضای رنگی که ریاضیات gainmap باید در آن اعمال شود، و همچنین پشتیبانی از تصاویر پایه کدگذاریشده HDR با بهرهبرداری SDR.
گرافیک
Android 16 شامل جدیدترین بهبودهای گرافیکی، مثل جلوههای گرافیکی سفارشی با AGSL است.
جلوههای گرافیکی سفارشی با AGSL
Android 16 adds RuntimeColorFilter and
RuntimeXfermode, allowing you to author complex effects like
Threshold, Sepia, and Hue Saturation and apply them to draw calls. Since Android
13, you've been able to use AGSL to create custom
RuntimeShaders that extend Shader. The new API
mirrors this, adding an AGSL-powered RuntimeColorFilter that
extends ColorFilter, and a Xfermode effect that
lets you implement AGSL-based custom compositing and blending between source and
destination pixels.
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 را در دستگاههای پشتیبانیشده با Wi-Fi 6 802.11az اضافه میکند و به برنامهها اجازه میدهد تا دقت بالاتر، مقیاسپذیری بیشتر و زمانبندی پویا پروتکل را با پیشرفتهای امنیتی از جمله مبتنی بر AES-256 ترکیب کنند. رمزگذاری و محافظت در برابر حملات MITM. این امکان استفاده ایمنتر از آن را در موارد استفاده از مجاورت، مانند باز کردن قفل لپتاپ یا درب خودرو فراهم میکند. 802.11az با استاندارد Wi-Fi 6 ادغام شده است و از زیرساخت ها و قابلیت های آن برای پذیرش گسترده تر و استقرار آسان تر استفاده می کند.
میاناهای برنامهسازی کاربردی عمومی برای تعیین محدوده
Android 16 includes the new RangingManager, which provides
ways to determine the distance and angle on supported hardware between the local
device and a remote device. RangingManager supports the usage of a variety of
ranging technologies such as BLE channel sounding, BLE RSSI-based ranging, Ultra
Wideband, and Wi-Fi round trip time.
حضور دستگاه مدیر دستگاه همپا
در اندروید 16، API های جدیدی برای اتصال به سرویس برنامه همراه شما معرفی می شوند. هنگامی که BLE در محدوده باشد و بلوتوث وصل باشد، سرویس محدود می شود و زمانی که BLE خارج از محدوده باشد یا بلوتوث قطع شده باشد، سرویس قطع خواهد شد. برنامه یک "onDevicePresenceEvent()" جدید بر اساس انواع DevicePresenceEvent دریافت می کند. جزئیات بیشتر را می توان در 'startObservingDevicePresence(ObservingDevicePresenceRequest)' یافت.
رسانه
Android 16 شامل ویژگیهای متنوعی است که تجربه رسانه را بهبود میبخشد.
بهبودهای انتخابگر عکس
انتخابگر عکس راهی ایمن و داخلی را در اختیار کاربران قرار میدهد تا به برنامه شما اجازه دسترسی به تصاویر و ویدیوهای انتخابی از فضای ذخیرهسازی محلی و ابری را به جای کل کتابخانه رسانهای خود بدهد. با استفاده از ترکیبی از اجزای سیستم مدولار از طریق بهروزرسانیهای سیستم Google و سرویسهای Google Play ، به Android 4.4 (سطح API 19) پشتیبانی میشود. ادغام فقط به چند خط کد با کتابخانه Android Jetpack مرتبط نیاز دارد.
اندروید 16 شامل بهبودهای زیر در انتخابگر عکس است:
- انتخابگر عکس جاسازی شده : API های جدیدی که برنامه ها را قادر می سازد انتخابگر عکس را در سلسله مراتب نمای خود جاسازی کنند. این به آن اجازه می دهد تا مانند یک بخش یکپارچه تر از برنامه احساس کند در حالی که همچنان از جداسازی فرآیند استفاده می کند که به کاربران امکان می دهد رسانه ها را بدون نیاز به مجوزهای بیش از حد گسترده انتخاب کنند. برای به حداکثر رساندن سازگاری در نسخههای پلتفرم و سادهسازی یکپارچهسازی خود، اگر میخواهید انتخابگر عکس تعبیهشده را ادغام کنید، باید از کتابخانه Jetpack اندروید آینده استفاده کنید.
- جستجوی ابری در انتخابگر عکس : APIهای جدیدی که جستجو از ارائه دهنده رسانه ابری را برای انتخابگر عکس Android امکان پذیر می کند . قابلیت جستجو در انتخابگر عکس به زودی ارائه می شود.
ویدیو حرفهای پیشرفته
Android 16 introduces support for the Advanced Professional Video (APV) codec which is designed to be used for professional level high quality video recording and post production.
The APV codec standard has the following features:
- Perceptually lossless video quality (close to raw video quality)
- Low complexity and high throughput intra-frame-only coding (without pixel domain prediction) to better support editing workflows
- Support for high bit-rate range up to a few Gbps for 2K, 4K and 8K resolution content, enabled by a lightweight entropy coding scheme
- Frame tiling for immersive content and for enabling parallel encoding and decoding
- Support for various chroma sampling formats and bit-depths
- Support for multiple decoding and re-encoding without severe visual quality degradation
- Support multi-view video and auxiliary video like depth, alpha, and preview
- Support for HDR10/10+ and user-defined metadata
A reference implementation of APV is provided through the OpenAPV project. Android 16 will implement support for the APV 422-10 Profile that provides YUV 422 color sampling along with 10-bit encoding and for target bitrates of up to 2Gbps.
حریم خصوصی
Android 16 شامل ویژگیهای متنوعی است که به توسعهدهندگان نرمافزار کمک میکند از حریم خصوصی کاربر محافظت کنند.
بهروزرسانیهای Health Connect
Health Connect ACTIVITY_INTENSITY را اضافه می کند، یک نوع داده که بر اساس دستورالعمل های سازمان بهداشت جهانی در مورد فعالیت متوسط و شدید تعریف شده است. هر رکورد به زمان شروع، زمان پایان و اینکه آیا شدت فعالیت متوسط یا شدید است نیاز دارد.
Health Connect همچنین حاوی API های به روز شده ای است که از سوابق پزشکی پشتیبانی می کنند. این به برنامهها اجازه میدهد سوابق پزشکی را در قالب FHIR با رضایت صریح کاربر بخوانند و بنویسند.
«جعبه شنی حریم خصوصی» در Android
Android 16 دارای آخرین نسخه Privacy Sandbox در Android است که بخشی از کار مداوم ما برای توسعه فناوریهایی است که کاربران بدانند حریم خصوصی آنها محافظت میشود. وبسایت ما اطلاعات بیشتری درباره برنامه بتای برنامهنویس Android Privacy Sandbox دارد تا به شما در شروع کار کمک کند. SDK Runtime را بررسی کنید که به SDK ها اجازه می دهد در یک محیط زمان اجرا اختصاصی جدا از برنامه ای که در حال ارائه آن هستند اجرا شوند، و حفاظت های قوی تری در مورد جمع آوری و به اشتراک گذاری داده های کاربر ارائه می دهد.
امنیت
Android 16 شامل ویژگیهایی است که به شما کمک میکند امنیت برنامهتان را افزایش دهید و از دادههای برنامهتان محافظت کنید.
میانای برنامهسازی کاربردی همرسانی کلید
Android 16 API هایی را اضافه می کند که از دسترسی به اشتراک گذاری کلیدهای Android Keystore با سایر برنامه ها پشتیبانی می کنند. کلاس جدید KeyStoreManager از اعطای و لغو دسترسی به کلیدها توسط اپلیکیشن uid پشتیبانی میکند و شامل یک API برای برنامهها برای دسترسی به کلیدهای مشترک است.
ضریبهای شکل دستگاه
Android 16 به برنامههایتان پشتیبانی لازم را میدهد تا بیشترین بهره را از ابعاد Android ببرند.
چارچوب استاندارد کیفیت تصویر و صدا برای تلویزیونها
بسته MediaQuality جدید در اندروید 16 مجموعهای از APIهای استاندارد شده را برای دسترسی به پروفایلهای صوتی و تصویری و تنظیمات مربوط به سختافزار در معرض دید قرار میدهد. این به برنامههای پخش جریانی اجازه میدهد تا نمایهها را پرس و جو کرده و آنها را به صورت پویا در رسانه اعمال کنند:
- فیلمهایی که با دامنه دینامیکی وسیعتر تسلط دارند، برای دیدن جزئیات ظریف در سایهها و تنظیم با نور محیط، به دقت رنگ بیشتری نیاز دارند، بنابراین نمایهای که دقت رنگ را بر روشنایی ترجیح میدهد مناسب باشد.
- رویدادهای ورزشی زنده اغلب با محدوده دینامیکی باریک تسلط دارند، اما اغلب در نور روز تماشا میشوند، بنابراین نمایهای که روشنایی را بر دقت رنگ ترجیح میدهد، میتواند نتایج بهتری به همراه داشته باشد.
- محتوای کاملاً تعاملی حداقل پردازش را برای کاهش تأخیر میخواهد و نرخ فریم بالاتری میخواهد، به همین دلیل است که بسیاری از تلویزیونها با نمایه بازی عرضه میشوند.
API به برنامهها اجازه میدهد بین پروفایلها و کاربران جابهجا شوند تا از تنظیم تلویزیونهای پشتیبانیشده برای مطابقت با محتوای آنها لذت ببرند.
بینالمللیسازی
Android 16 ویژگیها و قابلیتهایی را اضافه میکند که تجربه کاربر را هنگام استفاده از دستگاه به زبانهای مختلف تکمیل میکند.
نوشتار عمودی
اندروید 16 پشتیبانی سطح پایینی را برای رندر و اندازه گیری متن به صورت عمودی اضافه می کند تا پشتیبانی از نوشتن عمودی اساسی را برای توسعه دهندگان کتابخانه فراهم کند. این به ویژه برای زبان هایی مانند ژاپنی که معمولاً از سیستم های نوشتاری عمودی استفاده می کنند مفید است. یک پرچم جدید، VERTICAL_TEXT_FLAG ، به کلاس Paint اضافه شده است. وقتی این پرچم با استفاده از Paint.setFlags تنظیم میشود، APIهای اندازهگیری متن Paint پیشرفتهای عمودی را به جای پیشرفتهای افقی گزارش میکنند و Canvas متن را به صورت عمودی ترسیم میکند.
val text = "「春は、曙。」"
Box(
Modifier.padding(innerPadding).background(Color.White).fillMaxSize().drawWithContent {
drawIntoCanvas { canvas ->
val paint = Paint().apply { textSize = 64.sp.toPx() }
// Draw text vertically
paint.flags = paint.flags or VERTICAL_TEXT_FLAG
val height = paint.measureText(text)
canvas.nativeCanvas.drawText(
text,
0,
text.length,
size.width / 2,
(size.height - height) / 2,
paint
)
}
}
) {}
سفارشیسازی سیستم اندازهگیری
کاربران اکنون می توانند سیستم اندازه گیری خود را در تنظیمات برگزیده منطقه ای در تنظیمات سفارشی کنند. تنظیمات برگزیده کاربر به عنوان بخشی از کد محلی گنجانده شده است، بنابراین میتوانید یک BroadcastReceiver در ACTION_LOCALE_CHANGED ثبت کنید تا با تغییر تنظیمات منطقهای، تغییرات پیکربندی منطقه را مدیریت کند.
استفاده از قالبکنندهها میتواند به تطابق با تجربه محلی کمک کند. به عنوان مثال، "0.5 اینچ" در انگلیسی (ایالات متحده)، "12.7 میلی متر" برای کاربری است که تلفن خود را روی انگلیسی (دانمارک) تنظیم کرده است یا از تلفن خود به زبان انگلیسی (ایالات متحده) با سیستم متریک به عنوان اولویت سیستم اندازه گیری استفاده می کند.
برای پیدا کردن این تنظیمات، برنامه تنظیمات را باز کنید و به سیستم > زبانها و منطقه بروید.