اندروید ۱۳ ویژگیها و APIهای جدید و فوقالعادهای را برای توسعهدهندگان معرفی میکند. بخشهای زیر به شما کمک میکنند تا در مورد ویژگیهای برنامههای خود اطلاعات کسب کنید و با APIهای مرتبط شروع به کار کنید.
برای مشاهده لیست کاملی از APIهای جدید، اصلاحشده و حذفشده، گزارش تفاوت API را مطالعه کنید. برای جزئیات بیشتر در مورد APIهای جدید، به مرجع API اندروید مراجعه کنید - APIهای جدید برای مشاهدهپذیری برجسته شدهاند. همچنین، برای کسب اطلاعات در مورد حوزههایی که تغییرات پلتفرم ممکن است بر برنامههای شما تأثیر بگذارد، حتماً تغییرات رفتاری اندروید ۱۳ را برای برنامههایی که اندروید ۱۳ را هدف قرار میدهند و برای همه برنامهها بررسی کنید.
بهرهوری و ابزارهای توسعهدهندگان
آیکونهای برنامه با تمهای مختلف

با شروع اندروید ۱۳، میتوانید آیکونهای برنامهها را با تمهای مختلف تنظیم کنید. با این ویژگی، آیکونهای برنامهها در لانچرهای پشتیبانیشده اندروید، رنگی میشوند تا رنگ تصویر زمینه و سایر تمهای انتخابی کاربر را به ارث ببرند.
برای پشتیبانی از این ویژگی، برنامه شما باید هم یک آیکون تطبیقی و هم یک آیکون برنامه تک رنگ ارائه دهد و از عنصر <adaptive-icon> در مانیفست به آیکون برنامه تک رنگ اشاره کند. اگر کاربر آیکونهای برنامه با تم را فعال کرده باشد (به عبارت دیگر، گزینه آیکونهای با تم را در تنظیمات سیستم فعال کرده باشد) و لانچر از این ویژگی پشتیبانی کند، سیستم از رنگ تصویر زمینه و تم انتخابی کاربر برای تعیین رنگ سایه استفاده میکند و سپس آن را به آیکون برنامه تک رنگ اعمال میکند.
صفحه اصلی در هیچ یک از سناریوهای زیر، آیکون برنامه با تم خاص را نمایش نمیدهد و در عوض، آیکون برنامه تطبیقی یا استاندارد را نمایش میدهد:
- اگر کاربر آیکونهای برنامه با تم را فعال نکرده باشد
- اگر برنامه شما آیکون تک رنگ ندارد
- اگر لانچر از آیکونهای برنامه با تم پشتیبانی نمیکند
برای جزئیات و دستورالعملهای بیشتر، به آیکونهای تطبیقی مراجعه کنید.
تنظیمات زبان برای هر برنامه

در بسیاری از موارد، کاربران چندزبانه زبان سیستم خود را روی یک زبان - مانند انگلیسی - تنظیم میکنند، اما میخواهند زبانهای دیگری را برای برنامههای خاص، مانند هلندی، چینی یا هندی، انتخاب کنند. برای کمک به برنامهها در ارائه تجربه بهتر برای این کاربران، اندروید ۱۳ ویژگیهای زیر را برای برنامههایی که از چندین زبان پشتیبانی میکنند، معرفی میکند:
تنظیمات سیستم : یک مکان متمرکز که کاربران میتوانند در آن زبان دلخواه خود را برای هر برنامه انتخاب کنند.
برنامه شما باید ویژگی
android:localeConfigرا در مانیفست برنامه خود اعلام کند تا به سیستم بگوید که از چندین زبان پشتیبانی میکند. برای کسب اطلاعات بیشتر، به دستورالعملهای ایجاد یک فایل منبع و اعلام آن در فایل مانیفست برنامه خود مراجعه کنید.APIهای اضافی : این APIهای عمومی، مانند متدهای
setApplicationLocales()وgetApplicationLocales()درLocaleManager، به برنامهها اجازه میدهند در زمان اجرا، زبانی متفاوت از زبان سیستم تنظیم کنند.این APIها به طور خودکار با تنظیمات سیستم همگامسازی میشوند؛ بنابراین، برنامههایی که از این APIها برای ایجاد انتخابگرهای زبان سفارشی درون برنامهای استفاده میکنند، تضمین میکنند که کاربرانشان صرف نظر از محل انتخاب تنظیمات زبان، تجربه کاربری ثابتی داشته باشند. APIهای عمومی همچنین به شما کمک میکنند تا میزان کدهای تکراری را کاهش دهید، از APKهای تقسیمشده پشتیبانی میکنند و از پشتیبانگیری خودکار برای برنامهها برای ذخیره تنظیمات زبان کاربر در سطح برنامه پشتیبانی میکنند.
برای سازگاری با نسخههای قبلی اندروید، APIهای معادل در AndroidX نیز موجود است. توصیه میکنیم از APIهای اضافه شده در Appcompat 1.6.0-beta01 یا بالاتر استفاده کنید.
برنامههایی که از چندین زبان پشتیبانی نمیکنند، تحت تأثیر این تغییرات قرار نمیگیرند.
پشتیبانی از متن و زبان بهبود یافته
اندروید ۱۳ شامل چندین ویژگی بهبود متن و زبان است که به شما کمک میکند تجربهای روانتر ارائه دهید، که بخشهای زیر آنها را شرح میدهند:
خط فاصلهگذاری سریعتر
خط فاصلهگذاری، خواندن متن پیچیدهشده را آسانتر میکند و به تطبیقپذیری رابط کاربری شما کمک میکند. از اندروید ۱۳ به بعد، عملکرد خط فاصلهگذاری تا ۲۰۰٪ بهینهسازی شده است، بنابراین میتوانید آن را در TextView خود فعال کنید، تقریباً بدون هیچ تأثیری بر عملکرد رندر. برای فعال کردن خط فاصلهگذاری سریعتر، از فرکانسهای fullFast یا normalFast در setHyphenationFrequency() استفاده کنید.
API های تبدیل متن
افرادی که به زبانهایی مانند ژاپنی و چینی صحبت میکنند، از روشهای ورودی حروف آوایی استفاده میکنند که اغلب باعث کند شدن جستجو و ویژگیهایی مانند تکمیل خودکار میشوند. در اندروید ۱۳، برنامهها میتوانند API تبدیل متن جدید را فراخوانی کنند تا کاربران بتوانند سریعتر و آسانتر آنچه را که به دنبال آن هستند پیدا کنند. به عنوان مثال، پیش از این، جستجو برای یک کاربر ژاپنی مستلزم انجام این مراحل بود:
- هیراگانا را به عنوان تلفظ آوایی عبارت جستجوی خود (مانند نام یک مکان یا یک برنامه) وارد کنید
- با استفاده از صفحه کلید، حروف هیراگانا را به کانجی تبدیل کنید
- با استفاده از کاراکترهای کانجی دوباره جستجو کنید
- در نهایت نتایج جستجوی آنها را دریافت کنید
با API جدید تبدیل متن، کاربران ژاپنی میتوانند هیراگانا تایپ کنند و بلافاصله نتایج جستجوی کانجی را به صورت زنده مشاهده کنند و مراحل ۲ و ۳ را رد کنند.
ارتفاع خطوط برای حروف غیر لاتین بهبود یافته است
اندروید ۱۳ با استفاده از ارتفاع خط متناسب با هر زبان، نمایش اسکریپتهای غیر لاتین (مانند تامیل، برمهای، تلوگو و تبتی) را بهبود میبخشد. ارتفاعهای خط جدید از بریده شدن متن جلوگیری کرده و موقعیت قرارگیری کاراکترها را بهبود میبخشند. برنامه شما میتواند تنها با هدف قرار دادن اندروید ۱۳ از این پیشرفتها بهرهمند شود. هنگام استفاده از فاصله خطوط جدید، حتماً برنامههای خود را آزمایش کنید زیرا این تغییرات ممکن است بر رابط کاربری شما در زبانهای غیر لاتین تأثیر بگذارد.

بهبود بستهبندی متن ژاپنی
از اندروید ۱۳ به بعد، TextViewها میتوانند متن را به جای کاراکتر، بر اساس Bunsetsu (کوچکترین واحد کلمات که طبیعی به نظر میرسد) یا عبارات، دستهبندی کنند تا برنامههای ژاپنی خواناتر و مرتبتر باشند. میتوانید با استفاده از android:lineBreakWordStyle="phrase" در TextViewها، از این دستهبندی بهرهمند شوید.

بهروزرسانیهای کتابخانه یونیکد
اندروید ۱۳ جدیدترین بهبودها، اصلاحات و تغییراتی را که در Unicode ICU 70 ، Unicode CLDR 40 و Unicode 14.0 گنجانده شده است، اضافه میکند.
در اینجا چند تغییر قابل توجه وجود دارد:
- انگلیسی (کانادا)
en‑CAو انگلیسی (جمهوری فیلیپین)en‑PHهر دو از منابع ترجمه انگلیسی (ایالات متحده)enاستفاده میکنند، زمانی که هیچ منبع ترجمهای در دسترس نباشد، به جای انگلیسی (بریتانیا)en‑GB. - دسته جمعهای
manyبرایesاسپانیایی،itایتالیایی،ptپرتغالی وpt‑PTپرتغالی (پرتغال) معرفی شده است. مشابه فرانسوی که در CLDR نسخه 38 معرفی شد، این دسته برای اعداد بزرگ استفاده میشود.
فونتهای وکتور رنگی

از اندروید ۱۳ به بعد، سیستم از رندر فونتهای COLR نسخه ۱ (COLRv1) پشتیبانی میکند و ایموجیهای سیستم را به فرمت COLRv1 بهروزرسانی میکند. COLRv1 یک فرمت فونت بسیار فشرده است که به سرعت و به طور واضح در هر اندازهای رندر میشود.
برای اکثر برنامهها، سیستم همه چیز را مدیریت میکند و COLRv1 به درستی کار میکند. با این حال، اگر برنامه شما رندر متن خود را پیادهسازی کرده و از فونتهای سیستم استفاده میکند، توصیه میکنیم رندر ایموجی را آزمایش کنید.
برای کسب اطلاعات بیشتر در مورد COLRv1، به منابع زیر مراجعه کنید:
API قرارگیری تنظیمات سریع
تنظیمات سریع در پنل اعلانها، راهی آسان برای کاربران است تا تنظیمات را تغییر دهند یا بدون ترک محیط برنامه، اقدامات سریعی انجام دهند. برای برنامههایی که کاشیهای سفارشی ارائه میدهند، ما کشف و افزودن کاشیهای شما به تنظیمات سریع را برای کاربران آسانتر میکنیم. با استفاده از یک API جدید برای قرار دادن کاشی ، برنامه شما اکنون میتواند از کاربر بخواهد که کاشی سفارشی خود را مستقیماً به مجموعه کاشیهای تنظیمات سریع فعال اضافه کند. یک پنجره گفتگوی سیستمی جدید به کاربر اجازه میدهد کاشی را در یک مرحله و بدون ترک برنامه، به جای رفتن به تنظیمات سریع برای افزودن کاشی، اضافه کند.

پیشنمایش کلیپبورد
از اندروید ۱۳ به بعد، سیستم هنگام اضافه شدن محتوا به کلیپبورد، یک تأیید بصری استاندارد نمایش میدهد. این تأیید جدید موارد زیر را انجام میدهد:
- تأیید میکند که محتوا با موفقیت کپی شده است.
- پیشنمایشی از محتوای کپیشده ارائه میدهد.
این ویژگی، اعلانهای مختلف نمایش داده شده توسط برنامهها را پس از کپی کردن، استانداردسازی میکند و به کاربران کنترل بیشتری بر کلیپبورد خود ارائه میدهد. برای اطلاعات بیشتر، به صفحه ویژگی کپی و چسباندن مراجعه کنید.

ژست پیشبینانهی بازگشت
اندروید ۱۳ یک ژست حرکتی پیشبینیکننده برای بازگشت به عقب را برای دستگاههای اندرویدی مانند تلفنها، صفحه نمایشهای بزرگ و دستگاههای تاشو معرفی میکند. پشتیبانی از این ویژگی مستلزم بهروزرسانی برنامه شماست.
برای مشاهده مستندات دقیق، به «برنامه خود را برای پشتیبانی از حرکت پیشبینیکننده بازگشت بهروزرسانی کنید» مراجعه کنید. همچنین میتوانید codelab ما را امتحان کنید.
بلوتوث LE صوتی
صدای کممصرف (LE) یک صدای بیسیم است که برای جایگزینی بلوتوث کلاسیک ساخته شده و موارد استفاده و توپولوژیهای اتصال خاصی را فعال میکند. این فناوری به کاربران امکان میدهد صدای خود را با دوستان و خانواده به اشتراک بگذارند و پخش کنند، یا برای کسب اطلاعات، سرگرمی یا دسترسی در پخشهای عمومی مشترک شوند. این فناوری به گونهای طراحی شده است که کاربران بتوانند صدای با کیفیت بالا را بدون کاهش عمر باتری دریافت کنند و بتوانند به طور یکپارچه بین موارد استفاده مختلف که با بلوتوث کلاسیک امکانپذیر نیست، جابجا شوند. از اندروید ۱۳ به بعد، این سیستم شامل پشتیبانی داخلی از صدای LE میشود، بنابراین توسعهدهندگان این قابلیتها را به صورت رایگان در دستگاههای سازگار دریافت میکنند.
MIDI 2.0
از اندروید ۱۳ به بعد، این سیستم از استاندارد MIDI 2.0 پشتیبانی میکند، از جمله امکان اتصال سختافزار MIDI 2.0 از طریق USB. این استاندارد ویژگیهایی مانند افزایش وضوح برای کنترلرها، پشتیبانی بهتر از لحن غیر غربی و عملکرد رساتر با استفاده از کنترلرهای تک نت را ارائه میدهد.
بهبود کارایی صفحه نمایش اسپلش
اندروید ۱۳ کارایی صفحات نمایش متحرک را در رابط برنامهنویسی کاربردی Splash Screen بهبود میبخشد:
سیستم مدت زمان انیمیشن را مستقیماً از
AnimatedVectorDrawableاستنباط میکند. قبل از اندروید ۱۳، لازم بودwindowSplashScreenAnimationDurationمستقیماً تنظیم شود.برای کنترل بیشتر روی اینکه آیا برنامه شما همیشه آیکون را در صفحه شروع در اندروید ۱۳ و بالاتر نمایش میدهد یا خیر، از ویژگی جدید
windowSplashScreenBehaviorاستفاده کنید.
برای مشاهده مستندات دقیق، به Splash Screens مراجعه کنید.
بهینهسازیهای هنری
در اندروید ۱۳ (سطح API ۳۳) و بالاتر، ART تغییر به/از کد بومی را بسیار سریعتر میکند، به طوری که فراخوانیهای JNI اکنون تا ۲.۵ برابر سریعتر شدهاند. پردازش مرجع زمان اجرا نیز مجدداً مورد بررسی قرار گرفته تا عمدتاً غیر مسدودکننده باشد، که این امر باعث کاهش بیشتر jank میشود. علاوه بر این، میتوانید از API عمومی Reference.refersTo() برای بازیابی سریعتر اشیاء غیرقابل دسترس استفاده کنید و متوجه خواهید شد که مفسر اکنون به لطف جستجوی بهینه کلاسها و متدها، سریعتر است. ART همچنین تأیید بایت کد بیشتری را در زمان نصب انجام میدهد و از هزینه تأیید در زمان اجرا جلوگیری میکند و زمان راهاندازی برنامه را سریع نگه میدارد.
حریم خصوصی و امنیت
صادرات امنتر گیرندههای ثبتشده در متن
برای کمک به ایمنتر کردن گیرندههای زمان اجرا، اندروید ۱۳ این قابلیت را به برنامه شما اضافه میکند که مشخص کند آیا یک گیرنده پخش ثبتشده باید صادر شود و برای سایر برنامههای روی دستگاه قابل مشاهده باشد یا خیر. در نسخههای قبلی اندروید، هر برنامهای روی دستگاه میتوانست یک پخش محافظتنشده را به یک گیرنده ثبتشده پویا ارسال کند، مگر اینکه آن گیرنده توسط مجوز امضا محافظت شده باشد.
این پیکربندی خروجی در برنامههایی که حداقل یکی از موارد زیر را انجام میدهند، موجود است:
- از کلاس
ContextCompatاز نسخه ۱.۹.۰ یا بالاتر کتابخانه AndroidX Core استفاده کنید. - اندروید ۱۳ یا بالاتر را هدف قرار دهید.
انتخابگر عکس
اندروید ۱۳ (سطح API ۳۳) و بالاتر شامل یک قابلیت انتخاب عکس است. وقتی برنامه شما انتخاب عکس را اجرا میکند، کاربران تصاویر و ویدیوهای خاصی را برای اشتراکگذاری با برنامه شما، مانند تصاویر پروفایل، انتخاب میکنند، به جای اینکه به برنامه شما دسترسی مشاهده کل کتابخانه رسانه را بدهند. این روش توصیه شده برای دسترسی به عکسها و ویدیوهای کاربر است.
انتخابگر عکس، حریم خصوصی پیشرفتهای را برای کاربران فراهم میکند، زیرا برنامه شما نیازی به اعلام هیچ مجوز زمان اجرا ندارد. علاوه بر این، انتخابگر عکس یک رابط کاربری استاندارد و داخلی برای برنامهها فراهم میکند که تجربه کاربری سازگارتری را ایجاد میکند.
مجوز جدید زمان اجرا برای دستگاههای وایفای مجاور
اندروید ۱۳ (سطح API ۳۳) یک مجوز زمان اجرا جدید در گروه مجوز NEARBY_DEVICES برای برنامههایی که اتصالات یک دستگاه را به نقاط دسترسی نزدیک از طریق Wi-Fi مدیریت میکنند، معرفی میکند. این برنامهها باید هنگام فراخوانی چندین API مختلف Wi-Fi ، مجوز جدید NEARBY_WIFI_DEVICES را اعلام کنند. علاوه بر این، تا زمانی که برنامهها مکان فیزیکی را از APIهای Wi-Fi استخراج نکنند، نیازی به اعلام مجوز ACCESS_FINE_LOCATION هنگام هدف قرار دادن اندروید ۱۳ یا بالاتر ندارند.
درباره مجوز دستگاههای Wi-Fi نزدیک بیشتر بدانید.
اجازه جدید برای استفاده از آلارمهای دقیق
اگر برنامه شما اندروید ۱۳ یا بالاتر را هدف قرار میدهد، میتوانید از مجوز USE_EXACT_ALARM استفاده کنید که به طور خودکار به برنامه شما اعطا میشود. با این حال، برای اینکه برنامه شما بتواند از این مجوز استفاده کند، باید حداقل یکی از معیارهای زیر را داشته باشد:
- برنامه شما یک برنامه ساعت زنگ دار یا یک برنامه تایمر است.
- برنامه شما یک برنامه تقویم است که اعلانها را برای رویدادهای آینده نشان میدهد.
اگر برنامه شما دقیقاً آلارمها را تنظیم میکند اما هیچکدام از موارد نشان داده شده در لیست قبلی را برآورده نمیکند، به جای آن، مجوز SCHEDULE_EXACT_ALARM را اعلام کنید و برای موقعیتی که کاربر دسترسی به برنامه شما را رد میکند، آماده باشید.
مجوزهای قابل تنزل به سطح توسعهدهنده
از اندروید ۱۳ به بعد، برنامه شما میتواند دسترسی به مجوزهای زمان اجرا که استفاده نشدهاند را لغو کند . این API به برنامه شما اجازه میدهد تا وظایف مربوط به افزایش حریم خصوصی مانند موارد زیر را انجام دهد:
- مجوزهای استفاده نشده را حذف کنید.
- به بهترین شیوههای مجوزدهی پایبند باشید، که اعتماد کاربر را بهبود میبخشد. میتوانید پنجرهای را برای نمایش مجوزهایی که به صورت پیشگیرانه لغو کردهاید، در نظر بگیرید.
طرح امضای APK نسخه ۳.۱
اندروید ۱۳ پشتیبانی از APK Signature Scheme v3.1 را اضافه میکند که نسبت به APK Signature Scheme v3 موجود بهبود یافته است. این طرح برخی از مشکلات شناخته شده APK Signature Scheme v3 در مورد چرخش را برطرف میکند . به طور خاص، طرح امضای v3.1 از هدفگیری نسخه SDK پشتیبانی میکند که به چرخش اجازه میدهد تا نسخه بعدی پلتفرم را هدف قرار دهد.
طرح امضای نسخه ۳.۱ از یک شناسه بلوک استفاده میکند که در نسخه ۱۲L یا پایینتر قابل شناسایی نیست. بنابراین، این پلتفرم رفتار امضاکننده زیر را اعمال میکند:
- دستگاههایی که اندروید ۱۳ یا بالاتر را اجرا میکنند، از امضاکنندهی چرخشی در بلوک نسخه ۳.۱ استفاده میکنند.
- دستگاههایی که نسخههای قدیمیتر اندروید را اجرا میکنند، امضای چرخشی را نادیده میگیرند و در عوض از امضای اصلی در بلوک v3.0 استفاده میکنند.
برنامههایی که هنوز کلید امضای خود را تغییر ندادهاند، نیازی به هیچ اقدام اضافی ندارند. هر زمان که این برنامهها تغییر را انتخاب کنند، سیستم به طور پیشفرض طرح امضای نسخه ۳.۱ را اعمال میکند.
برنامههایی که قبلاً تغییر یافتهاند و میخواهند به استفاده از کلید امضای تغییر یافته خود در بلوک امضای نسخه ۳.۰ ادامه دهند، باید فراخوانی apksigner خود را بهروزرسانی کنند:
apksigner sign --ks keystore.jks | --key key.pk8 --cert cert.x509.pem --rotation-min-sdk-version API_LEVEL [signer_options] app-name.apk
... که در آن API_LEVEL برابر با ۳۲ یا کمتر است.
گزارش خطای بهتر در Keystore و KeyMint
برای برنامههایی که کلید تولید میکنند، Keystore و KeyMint اکنون شاخصهای خطای دقیقتر و جزئیتری ارائه میدهند. ما یک سلسله مراتب کلاس استثنا را تحت java.security.ProviderException اضافه کردهایم، با استثنائات خاص اندروید که شامل کدهای خطای Keystore/KeyMint میشود و اینکه آیا خطا قابل امتحان مجدد است یا خیر. همچنین میتوانید روشهای تولید و استفاده از کلید (امضا، رمزگذاری) را برای ایجاد استثنائات جدید تغییر دهید. گزارش خطای بهبود یافته محدود به تولید کلید نیست و اکنون باید آنچه را که برای امتحان مجدد تولید کلید نیاز دارید، در اختیار شما قرار دهد.
پشتیبانی از تبلت و صفحه نمایش بزرگ
اندروید ۱۳ بر اساس بهینهسازیهای تبلت که در اندروید ۱۲ و نسخه ۱۲L معرفی شده بود، ساخته شده است - از جمله بهینهسازی رابط کاربری سیستم، چندوظیفگی بهتر و حالتهای سازگاری بهبود یافته. به عنوان بخشی از آزمایش خود، مطمئن شوید که برنامههای شما در تبلتها و سایر دستگاههای صفحه بزرگ به بهترین شکل ممکن نمایش داده میشوند.
برای اطلاعات بیشتر در مورد ویژگیهای جدید و مواردی که باید آزمایش شوند، به صفحه پشتیبانی تبلت و صفحه نمایشهای بزرگ مراجعه کنید.
گرافیک
شیدرهای قابل برنامهریزی

از اندروید ۱۳ به بعد، این سیستم شامل پشتیبانی از اشیاء RuntimeShader قابل برنامهریزی است که رفتار آنها با استفاده از زبان سایهزنی گرافیکی اندروید ( AGSL ) تعریف میشود. AGSL بخش زیادی از سینتکس خود را با GLSL به اشتراک میگذارد، اما در موتور رندر اندروید برای سفارشیسازی نقاشی در بوم اندروید و همچنین فیلتر کردن محتوای View کار میکند. اندروید به صورت داخلی از این سایهزنها برای پیادهسازی جلوههای موجدار ، تاری و کشیدن اسکرول استفاده میکند. اندروید ۱۳ و بالاتر شما را قادر میسازد جلوههای پیشرفته مشابهی را برای برنامه خود ایجاد کنید.
پیشرفتهای طراح رقص
اندروید ۱۳ متدهای API عمومی را به Choreographer و ASurfaceControl معرفی میکند که اطلاعات بیشتری در مورد جدول زمانی فریمهای ممکن در اختیار برنامهها قرار میدهد و زمینه بیشتری را در مورد چرخه عمر فریم به SurfaceFlinger اضافه میکند. مشابه قبل، برنامهها میتوانند یک callback به Choreographer ارسال کنند و اطلاعات جدول زمانی فریم را دریافت کنند. در اندروید ۱۳ (سطح API ۳۳)، Choreographer چندین زمان ارائه ممکن و مهلتهای فریم مربوطه را برمیگرداند. برنامهها میتوانند زمان ارائه را انتخاب کنند و متعاقباً SurfaceFlinger از انتخاب خود مطلع کنند . سپس SurfaceFlinger سعی نمیکند تراکنشها یا بافرهای قفل را قبل از زمان ارائه مورد نظر اعمال کند.

دوربین
ضبط ویدئو HDR
از اندروید ۱۳ به بعد، APIهای Camera2 از ضبط ویدیوی HDR پشتیبانی میکنند که به شما امکان میدهد محتوای ویدیویی HDR را با استفاده از دوربین خود پیشنمایش و ضبط کنید. در مقایسه با SDR، HDR طیف وسیعتری از رنگها را ارائه میدهد و دامنه دینامیکی مؤلفه روشنایی را افزایش میدهد (از ۱۰۰ کاندلا بر متر مربع فعلی به ۱۰۰۰ کاندلا بر متر مربع). این امر منجر به کیفیت ویدیویی میشود که با رنگهای غنیتر، هایلایتهای روشنتر و سایههای تیرهتر، بیشتر به زندگی واقعی نزدیک است.
برای کسب اطلاعات بیشتر در مورد ضبط ویدیوی HDR، به مستندات ضبط ویدیوی HDR مراجعه کنید.
رسانه
صدای فضایی
صدای فضایی یک تجربه صوتی فراگیر است که باعث میشود محتوای رسانه برای کاربران شما واقعیتر به نظر برسد. برای جزئیات بیشتر در مورد نحوه ادغام با این ویژگی، به مستندات صدای فضایی ما مراجعه کنید.
مسیریابی صوتی پیشبینیشده
برای کمک به برنامههای رسانهای در شناسایی نحوه مسیریابی صدایشان، اندروید ۱۳ APIهای مسیریابی صدا را در کلاس AudioManager معرفی میکند. API مربوط به getAudioDevicesForAttributes() به شما امکان میدهد لیستی از دستگاههایی را که ممکن است برای پخش صدای مشخص شده استفاده شوند، بازیابی کنید و API getDirectProfilesForAttributes() به شما کمک میکند تا بفهمید که آیا جریان صوتی شما میتواند مستقیماً پخش شود یا خیر. از این APIها برای تعیین بهترین AudioFormat برای آهنگ صوتی خود استفاده کنید.
دسترسیپذیری
توضیحات صوتی
اندروید ۱۳ (سطح API ۳۳) یک اولویت دسترسی جدید در سطح سیستم معرفی میکند که به کاربران امکان میدهد توضیحات صوتی را در تمام برنامهها فعال کنند. توضیحات صوتی یک آهنگ روایت اضافی است که شامل یک راوی است که در طول ارائه صحبت میکند و آنچه را که روی صفحه در طول مکثهای طبیعی صدا اتفاق میافتد، توصیف میکند. برنامهها میتوانند با پرسوجو از isAudioDescriptionRequested() ، همانطور که در قطعه کد زیر نشان داده شده است، ترجیح کاربر برای آهنگهای توصیف صوتی را دنبال کنند:
کاتلین
private lateinit var accessibilityManager: AccessibilityManager // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager::class.java) // Where your media player is initialized if (accessibilityManager.isAudioDescriptionRequested) { // User has requested to enable audio descriptions }
جاوا
private AccessibilityManager accessibilityManager; // In onCreate(): accessibilityManager = getSystemService(AccessibilityManager.class); // Where your media player is initialized if(accessibilityManager.isAudioDescriptionRequested()) { // User has requested to enable audio descriptions }
برنامهها میتوانند با اضافه کردن یک شنونده به AccessbilityManager تغییر تنظیمات کاربر را رصد کنند:
کاتلین
private val listener = AccessibilityManager.AudioDescriptionRequestedChangeListener { enabled -> // Preference changed; reflect its state in your media player } override fun onStart() { super.onStart() accessibilityManager.addAudioDescriptionRequestedChangeListener(mainExecutor, listener) } override fun onStop() { super.onStop() accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener) }
جاوا
private AccessibilityManager.AudioDescriptionRequestedChangeListener listener = enabled -> { // Preference changed; reflect its state in your media player }; @Override protected void onStart() { super.onStart(); accessibilityManager.addAudioDescriptionRequestedChangeListener(getMainExecutor(), listener); } @Override protected void onStop() { super.onStop(); accessibilityManager.removeAudioDescriptionRequestedChangeListener(listener); }
عملکرد اصلی
بهروزرسانیهای OpenJDK 11
اندروید ۱۳ کار بهروزرسانی کتابخانههای اصلی اندروید را برای هماهنگی با نسخه OpenJDK 11 LTS آغاز میکند که شامل بهروزرسانی کتابخانهها و پشتیبانی از زبان جاوا ۱۱ برای توسعهدهندگان اپلیکیشن و پلتفرم میشود. تغییرات کتابخانه اصلی معرفیشده در اندروید ۱۳ از طریق بهروزرسانی سیستمی گوگل پلی برای ماژول اصلی ART برای دستگاههای اندروید ۱۲ نیز در دسترس خواهد بود.
اندروید ۱۳ شامل تغییرات زیر در کتابخانههای اصلی است:
- پشتیبانی از کلمه کلیدی
varبرای متغیرهای محلی و به عنوان پارامتر لامبداها. متدهای جدید در کلاس String:
-
isBlank() -
lines() -
repeat() -
strip() -
stripLeading() -
stripTrailing()
-
پشتیبانی از
Collection.toArray(IntFunction)برای آسانتر کردن تطبیق یک مجموعه با یک آرایه.پشتیبانی از
ifPresentOrElse()،isEmpty()،orElseThrow()وstream()در کلاسهایjava.utilOptional،OptionalDouble،OptionalIntوOptionalLong.پشتیبانی گسترده از
SocketOptionsشامل استفاده مجدد از سوکتها.قابلیتهای
NullReader،NullWriter،InputStream،OutputStreamوtransferTo() که کاراکترهایReaderشده را به یکWriterمنتقل میکنند.قابلیت رمزگذاری و رمزگشایی URL با استفاده از
Charsetsاضافه شد.قابلیت
CharsetبرایFileReader،FileWriter،PrintStreamوPrintWriter.توابع جدید
transferTo()،readNBytes()،readAllBytes()وwriteBytes()برایByteArrayInputیاOutputStreamوInputیاOutputStream.پشتیبانی از زمان اجرا و کامپایلر برای
java.lang.invoke.VarHandle.با استفاده از
VarHandleبه صورت داخلی،java.util.concurrentبه OpenJDK 11 API بهروزرسانی میکند.
جاوا و OpenJDK علائم تجاری یا علائم تجاری ثبت شده Oracle و/یا شرکتهای وابسته به آن هستند.