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

بهبود ابزارکها
اندروید ۱۲، API ویجتهای موجود را برای بهبود تجربه کاربر و توسعهدهنده در پلتفرم و لانچرها، بهروزرسانی میکند. ما راهنمایی ایجاد کردهایم تا به شما کمک کنیم از سازگاری ویجت خود با اندروید ۱۲ اطمینان حاصل کنید و آن را با ویژگیهای جدید بهروزرسانی کنید.
برای اطلاعات بیشتر به بهبودهای ویجتهای اندروید ۱۲ مراجعه کنید.
درج محتوای غنی
اندروید ۱۲ یک API یکپارچه جدید معرفی میکند که به برنامه شما اجازه میدهد محتوای غنی را از هر منبع موجود دریافت کند: کلیپبورد، صفحهکلید یا کشیدن و رها کردن.
برای اطلاعات بیشتر، به دریافت محتوای غنی مراجعه کنید.
API صفحات نمایش برنامه
اندروید ۱۲ یک انیمیشن جدید برای اجرای برنامهها برای همه برنامهها معرفی میکند که شامل یک حرکت درون برنامهای از نقطه اجرا، یک صفحه شروع که آیکون برنامه را نشان میدهد و یک انتقال به خود برنامه است. برای جزئیات بیشتر به راهنمای توسعهدهندگان صفحه شروع مراجعه کنید.
API های گوشه گرد
اندروید ۱۲ دو RoundedCorner و WindowInsets.getRoundedCorner(int position) را معرفی میکند که شعاع و نقطه مرکزی گوشههای گرد را فراهم میکنند.
برای اطلاعات بیشتر، به گوشههای گرد مراجعه کنید.
تجربیات لمسی غنی
اندروید ۱۲ ابزارهای ایجاد بازخورد لمسی آموزنده برای رویدادهای رابط کاربری، جلوههای فراگیر و لذتبخش برای بازی و لمسهای لمسی توجهبرانگیز برای بهرهوری را گسترش میدهد.
اثرات محرک
اندروید ۱۲ جلوههای ویژهای مانند تیک پایین را اضافه میکند که از پهنای باند فرکانسی وسیعتر جدیدترین محرکها بهره میبرند. توسعهدهندگان بازی اکنون میتوانند به چندین محرک مختلف به طور مستقل در کنترلکنندههای بازی دسترسی داشته باشند تا یک اثر را به صورت همزمان یا جلوههای لمسی مختلف را روی چندین محرک ارائه دهند. برای توسعهدهندگان، توصیه میکنیم از ثابتها و اولیهها به عنوان بلوکهای سازنده برای جلوههای لمسی غنی استفاده کنند - ثابتها برای بهبود رویدادهای رابط کاربری و آهنگساز لمسی برای توالی اولیهها برای جلوههای پیچیدهتر. این APIها برای آزمایش در دستگاههای پیکسل ۴ در دسترس هستند و ما همچنان با شرکای سازنده دستگاه خود همکاری میکنیم تا جدیدترین پشتیبانی لمسی را برای کاربران در سراسر اکوسیستم ارائه دهیم.
جلوههای لمسی همراه با صدا
برنامههای اندروید ۱۲ میتوانند با استفاده از ویبراتور گوشی، بازخورد لمسی مشتق شده از یک جلسه صوتی را ایجاد کنند. این امر فرصتی را برای تجربههای بازی و صوتی فراگیرتر فراهم میکند. به عنوان مثال، زنگهای لمسی میتوانند به شناسایی تماسگیرندگان کمک کنند، یا یک بازی رانندگی میتواند احساس زمین ناهموار را شبیهسازی کند.
برای اطلاعات بیشتر به مستندات مرجع HapticGenerator مراجعه کنید.
جستجوی برنامه
اندروید ۱۲، AppSearch، یک موتور جستجوی با عملکرد بالا روی دستگاه، را به عنوان یک سرویس سیستمی معرفی میکند. AppSearch به برنامهها اجازه میدهد تا دادههای ساختاریافته را فهرستبندی کرده و با قابلیتهای جستجوی متن کامل داخلی، آنها را جستجو کنند. علاوه بر این، AppSearch از ویژگیهای جستجوی بومی، مانند فهرستبندی و بازیابی بسیار کارآمد، پشتیبانی از چند زبان و رتبهبندی مرتبط پشتیبانی میکند.

AppSearch در دو نسخه ارائه میشود: یک فهرست محلی برای استفاده برنامه شما که با نسخههای قدیمیتر اندروید سازگار است، یا یک فهرست مرکزی که برای کل سیستم در اندروید ۱۲ نگهداری میشود. با استفاده از فهرست مرکزی، برنامه شما میتواند به دادههای خود اجازه دهد تا توسط مؤلفه هوشمند از پیش نصب شده سیستم، روی سطوح رابط کاربری سیستم نمایش داده شوند. اینکه دقیقاً کدام دادهها روی سطوح رابط کاربری سیستم نمایش داده میشوند، به سازنده اصلی (OEM) بستگی دارد. علاوه بر این، برنامه شما میتواند دادهها را به طور ایمن با سایر برنامهها به اشتراک بگذارد تا به آنها نیز اجازه دهد روی آن دادهها جستجو کنند.
برای کسب اطلاعات بیشتر در مورد AppSearch به راهنمای توسعهدهندگان مراجعه کنید و استفاده از آن را با کتابخانه AppSearch Jetpack آغاز کنید، که یک سطح API مناسب برای توسعهدهندگان و همچنین پشتیبانی از پردازنده حاشیهنویسی را فراهم میکند.
حالت بازی
API حالت بازی و مداخلات حالت بازی به شما امکان میدهند با اولویتبندی ویژگیهایی مانند عملکرد یا عمر باتری بر اساس تنظیمات کاربر یا پیکربندیهای خاص بازی، گیمپلی را بهینه کنید.
برای اطلاعات بیشتر، به حالت بازی مراجعه کنید.
توصیهها و بهبودهای تصویر در تصویر (PiP)
اندروید ۱۲ بهبودهای زیر را برای حالت PiP معرفی میکند:
پشتیبانی از حرکات جدید PiP
اندروید ۱۲ اکنون از ژستهای حرکتی مخفیسازی و زوم با دو انگشت برای پنجره PiP پشتیبانی میکند:
برای مخفی کردن پنجره، کاربر میتواند آن را به لبه چپ یا راست بکشد. برای برداشتن پنجره از حالت مخفی، کاربر میتواند روی قسمت قابل مشاهده پنجره مخفی شده ضربه بزند یا آن را به بیرون بکشد.
کاربر اکنون میتواند با استفاده از قابلیت زوم با دو انگشت، اندازه پنجره PiP را تغییر دهد.
ویژگیهای جدید پیشنهادی که از یک تجربه انتقال تصویر در تصویر (PiP) روان پشتیبانی میکنند
اندروید ۱۲ بهبودهای ظاهری قابل توجهی را در انتقالهای انیمیشنی بین پنجرههای تمامصفحه و PiP اضافه کرده است. اکیداً توصیه میکنیم تمام تغییرات قابل اجرا را اعمال کنید؛ پس از انجام این کار، این تغییرات به طور خودکار و بدون نیاز به هیچ کار اضافی، در صفحههای نمایش بزرگ مانند تبلتها و گوشیهای تاشو نیز اعمال میشوند.
این ویژگیها به شرح زیر هستند:
یک پرچم API جدید برای انتقال روانتر به حالت PiP با ناوبری حرکتی
از پرچم
setAutoEnterEnabledبرای انتقال روانتر به حالت PiP هنگام کشیدن انگشت به بالا به سمت خانه در حالت ناوبری حرکتی استفاده کنید. پیش از این، اندروید منتظر میماند تا انیمیشن کشیدن انگشت به بالا به سمت خانه قبل از محو شدن در پنجره PiP تمام شود.انیمیشنهای روانتر هنگام ورود و خروج از حالت PiP
پرچم
SourceRectHintاکنون برای پیادهسازی انیمیشن روانتر هنگام ورود و خروج از حالت PiP مجدداً استفاده میشود.یک پرچم API جدید برای غیرفعال کردن تغییر اندازه یکپارچه برای محتوای غیر ویدیویی
پرچم
SeamlessResizeEnabledهنگام تغییر اندازه محتوای غیر ویدیویی در پنجره PiP، انیمیشن محو شدن متقاطع بسیار روانتری را ارائه میدهد. پیش از این، تغییر اندازه محتوای غیر ویدیویی در یک پنجره PiP میتوانست مصنوعات بصری نامطلوبی ایجاد کند.
اعلانهای جدید تماس تلفنی که امکان رتبهبندی اهمیت تماسهای دریافتی را فراهم میکنند
اندروید ۱۲ سبک اعلان جدید Notification.CallStyle را برای تماسهای تلفنی اضافه میکند. استفاده از این الگو به برنامه شما اجازه میدهد تا با نمایش یک تراشه برجسته که زمان تماس را در نوار وضعیت نشان میدهد، اهمیت تماسهای فعال را نشان دهد؛ کاربر میتواند برای بازگشت به تماس خود روی این تراشه ضربه بزند.
از آنجا که تماسهای ورودی و مداوم برای کاربران بسیار مهم هستند، این اعلانها در بالاترین رتبه قرار میگیرند. این رتبهبندی همچنین به سیستم اجازه میدهد تا این تماسهای اولویتبندی شده را به دستگاههای دیگر هدایت کند.
کد زیر را برای انواع فراخوانیها پیادهسازی کنید.
کاتلین
// Create a new call with the user as caller. val incoming_caller = Person.Builder() .setName("Jane Doe") .setImportant(true) .build()
جاوا
// Create a new call with the user as caller. Person incoming_caller = new Person.Builder() .setName("Jane Doe") .setImportant(true) .build();
برای ایجاد اعلانی به سبک تماس برای یک تماس ورودی، از forIncomingCall() استفاده کنید.
کاتلین
// Create a call style notification for an incoming call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller)
جاوا
// Create a call style notification for an incoming call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forIncomingCall(caller, declineIntent, answerIntent)) .addPerson(incoming_caller);
برای ایجاد اعلانی به سبک تماس برای یک تماس مداوم، از forOngoingCall() استفاده کنید.
کاتلین
// Create a call style notification for an ongoing call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller)
جاوا
// Create a call style notification for an ongoing call. Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forOnGoingCall(caller, hangupIntent)) .addPerson(second_caller);
از forScreeningCall() برای ایجاد یک اعلان به سبک فراخوانی برای غربالگری یک تماس استفاده کنید.
کاتلین
// Create a call style notification for screening a call. val builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller)
جاوا
Notification.Builder builder = Notification.Builder(context, CHANNEL_ID) .setContentIntent(contentIntent) .setSmallIcon(smallIcon) .setStyle( Notification.CallStyle.forScreeningCall(caller, hangupIntent, answerIntent)) .addPerson(second_caller);
پشتیبانی غنی از تصویر برای اعلانها
در اندروید ۱۲، اکنون میتوانید با ارائه تصاویر متحرک در اعلانهای MessagingStyle() و BigPictureStyle() تجربه اعلان برنامه خود را غنیتر کنید. همچنین، برنامه شما اکنون میتواند به کاربران این امکان را بدهد که هنگام پاسخ دادن به پیامها از طریق پنل اعلان، پیامهای تصویری ارسال کنند.
بهبودهای حالت فراگیر برای ناوبری با ژستهای حرکتی
اندروید ۱۲ رفتارهای موجود را یکپارچه میکند تا کاربران بتوانند در حالت همهجانبه، دستورات ناوبری حرکتی را آسانتر اجرا کنند . علاوه بر این، اندروید ۱۲ برای حالت همهجانبهی چسبنده، سازگاری با نسخههای قبلی را فراهم میکند.
اشتراکگذاری URLهای اخیر (فقط پیکسل)
در دستگاههای پیکسل، کاربران اکنون میتوانند لینکهای محتوای وب اخیراً مشاهدهشده را مستقیماً از صفحه «آخرینها» به اشتراک بگذارند. پس از بازدید از محتوا در یک برنامه، کاربر میتواند به صفحه «آخرینها» برود و برنامهای را که محتوا را در آن مشاهده کرده است پیدا کند، سپس روی دکمه پیوند ضربه بزند تا URL را کپی یا به اشتراک بگذارد.
برای اطلاعات بیشتر، به فعال کردن اشتراکگذاری URLهای اخیر مراجعه کنید.
امنیت و حریم خصوصی
داشبورد حریم خصوصی
در دستگاههای پشتیبانیشدهای که اندروید ۱۲ یا بالاتر را اجرا میکنند، صفحهای با عنوان «داشبورد حریم خصوصی» در تنظیمات سیستم ظاهر میشود. در این صفحه، کاربران میتوانند به صفحات جداگانهای دسترسی داشته باشند که نشان میدهد برنامهها چه زمانی به اطلاعات موقعیت مکانی، دوربین و میکروفون دسترسی دارند. هر صفحه، جدول زمانی از زمان دسترسی برنامههای مختلف به نوع خاصی از دادهها را نشان میدهد. شکل ۱ جدول زمانی دسترسی به دادهها برای اطلاعات موقعیت مکانی را نشان میدهد.
برنامه شما میتواند برای کاربران دلیل دسترسی برنامه شما به اطلاعات موقعیت مکانی، دوربین یا میکروفون را توضیح دهد . این دلیل میتواند در صفحه جدید داشبورد حریم خصوصی، صفحه مجوزهای برنامه یا هر دو ظاهر شود.
مجوزهای بلوتوث
اندروید ۱۲ مجوزهای BLUETOOTH_SCAN ، BLUETOOTH_ADVERTISE و BLUETOOTH_CONNECT را معرفی کرد. این مجوزها، تعامل برنامههایی که اندروید ۱۲ را هدف قرار میدهند با دستگاههای بلوتوث را آسانتر میکند، به خصوص برای برنامههایی که نیازی به دسترسی به موقعیت مکانی دستگاه ندارند.
بهروزرسانی مجوزهای بلوتوث برنامه
برای آمادهسازی دستگاه خود برای اندروید ۱۲ یا بالاتر، منطق برنامه خود را بهروزرسانی کنید. به جای اعلام مجموعهای قدیمی از مجوزهای بلوتوث ، مجموعهای مدرنتر از مجوزهای بلوتوث را اعلام کنید.
جستجوی گروه مجوز
در اندروید ۱۲ یا بالاتر، میتوانید بررسی کنید که سیستم چگونه مجوزهای ارائه شده توسط پلتفرم را در گروههای مجوز سازماندهی میکند:
- برای تعیین گروه مجوزی که سیستم، یک مجوز تعریفشده توسط پلتفرم را در آن قرار داده است،
getGroupOfPlatformPermission()را فراخوانی کنید. - برای تعیین مجوزهای تعریفشده توسط پلتفرم که سیستم در یک گروه مجوز خاص قرار داده است، تابع
getPlatformPermissionsForGroup()را فراخوانی کنید.
پنهان کردن پنجرههای همپوشانی برنامه
برای اینکه توسعهدهندگان کنترل بیشتری روی آنچه کاربران هنگام تعامل با برنامه توسعهدهنده میبینند، داشته باشند، اندروید ۱۲ قابلیتی را معرفی میکند که به موجب آن میتوان پنجرههای همپوشانی که توسط برنامههای دارای مجوز SYSTEM_ALERT_WINDOW رسم میشوند را پنهان کرد.
پس از اعلام مجوز HIDE_OVERLAY_WINDOWS ، یک برنامه میتواند تابع setHideOverlayWindows() را فراخوانی کند تا نشان دهد که تمام پنجرههای نوع TYPE_APPLICATION_OVERLAY باید هنگام نمایش پنجره خود برنامه پنهان شوند. برنامهها ممکن است هنگام نمایش صفحات حساس، مانند جریانهای تأیید تراکنش، این کار را انجام دهند.
برنامههایی که پنجرههایی از نوع TYPE_APPLICATION_OVERLAY را نشان میدهند، باید گزینههای دیگری را که ممکن است برای مورد استفاده آنها مناسبتر باشد، مانند تصویر در تصویر یا حبابها ، در نظر بگیرند.
پرچم حفاظت از مجوز امضاکنندگان شناختهشده
از اندروید ۱۲ به بعد، ویژگی knownCerts برای مجوزهای سطح امضا به شما این امکان را میدهد که در زمان اعلان، به خلاصهای از گواهیهای امضای شناختهشده مراجعه کنید.
برنامه شما میتواند این ویژگی را اعلام کند و از پرچم knownSigner استفاده کند تا به دستگاهها و برنامهها اجازه دهد مجوزهای امضا را به برنامههای دیگر اعطا کنند ، بدون اینکه لازم باشد برنامهها را در زمان تولید و ارسال دستگاه امضا کنند.
گواهی ویژگیهای دستگاه
اندروید ۱۲ مجموعه برنامههایی را گسترش میدهد که میتوانند ویژگیهای دستگاه موجود در گواهی تأیید را هنگام تولید کلید جدید توسط این برنامهها تأیید کنند.
از اندروید ۹ (سطح API ۲۸)، دارندگان خطمشی دستگاه (DPO) که از Keymaster 4.0 یا بالاتر استفاده میکنند، میتوانند ویژگیهای دستگاه را در این گواهیهای تأیید اعتبار کنند. از اندروید ۱۲، هر برنامهای که اندروید ۱۲ (سطح API ۳۱) یا بالاتر را هدف قرار میدهد، میتواند این تأیید اعتبار را با استفاده از متد setDevicePropertiesAttestationIncluded() انجام دهد.
ویژگیهای دستگاه تولید شده شامل فیلدهای Build زیر است:
-
BRAND -
DEVICE -
MANUFACTURER -
MODEL -
PRODUCT
اقدامات اعلان قفل صفحه ایمن
از اندروید ۱۲ به بعد، کلاس Notification.Action.Builder از متد setAuthenticationRequired() پشتیبانی میکند که به برنامه شما اجازه میدهد قبل از فراخوانی یک اکشن اعلان، قفل دستگاه را باز کند . این متد به افزودن یک لایه امنیتی اضافی به اعلانها در دستگاههای قفلشده کمک میکند.
رشتههای قابل محلیسازی برای BiometricPrompt
اندروید ۱۲ رابطهای برنامهنویسی کاربردی (API) جدیدی را معرفی میکند تا به شما در بهبود تجربه کاربری احراز هویت بیومتریک برنامهتان کمک کند. کلاس تودرتوی جدید BiometricManager.Strings شامل متدهای getButtonLabel() ، getPromptMessage() و getSettingName() است که به برنامه شما اجازه میدهد برچسب دکمه، پیام فوری یا نام تنظیمات برنامه را که برای کاربر قابل خواندن و بومیسازی است، بازیابی کند. از این برچسبها برای ایجاد دستورالعملهای دقیقتر کاربرپسند که مختص روشهای احراز هویت بیومتریک مورد استفاده هستند، مانند «استفاده از باز کردن قفل با چهره» یا «استفاده از اثر انگشت برای ادامه» استفاده کنید.
رسانه
کدگذاری رسانههای سازگار
با شروع از اندروید ۱۲ (سطح API 31)، سیستم میتواند بهطور خودکار ویدیوهای HEVC(H.265) و HDR (HDR10 و HDR10+) ضبطشده روی دستگاه را به AVC(H.264) تبدیل کد کند، فرمتی که بهطور گسترده با پخشکنندههای استاندارد سازگار است. این قابلیت از کدکهای مدرن در صورت موجود بودن، بدون از دست دادن سازگاری با برنامههای قدیمیتر، بهره میبرد.
برای جزئیات بیشتر به بخش تبدیل کد رسانههای سازگار مراجعه کنید.
کلاس عملکرد
اندروید ۱۲ استانداردی به نام کلاس عملکرد (performance class) را معرفی میکند. کلاس عملکرد، قابلیتهای سختافزاری فراتر از الزامات پایه اندروید را مشخص میکند. هر دستگاه اندرویدی کلاس عملکردی را که پشتیبانی میکند، اعلام میکند. توسعهدهندگان میتوانند کلاس عملکرد دستگاه را در زمان اجرا بررسی کرده و تجربیات ارتقا یافتهای را ارائه دهند که از قابلیتهای دستگاه به طور کامل بهره میبرد.
برای جزئیات بیشتر به کلاس Performance مراجعه کنید.
بهبودهای کدگذاری ویدیو
اندروید ۱۲ مجموعهای استاندارد از کلیدها را برای کنترل مقدار پارامتر کوانتیزاسیون (QP) برای رمزگذاری ویدیو تعریف میکند و به توسعهدهندگان اجازه میدهد از کد اختصاصی فروشنده اجتناب کنند.
کلیدهای جدید در API MediaFormat و همچنین در کتابخانهی NDK Media موجود هستند.
از اندروید ۱۲ به بعد، انکودرهای ویدیو یک آستانه حداقل کیفیت را اعمال میکنند. این تضمین میکند که کاربران هنگام انکود ویدیوها با پیچیدگی صحنه بالا، کیفیت بسیار پایینی را تجربه نکنند.
تمرکز صوتی
از اندروید ۱۲ (سطح API ۳۱)، وقتی یک برنامه درخواست فوکوس صوتی میکند در حالی که برنامه دیگری فوکوس را دارد و در حال پخش است، سیستم برنامه در حال پخش را محو میکند.
برای جزئیات بیشتر به بخش فوکوس صوتی در اندروید ۱۲ و بالاتر مراجعه کنید.
بهروزرسانیهای مدیادرم
برای تعیین اینکه آیا یک جزء رمزگشای امن با API های فعلی MediaDrm مورد نیاز است یا خیر، باید این مراحل را دنبال کنید:
- یک
MediaDrmایجاد کنید. - برای دریافت شناسه جلسه، یک جلسه را باز کنید.
- با استفاده از شناسه جلسه، یک
MediaCryptoایجاد کنید. - فراخوانی
MediaCrypto.requiresSecureDecoderComponent(mimeType).
با متدهای جدید requiresSecureDecoder(@NonNull String mime) و requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) میتوانید به محض ایجاد یک MediaDrm این موضوع را تعیین کنید.
دوربین
افزونههای فروشنده Camera2
بسیاری از شرکای تولیدکننده دستگاههای ما، افزونههای دوربین سفارشی - مانند بوکه، HDR، حالت شب و موارد دیگر - ساختهاند که میخواهند برنامهها از آنها برای ایجاد تجربیات متمایز در دستگاههایشان استفاده کنند. کتابخانه CameraX از قبل از این افزونههای سفارشی پشتیبانی میکند. در اندروید ۱۲، این افزونههای سفارشی اکنون مستقیماً در پلتفرم در معرض دید قرار گرفتهاند.
این قابلیت جدید به برنامههایی که پیادهسازیهای پیچیدهای Camera2 دارند، کمک میکند تا بدون نیاز به ایجاد تغییرات قابل توجه در کد قدیمی، از افزونههای ارائه شده توسط فروشنده بهرهمند شوند. APIهای افزونه Camera2 دقیقاً همان مجموعه افزونههایی را که در CameraX وجود دارد، ارائه میدهند و این افزونهها از قبل در بسیاری از دستگاههای مختلف پشتیبانی میشوند، بنابراین میتوانید بدون هیچ پیکربندی اضافی از آنها استفاده کنید.
برای اطلاعات بیشتر، به CameraExtensionCharacteristics مراجعه کنید.
پشتیبانی از حسگر دوربین چهارگانه بایر
بسیاری از دستگاههای اندرویدی امروزه با حسگرهای دوربین با وضوح فوقالعاده بالا، معمولاً با الگوهای Quad یا Nona Bayer، عرضه میشوند و این حسگرها از نظر کیفیت تصویر و عملکرد در نور کم، انعطافپذیری زیادی ارائه میدهند. اندروید ۱۲ رابطهای برنامهنویسی کاربردی (API) پلتفرم جدیدی را معرفی میکند که به برنامههای شخص ثالث اجازه میدهد از این حسگرهای همهکاره نهایت استفاده را ببرند. رابطهای برنامهنویسی کاربردی جدید از رفتار منحصر به فرد این حسگرها پشتیبانی میکنند و در نظر میگیرند که ممکن است هنگام کار در حالت وضوح کامل یا «حداکثر وضوح» در مقابل حالت «پیشفرض»، از پیکربندیها و ترکیبهای مختلف جریان پشتیبانی کنند.
گرافیک و تصاویر
دسترسی مستقیم برنامهها به ردپاهای سنگ قبر را فراهم کنید
از اندروید ۱۲ به بعد، میتوانید از طریق متد ApplicationExitInfo.getTraceInputStream() به اطلاعات خرابی برنامه خود به عنوان یک بافر پروتکل دسترسی پیدا کنید. بافر پروتکل با استفاده از این طرحواره سریالی میشود. پیش از این، تنها راه دسترسی به این اطلاعات از طریق Android Debug Bridge (adb) بود.
برای اطلاعات بیشتر، به «ارائه دسترسی مستقیم برنامهها به ردپاهای سنگ قبر» مراجعه کنید.
پشتیبانی از تصاویر AVIF
اندروید ۱۲ پشتیبانی از تصاویری را که از فرمت فایل تصویری AV1 (AVIF) استفاده میکنند، معرفی میکند. AVIF یک فرمت کانتینر برای تصاویر و توالی تصاویر رمزگذاری شده با استفاده از AV1 است. AVIF از محتوای رمزگذاری شده درون فریمی از فشردهسازی ویدیو بهره میبرد. این امر به طور چشمگیری کیفیت تصویر را برای همان اندازه فایل در مقایسه با فرمتهای تصویری قدیمیتر، مانند JPEG، بهبود میبخشد. برای نگاهی عمیقتر به مزایای این فرمت، به پست وبلاگ جیک آرچیبالد مراجعه کنید.
محو کردن آسانتر، فیلترهای رنگی و سایر جلوهها
اندروید ۱۲ قابلیت جدید RenderEffect را اضافه کرده است که جلوههای گرافیکی رایج مانند محوشدگی، فیلترهای رنگی، جلوههای سایهزن اندروید و موارد دیگر را به View و سلسله مراتب رندر اعمال میکند. جلوهها را میتوان به صورت جلوههای زنجیرهای (که یک جلوه داخلی و خارجی را تشکیل میدهند) یا جلوههای ترکیبی ترکیب کرد. دستگاههای مختلف اندروید ممکن است به دلیل قدرت پردازش محدود، از این ویژگی پشتیبانی کنند یا نکنند.
همچنین میتوان با فراخوانی View.setRenderEffect(RenderEffect) افکتها را به RenderNode زیرین برای View ها اعمال کرد.
برای پیادهسازی یک RenderEffect :
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
رمزگشایی تصویر متحرک بومی
در اندروید ۱۲، API مربوط به NDK ImageDecoder گسترش یافته است تا تمام فریمها و دادههای زمانبندی از تصاویری که از فرمتهای فایل GIF متحرک و WebP متحرک استفاده میکنند را رمزگشایی کند. این API در اندروید ۱۱ فقط اولین تصویر از انیمیشنها در این فرمتها را رمزگشایی میکرد.
برای کاهش بیشتر حجم APK و بهرهمندی از بهروزرسانیهای آینده مربوط به امنیت و عملکرد، از ImageDecoder به جای کتابخانههای شخص ثالث استفاده کنید.
برای جزئیات بیشتر در مورد API، به مرجع API و نمونه در GitHub مراجعه کنید.
اتصال
بیدار نگه داشتن برنامههای همراه
برای پشتیبانی از نیاز برنامههای همراه برای اجرا ماندن جهت مدیریت دستگاه، اندروید ۱۲ رابطهای برنامهنویسی کاربردی (API) را معرفی میکند که موارد زیر را انجام میدهند:
- به شما این امکان را میدهد که وقتی دستگاه همراه در محدوده است، برنامه را فعال کنید.
- تضمین کنید که این فرآیند در حالی که دستگاه در محدوده باقی میماند، ادامه خواهد یافت.
برای استفاده از APIها، دستگاههای شما باید با استفاده از Companion Device Manager متصل شوند. برای اطلاعات بیشتر، به CompanionDeviceManager.startObservingDevicePresence() و CompanionDeviceService.onDeviceAppeared() مراجعه کنید.
پروفایلهای مدیریت دستگاه همراه

برنامههای همکار در اندروید ۱۲ (سطح API 31) و بالاتر میتوانند هنگام اتصال به ساعت از پروفایلهای دستگاه همراه استفاده کنند. استفاده از یک پروفایل، فرآیند ثبتنام را با تجمیع اعطای مجموعهای از مجوزهای خاص برای نوع دستگاه در یک مرحله، ساده میکند.
مجوزهای همراه پس از اتصال دستگاه به برنامه همراه اعطا میشوند و فقط تا زمانی که دستگاه مرتبط باشد، ادامه دارند. حذف برنامه یا حذف ارتباط، مجوزها را نیز حذف میکند.
برای اطلاعات بیشتر، به AssociationRequest.Builder.setDeviceProfile() مراجعه کنید.
بهبود تخمین پهنای باند
در اندروید ۱۲، قابلیتهای تخمین پهنای باند ارائه شده توسط getLinkDownstreamBandwidthKbps() و getLinkUpstreamBandwidthKbps() برای اتصال وایفای و تلفن همراه بهبود یافته است. مقادیر برگردانده شده اکنون نشان دهنده میانگین وزنی توان عملیاتی کاربر در تمام طول زمان به ازای هر اپراتور یا SSID وایفای، نوع شبکه و سطح سیگنال در تمام برنامههای روی دستگاه است. این میتواند تخمینی دقیقتر و واقعبینانهتر از توان عملیاتی مورد انتظار را ارائه دهد، تخمینهایی را در شروع سرد برنامه شما ارائه دهد و در مقایسه با استفاده از سایر روشهای تخمین توان عملیاتی، به چرخههای کمتری نیاز دارد.
پیشرفت های Wi-Fi Aware (NAN).
اندروید ۱۲ برخی پیشرفتها را به Wi-Fi Aware اضافه میکند:
- در دستگاههایی که اندروید ۱۲ (سطح API 31) و بالاتر را اجرا میکنند، میتوانید از فراخوانی
onServiceLost()برای هشدار دادن به برنامه خود در زمانی که سرویس کشف شدهای را به دلیل توقف یا خارج شدن از محدوده از دست داده است، استفاده کنید. - نحوه تنظیم چندین مسیر داده (مسیرهای داده NAN) در حال تغییر است تا کارآمدتر شود. نسخههای قبلی از پیامرسانی L2 برای تبادل اطلاعات همتا به همتا (peer) آغازگرها استفاده میکردند که باعث تأخیر میشد. در دستگاههایی که اندروید ۱۲ و بالاتر دارند، پاسخدهنده (سرور) میتواند طوری پیکربندی شود که هر همتای دیگری را بپذیرد - یعنی نیازی به دانستن اطلاعات آغازگر از قبل ندارد. این امر سرعت ایجاد مسیر داده را افزایش میدهد و چندین لینک نقطه به نقطه را تنها با یک درخواست شبکه فعال میکند.
- برای جلوگیری از رد درخواستهای کشف یا اتصال توسط فریمورک به دلیل کمبود منابع، در دستگاههایی که اندروید ۱۲ و بالاتر دارند، میتوانید
WifiAwareManager.getAvailableAwareResources()را فراخوانی کنید. مقدار بازگشتی این متد به شما امکان میدهد تعداد مسیرهای داده موجود، تعداد جلسات انتشار موجود و تعداد جلسات اشتراک موجود را دریافت کنید.
اتصال همزمان نظیر به نظیر + اینترنت
وقتی دستگاههایی که اندروید ۱۲ (سطح API 31) و بالاتر را هدف قرار میدهند، روی دستگاههایی با پشتیبانی سختافزاری اجرا میشوند، استفاده از اتصالات نظیر به نظیر، اتصال وایفای موجود شما را هنگام ایجاد اتصال به دستگاه نظیر قطع نمیکند. برای بررسی پشتیبانی از این ویژگی، از WifiManager.isMultiStaConcurrencySupported() استفاده کنید.
فعال کردن خاموش کردن صفحه نمایش برای پرداختهای NFC
در برنامههایی که اندروید ۱۲ و بالاتر را هدف قرار میدهند، میتوانید با تنظیم requireDeviceScreenOn روی false ، پرداختهای NFC را بدون روشن بودن صفحه نمایش دستگاه فعال کنید. برای اطلاعات بیشتر در مورد پرداختهای NFC با صفحه نمایش خاموش یا قفل شده، به بخش «صفحه خاموش و رفتار صفحه قفل» مراجعه کنید.
ذخیرهسازی
اندروید ۱۲ قابلیتهای مدیریت حافظه زیر را معرفی میکند:
- پشتیبانی از ذخیرهسازی رسانه برای
MediaDocumentsProviderزمانی که برنامه شما یک URI رسانهای معادل با URI ارائهدهنده اسناد داده شده را بازیابی میکند . - یک دایرکتوری برای ضبط صدا .
- مجوز
MANAGE_MEDIA، که به یک برنامه اجازه میدهد عملیات مدیریت رسانه را بدون نمایش کادر تأیید به کاربر برای هر عملیات انجام دهد . - برنامههایی که هم مجوز
MANAGE_EXTERNAL_STORAGEو هم مجوزQUERY_ALL_PACKAGESرا دارند - مانند برنامههای مدیریت فایل - میتوانند یک اکتیویتی سفارشی را برای مدیریت فضای ذخیرهسازی برنامه دیگر فراخوانی کنند ، مشروط بر اینکه برنامه دیگر ، اکتیویتی سفارشی را ایجاد کند .
عملکرد اصلی
بهروزرسانی خودکار برنامهها
اندروید ۱۲ متد setRequireUserAction() را برای برنامههایی که از API PackageInstaller استفاده میکنند، معرفی میکند. این متد به برنامههای نصبکننده اجازه میدهد تا بهروزرسانیهای برنامه را بدون نیاز به تأیید کاربر انجام دهند.
اطلاعات چیپست دستگاه
اندروید ۱۲ دو ثابت به android.os.Build اضافه میکند که اطلاعات فروشنده و مدل چیپست SoC را از طریق SDK در معرض نمایش قرار میدهد. میتوانید این اطلاعات را به ترتیب با فراخوانی Build.SOC_MANUFACTURER و Build.SOC_MODEL بازیابی کنید.
بهروزرسانیهای APIهای اصلی جاوا
بر اساس درخواستها و همکاری با توسعهدهندگان، کتابخانههای اصلی زیر را در اندروید ۱۲ اضافه کردهایم:
| کلاس | رابطهای برنامهنویسی کاربردی (API) |
|---|---|
java.lang.Deprecated | |
java.lang.Byte | |
java.lang.Short | |
java.lang.Math | |
java.lang.StrictMath | |
java.util.Set | copyOf() |
java.util.Map | copyOf() |
java.util.List | copyOf() |
java.time.Duration | |
java.time.LocalTime |