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

بهبود ابزارهها
Android 12 «میانای برنامهسازی کاربردی ابزارههای» موجود را بازسازی میکند تا تجربه کاربر و توسعهدهنده را در پلاتفرم و راهاندازها بهبود بخشد. راهنمایی ایجاد کردهایم تا به شما کمک کنیم مطمئن شوید ابزارهتان با Android 12 سازگار است و آن را با ویژگیهای جدید بازآوری کنید.
برای اطلاعات بیشتر، بهبودهای ابزارههای Android 12 را ببینید.
درج محتوای غنی
Android 12 میانای برنامهسازی کاربردی یکپارچه جدیدی را معرفی میکند که به برنامه شما امکان میدهد محتوای غنی را از هر منبع دردسترسی دریافت کند: بریدهدان، صفحهکلید، یا کشیدن و رها کردن.
برای اطلاعات بیشتر، دریافت محتوای غنی را ببینید.
App splash screens API
Android 12 پویانمایی جدیدی برای راهاندازی برنامه برای همه برنامهها معرفی میکند که شامل حرکت به داخل برنامه از نقطه راهاندازی، صفحه اسپلش که نماد برنامه را نشان میدهد، و انتقال به خود برنامه است. برای جزئیات بیشتر، به راهنمای توسعهدهندگان صفحه اسپلش مراجعه کنید.
میاناهای برنامهسازی کاربردی گوشه گرد
Android 12 RoundedCorner
و WindowInsets.getRoundedCorner(int
position) را معرفی میکند،
که شعاع و نقطه مرکزی را برای گوشههای گرد ارائه میدهند.
برای اطلاعات بیشتر، به گوشههای گرد مراجعه کنید.
تجربههای لمسی غنی
Android 12 ابزارهای ایجاد بازخورد لمسی آموزنده برای رویدادهای واسط کاربر، جلوههای فراگیر و لذتبخش برای بازی، و لمسهای جلبتوجهکننده برای بهرهوری را گسترش میدهد.
جلوههای محرک
Android 12 جلوههای گویایی مثل تیک آهسته اضافه میکند که از پهنای باند فرکانس گستردهتر جدیدترین محرکها بهره میبرد. توسعهدهندگان بازی اکنون میتوانند بهطور مستقل به چندین محرک مختلف در کنترلکنندههای بازی دسترسی داشته باشند تا همان جلوه را بهطور همزمان یا جلوههای لمسی مختلف را در چندین محرک ارائه دهند. به توسعهدهندگان توصیه میکنیم از ثابتها و اصول بهعنوان بلوکهای سازنده برای جلوههای لمسی غنی استفاده کنند - ثابتها برای بهبود رویدادهای میانای کاربر و آهنگساز لمسی برای توالی اصول برای جلوههای پیچیدهتر. این میاناهای برنامهسازی کاربردی برای امتحان کردن در دستگاههای Pixel 4 دردسترس هستند و ما همچنان با شرکای سازنده دستگاه همکاری میکنیم تا جدیدترین پشتیبانی از لمس را به کاربران در سراسر بومسازگان ارائه دهیم.
جلوههای لمسی جفتشده با صدا
برنامههای Android 12 میتوانند بااستفاده از لرزاننده تلفن، بازخورد لمسی برگرفته از جلسه صوتی تولید کنند. این کار فرصتی برای تجربه بازی و صدای فراگیرتر فراهم میکند. برای مثال، آهنگهای زنگ با لمس پیشرفته میتوانند به شناسایی تماسگیرندگان کمک کنند، یا یک بازی رانندگی میتواند حس زمین ناهموار را شبیهسازی کند.
برای اطلاعات بیشتر، به سند مرجع HapticGenerator مراجعه کنید.
AppSearch
Android 12 AppSearch را بهعنوان سرویس سیستم معرفی میکند که موتور جستجوی دروندستگاهی با عملکرد بالا است. AppSearch به برنامهها اجازه میدهد دادههای ساختاریافته را نمایهسازی کنند و با قابلیتهای جستجوی کل نوشتار داخلی در آن جستجو کنند. علاوهبراین، AppSearch از ویژگیهای جستجوی بومی، مانند نمایهسازی و بازیابی بسیار کارآمد، پشتیبانی چندزبانه، و رتبهبندی مرتبط بودن پشتیبانی میکند.
AppSearch دو نوع دارد: نمایه محلی برای استفاده برنامهتان که با نسخههای قدیمیتر Android سازگار است، یا نمایه مرکزی که برای کل سیستم در Android 12 نگهداری میشود. بااستفاده از نمایه مرکزی، برنامه شما میتواند به مؤلفه هوش ازپیش نصبشده سیستم اجازه دهد دادههایش را در سطوح واسط کاربر سیستم نمایش دهد. اینکه دقیقاً چه دادههایی در سطوح میانای کاربری سیستم نمایش داده میشود به سازنده اصلی بستگی دارد. علاوهبراین، برنامه شما میتواند دادهها را بهطور ایمن با برنامههای دیگر همرسانی کند تا به آنها اجازه دهد در آن دادهها نیز جستجو کنند.
درباره AppSearch در راهنمای توسعهدهندگان بیشتر بدانید و استفاده از آن را با کتابخانه AppSearch Jetpack شروع کنید که سطح API مناسب توسعهدهندگان و همچنین پشتیبانی از پردازشگر گزارمان را ارائه میدهد.
حالت بازی
Game Mode API و مداخلات Game Mode به شما امکان میدهند با اولویتبندی ویژگیهایی مثل عملکرد یا عمر باتری براساس تنظیمات کاربران یا پیکربندیهای خاص بازی، گیمپلی را بهینهسازی کنید.
برای اطلاعات بیشتر، به حالت بازی مراجعه کنید.
توصیهها و بهبودهای «تصویردرتصویر» (PiP)
Android 12 بهبودهای زیر را برای حالت PiP معرفی میکند:
پشتیبانی از اشارههای جدید «تصویر در تصویر»
Android 12 اکنون از اشارههای پنهان کردن و نیشگون لمسی برای بزرگنمایی برای پنجره «تصویر در تصویر» پشتیبانی میکند:
برای پنهان کردن پنجره، کاربر میتواند پنجره را به لبه چپ یا راست بکشد. برای بازگرداندن پنجره، کاربر میتواند روی بخش قابلمشاهده پنجره پنهانشده تکضرب بزند یا آن را بیرون بکشد.
اکنون کاربر میتواند بااستفاده از نیشگون برای بزرگنمایی، اندازه پنجره «تصویر در تصویر» را تغییر دهد.
ویژگیهای جدید توصیهشده که از تجربه انتقال «تصویر در تصویر» بهبودیافته پشتیبانی میکند
Android 12 بهبودهای ظاهری قابلتوجهی به گذارهای پویانماییشده بین پنجرههای تمامصفحه و PiP اضافه کرده است. قویاً توصیه میکنیم همه تغییرات ذیربط را پیادهسازی کنید؛ پساز انجام این کار، این تغییرات بهطور خودکار برای صفحهنمایشهای بزرگ مثل دستگاههای تاشو و رایانههای لوحی مقیاسبندی میشوند و به کار بیشتری نیاز نیست.
این ویژگیها عبارتاند از:
پرچم API جدید برای انتقال روانتر به حالت «تصویر در تصویر» با پیمایش اشارهای
از پرچم
setAutoEnterEnabledاستفاده کنید تا هنگام تند کشیدن بهبالا برای رفتن به صفحه اصلی در حالت پیمایش اشارهای، انتقال به حالت «تصویر در تصویر» روانتر انجام شود. قبلاً Android منتظر میماند تا پویانمایی تند کشیدن به بالا برای رفتن به صفحه اصلی تمام شود و سپس پنجره «تصویر در تصویر» را محو میکرد.پویانماییهای روانتر هنگام ورود و خروج از حالت «تصویر در تصویر»
پرچم
SourceRectHintاکنون برای پیادهسازی پویانمایی روانتر هنگام ورود به حالت «تصویردرتصویر» و خروج از آن مجدداً استفاده میشود.پرچم جدید میانای برنامهسازی کاربردی برای غیرفعال کردن تغییر اندازه یکپارچه برای محتوای غیرویدیویی
پرچم
SeamlessResizeEnabledپویانمایی محو تدریجی متقاطع بسیار روانتری را هنگام تغییر اندازه محتوای غیرویدیویی در پنجره «تصویردرتصویر» ارائه میدهد. پیشازاین، تغییر اندازه محتوای غیرویدیویی در پنجره «تصویردرتصویر» میتوانست مصنوعات دیداری ناهنجاری ایجاد کند.
اعلانهای تماس تلفنی جدید که امکان رتبهبندی اهمیت تماسهای ورودی را فراهم میکند
Android 12 سبک اعلان جدیدی
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);
پشتیبانی از تصویر غنیشده برای اعلانها
در Android 12، اکنون میتوانید با ارائه تصاویر پویانماییشده در اعلانهای MessagingStyle() و BigPictureStyle()، تجربه اعلان برنامهتان را غنیتر کنید. همچنین، برنامهتان اکنون میتواند به کاربران امکان دهد هنگام پاسخ دادن به پیامها از کشوی اعلانات، پیام تصویری ارسال کنند.
بهبود حالت فراگیر برای پیمایش اشارهای
Android 12 رفتار موجود را یکپارچه میکند تا کاربران راحتتر بتوانند فرمانهای پیمایش اشارهای را در حالت فراگیر اجرا کنند. علاوهبراین، Android 12 رفتار سازگاری با نسخه قدیمی را برای حالت فراگیر چسبان ارائه میدهد.
همرسانی نشانی وب موارد اخیر (فقط Pixel)
در دستگاههای Pixel، کاربران اکنون میتوانند پیوندهای محتوای وب اخیراً مشاهدهشده را مستقیماً از صفحه «موارد اخیر» همرسانی کنند. پساز بازدید از محتوا در برنامه، کاربر میتواند تند بهسمت صفحه «موارد اخیر» بکشد و برنامهای را که محتوا را در آن مشاهده کرده است پیدا کند، سپس روی دکمه پیوند تکضرب بزند تا نشانی وب را کپی یا همرسانی کند.
برای اطلاعات بیشتر، به فعال کردن همرسانی نشانی وب موارد اخیر مراجعه کنید.
امنیت و حریم خصوصی
داشبورد حریم خصوصی
در دستگاههای پشتیبانیشدهای که Android نسخه ۱۲ یا بالاتر دارند، صفحه «داشبورد حریم خصوصی» در تنظیمات سیستم نشان داده میشود. در این صفحه، کاربران میتوانند به صفحههای جداگانهای دسترسی پیدا کنند که نشان میدهد برنامهها چه زمانی به اطلاعات مکان، دوربین، و میکروفون دسترسی پیدا میکنند. هر صفحه خط زمانیای را نشان میدهد که برنامههای مختلف به نوع خاصی از داده دسترسی داشتهاند. شکل ۱ خط زمان دسترسی به دادهها را برای اطلاعات مکان نشان میدهد.
برنامهتان میتواند منطقی برای کاربران ارائه دهد تا به آنها کمک کند متوجه شوند چرا برنامهتان به اطلاعات مکان، دوربین، یا میکروفون دسترسی دارد. این منطق میتواند در صفحه جدید «داشبورد حریم خصوصی»، صفحه اجازههای برنامهتان، یا هر دو نشان داده شود.
اجازههای بلوتوث
Android 12 اجازههای
BLUETOOTH_SCAN،
BLUETOOTH_ADVERTISE،
و
BLUETOOTH_CONNECT
را معرفی میکند. این اجازهها تعامل با
دستگاههای بلوتوث را برای برنامههایی که
Android 12 را هدف قرار میدهند آسانتر میکند، بهویژه برای برنامههایی که
به دسترسی به مکان دستگاه نیاز ندارند.
بهروزرسانی اظهارنامههای اجازه بلوتوث برنامه
برای آماده کردن دستگاهتان برای هدفیابی Android نسخه ۱۲ یا بالاتر، منطق برنامهتان را بهروز کنید. بهجای اعلام مجموعه قدیمی اجازههای بلوتوث، مجموعه جدیدتری از اجازههای بلوتوث را اعلام کنید.
جستجوی گروه اجازه
در Android نسخه ۱۲ یا بالاتر، میتوانید نحوه سازماندهی اجازههای ارائهشده توسط پلاتفرم را در گروههای اجازه توسط سیستم جستجو کنید:
- برای تعیین گروه اجازهای که سیستم اجازه تعریفشده توسط پلاتفرم را در آن قرار داده است،
getGroupOfPlatformPermission()را فراخوانی کنید. - برای تعیین اجازههای تعریفشده توسط پلاتفرم که سیستم در گروه اجازه خاصی قرار داده است،
getPlatformPermissionsForGroup()را فراخوانی کنید.
پنهان کردن پنجرههای همپوشانی برنامه
برای اینکه توسعهدهندگان کنترل بیشتری بر آنچه کاربران هنگام تعامل با برنامه توسعهدهنده میبینند داشته باشند، Android 12 توانایی پنهان کردن پنجرههای همپوشانی را که توسط برنامههای دارای اجازه SYSTEM_ALERT_WINDOW ترسیم میشوند معرفی میکند.
پساز اعلام اجازه
HIDE_OVERLAY_WINDOWS
، برنامه میتواند
setHideOverlayWindows()
را فراخوانی کند تا نشان دهد که همه پنجرههای نوع
TYPE_APPLICATION_OVERLAY
باید هنگام نمایان بودن پنجره خود برنامه پنهان شوند. برنامهها ممکن است هنگام نمایش صفحههای حساس، مانند جریانهای تأیید تراکنش، این کار را انجام دهند.
برنامههایی که پنجرههای نوع TYPE_APPLICATION_OVERLAY را نشان میدهند باید
جایگزینهایی را درنظر بگیرند که ممکن است برای مورد استفاده آنها مناسبتر باشد، مثل
تصویردرتصویر یا
حبابها.
پرچم محافظت از اجازه امضاکنندگان شناختهشده
از Android نسخه ۱۲ به بعد، مشخصه
knownCerts برای
اجازههای سطح امضا
به شما امکان میدهد در زمان اعلام، به خلاصههای گواهیهای
امضا شناختهشده ارجاع دهید.
برنامه شما میتواند این مشخصه را اعلام کند و از پرچم knownSigner استفاده کند تا به دستگاهها و برنامهها اجازه دهد اجازههای امضا را به برنامههای دیگر اعطا کنند، بدون اینکه لازم باشد برنامهها را در زمان ساخت و ارسال دستگاه امضا کنند.
تصدیق ویژگیهای دستگاه
Android 12 مجموعه برنامههایی را که میتوانند ویژگیهای دستگاه را که در گواهی تصدیق وجود دارد درستیسنجی کنند، گسترش میدهد. این اتفاق زمانی میافتد که این برنامهها کلید جدیدی تولید میکنند.
از Android نسخه ۹ (سطح میانای برنامهسازی کاربردی ۲۸)، مالکان خطمشی دستگاه (DPO) که از Keymaster نسخه ۴.۰ یا بالاتر استفاده میکنند میتوانند ویژگیهای دستگاه را در این گواهیهای تصدیق تأیید کنند. از Android 12، هر برنامهای که Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) یا بالاتر را هدف قرار دهد میتواند این درستیسنجی را بااستفاده از روش setDevicePropertiesAttestationIncluded() انجام دهد.
ویژگیهای دستگاه تولیدشده شامل فیلدهای
Build زیر است:
BRANDDEVICEMANUFACTURERMODELPRODUCT
کنشهای اعلان صفحه قفل ایمن
از Android نسخه ۱۲ به بعد، کلاس Notification.Action.Builder از روش setAuthenticationRequired() پشتیبانی میکند که به برنامه شما اجازه میدهد قبلاز اینکه برنامه شما کنش اعلان خاصی را فراخوانی کند، الزام کند که قفل دستگاه باز باشد. این روش به افزودن لایه امنیتی اضافی به اعلانها در دستگاههای قفلشده کمک میکند.
رشتههای قابلبومیسازی برای BiometricPrompt
Android 12 میاناهای برنامهسازی کاربردی جدیدی را معرفی میکند تا به شما کمک کند تجربه کاربری اصالتسنجی زیستسنجشی برنامهتان را بهبود بخشید. کلاس تودرتوی جدید BiometricManager.Strings
شامل روشهای getButtonLabel()،
getPromptMessage()،
و getSettingName()
است که به برنامه شما امکان میدهد برچسب دکمه، پیام درخواست، یا نام تنظیمات برنامه را بهصورت بومیسازیشده و قابلخواندن برای کاربر بازیابی کند. از این برچسبها برای ایجاد دستورالعملهای دقیقتر
برای کاربر استفاده کنید که مختص روشهای اصالتسنجی زیستسنجشی
استفادهشده باشد، مانند «از قفلگشایی با چهره استفاده کنید» یا «برای ادامه، از اثر انگشتتان استفاده کنید».
رسانه
تراتبدیل رسانه سازگار
از Android 12 (سطح میانای برنامهسازی کاربردی ۳۱)، سیستم میتواند بهطور خودکار ویدیوهای HEVC(H.265) و HDR (HDR10 و HDR10+) ضبطشده در دستگاه را به AVC (H.264) تراتبدیل کند، قالبی که بهطور گسترده با پخشکنندههای استاندارد سازگار است. این کار از کدکهای مدرن درصورت دردسترس بودن استفاده میکند، بدون اینکه سازگاری با برنامههای قدیمیتر را فدا کند.
برای جزئیات بیشتر، تراتبدیل رسانه سازگار را ببینید.
کلاس عملکرد
Android 12 استانداردی بهنام کلاس عملکرد معرفی میکند. کلاس عملکرد قابلیتهای سختافزاری فراتر از الزامات پایه Android را مشخص میکند. هر دستگاه Android کلاس عملکردی را که پشتیبانی میکند اعلام میکند. توسعهدهندگان میتوانند کلاس عملکرد دستگاه را در زمان اجرا بررسی کنند و تجربههای ارتقایافتهای ارائه دهند که از قابلیتهای دستگاه بهطور کامل بهره میبرد.
برای جزئیات بیشتر، به کلاس عملکرد مراجعه کنید.
بهبودهای کدبندی ویدیو
Android 12 مجموعه استانداردی از کلیدها را برای کنترل مقدار پارامتر کوانتیزاسیون (QP) برای کدگذاری ویدیو تعریف میکند، که به توسعهدهندگان اجازه میدهد از کد خاص فروشنده اجتناب کنند.
کلیدهای جدید در
MediaFormat API
و همچنین در
کتابخانه رسانه NDK دردسترس هستند.
از Android 12، کدبندهای ویدیو حداقل آستانه کیفیت را اعمال میکنند. این تضمین میکند که کاربران هنگام کدبندی ویدیوهایی با پیچیدگی صحنه بالا، کیفیت بسیار پایینی را تجربه نکنند.
فوکوس صدا
از Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) به بعد، وقتی برنامهای درخواست تمرکز صوتی میکند درحالیکه برنامه دیگری تمرکز را دراختیار دارد و درحال پخش است، سیستم صدای برنامه درحال پخش را محو میکند.
برای جزئیات بیشتر، به تمرکز صوتی در Android نسخه ۱۲ و بالاتر مراجعه کنید.
بهروزرسانیهای MediaDrm
برای تعیین اینکه آیا مؤلفه رمزگشای ایمن با میاناهای برنامهسازی کاربردی MediaDrm فعلی لازم است یا نه، باید این مراحل را دنبال کنید:
MediaDrmایجاد کنید.- جلسهای را باز کنید تا شناسه جلسه را دریافت کنید.
- بااستفاده از شناسه جلسه،
MediaCryptoایجاد کنید. - تماس با
MediaCrypto.requiresSecureDecoderComponent(mimeType).
با روشهای جدید requiresSecureDecoder(@NonNull String mime) و
requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level)
میتوانید این موضوع را بهمحض ایجاد MediaDrm تعیین کنید.
دوربین
افزونههای فروشنده Camera2
بسیاری از شرکای سازنده دستگاه ما افزونههای دوربین سفارشی ساختهاند (مانند بوکه، HDR، حالت شب، و غیره) که میخواهند برنامهها از آنها برای ایجاد تجربههای متمایز در دستگاههایشان استفاده کنند. کتابخانه CameraX ازقبل از این افزونههای سفارشی فروشنده پشتیبانی میکند. در Android 12، این افزونههای فروشنده اکنون مستقیماً در پلاتفرم نمایش داده میشوند.
این افزودنی به برنامههایی که پیادهسازیهای پیچیده
Camera2
دارند کمک میکند تا بدون نیاز به ایجاد تغییرات قابلتوجه در کد قدیمی، از افزونههای فروشنده بهرهمند شوند. Camera2 Extension API دقیقاً
همان مجموعه
افزونههای CameraX را نشان میدهد و این افزونهها ازقبل در بسیاری از
دستگاههای مختلف پشتیبانی میشوند، بنابراین میتوانید بدون هیچگونه
پیکربندی اضافی از آنها استفاده کنید.
برای اطلاعات بیشتر، به
CameraExtensionCharacteristics مراجعه کنید.
پشتیبانی از حسگر دوربین Quad bayer
امروزه بسیاری از دستگاههای Android با حسگرهای دوربین با وضوح بسیار بالا، معمولاً با الگوهای Quad یا Nona Bayer، عرضه میشوند و این حسگرها انعطافپذیری فوقالعادهای ازنظر کیفیت تصویر و عملکرد در نور کم ارائه میدهند. Android 12 میاناهای برنامهسازی کاربردی پلاتفرم جدیدی را معرفی میکند که به برنامههای طرف سوم اجازه میدهد از این حسگرهای همهکاره نهایت استفاده را ببرند. میاناهای برنامهسازی کاربردی جدید از رفتار منحصربهفرد این حسگرها پشتیبانی میکنند و این موضوع را درنظر میگیرند که این حسگرها ممکن است هنگام کار در حالت وضوح کامل یا «حداکثر وضوح» درمقابل حالت «پیشفرض»، از پیکربندیها و ترکیبهای جریانی مختلفی پشتیبانی کنند.
گرافیک و تصویر
ارائه دسترسی مستقیم به ردگیریهای سنگ قبر به برنامهها
از Android 12 به بعد، میتوانید ازطریق روش ApplicationExitInfo.getTraceInputStream() به سنگ قبر خرابی بومی برنامهتان بهعنوان میانگیر پروتکل دسترسی پیدا کنید. میانگیر پروتکل بااستفاده از این طرحواره سریالسازی میشود.
قبلاً، تنها راه دسترسی به این اطلاعات ازطریق
پل اشکالزدایی Android (adb) بود.
برای اطلاعات بیشتر، ارائه دسترسی مستقیم به ردگیریهای سنگ قبر به برنامهها را ببینید
پشتیبانی از تصویر AVIF
Android 12 پشتیبانی از تصاویری را که از «قالب فایل تصویری AV1» (AVIF) استفاده میکنند معرفی میکند. AVIF یک قالب محفظه برای تصاویر و توالی تصاویر کدگذاریشده بااستفاده از AV1 است. AVIF از محتوای کدگذاریشده درونفریم از فشردهسازی ویدیو بهره میبرد. این کار کیفیت تصویر را در مقایسه با قالبهای قدیمیتر تصویر، مثل JPEG، بهطور چشمگیری برای همان اندازه فایل بهبود میبخشد. برای بررسی عمیق مزایای این قالب، به پست وبلاگ جیک آرچیبالد مراجعه کنید.
محو کردن، فیلترهای رنگی، و جلوههای دیگر آسانتر شده است
Android 12 RenderEffect جدیدی اضافه میکند که جلوههای گرافیکی رایج مانند محو کردن، فیلترهای رنگی، جلوههای سایهزن Android، و غیره را در Viewها و سلسلهمراتبهای رندرینگ اعمال میکند. جلوهها را میتوان بهصورت جلوههای زنجیرهای (که جلوه داخلی و خارجی را ترکیب میکنند) یا جلوههای ترکیبی ترکیب کرد. ممکن است دستگاههای Android مختلف بهدلیل قدرت پردازش محدود از این ویژگی پشتیبانی کنند یا نکنند.
جلوهها را میتوان با فراخوانی View.setRenderEffect(RenderEffect) روی RenderNode
زیرین برای View ثانیه اعمال کرد.
برای پیادهسازی RenderEffect:
view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))
رمزگشایی تصویر پویانماییشده بومی
در Android 12، میانای برنامهسازی کاربردی NDK
ImageDecoder گسترش یافته است
تا همه فریمها و دادههای زمانبندی را از تصاویری که از قالبهای فایل
GIF پویانماییشده و
WebP پویانماییشده استفاده میکنند رمزگشایی کند. وقتی این API در Android 11 معرفی شد، فقط اولین تصویر را از پویانماییها در این قالبها رمزگشایی میکرد.
برای کاهش بیشتر اندازه APK و بهرهمندی از بهروزرسانیهای آتی مربوط به امنیت و عملکرد، بهجای کتابخانههای شخص ثالث از ImageDecoder استفاده کنید.
برای جزئیات بیشتر درباره میانای برنامهسازی کاربردی، به مرجع میانای برنامهسازی کاربردی و نمونه در GitHub مراجعه کنید.
اتصالپذیری
بیدار نگه داشتن برنامههای همپا
برای پشتیبانی از نیاز برنامههای همراه به ادامه اجرا برای مدیریت دستگاه، Android 12 میاناهای برنامهسازی کاربردیای را معرفی میکند که کارهای زیر را انجام میدهند:
- به شما امکان میدهد وقتی دستگاه همپا در محدوده است، برنامهای را فعال کنید.
- تضمین میکند که فرایند تا زمانی که دستگاه در محدوده باشد ادامه خواهد یافت.
برای استفاده از میاناهای برنامهسازی کاربردی، دستگاههایتان باید بااستفاده از مدیر دستگاه همپا متصل شده باشند. برای اطلاعات بیشتر،
CompanionDeviceManager.startObservingDevicePresence()
و
CompanionDeviceService.onDeviceAppeared()
را ببینید.
نمایههای «مدیر دستگاه همپا»
برنامههای شریک در Android 12 (سطح میانای برنامهسازی کاربردی ۳۱) و بالاتر میتوانند هنگام اتصال به ساعت از نمایههای دستگاه همپا استفاده کنند. استفاده از نمایه، فرایند ثبتنام را با دستهبندی کردن اعطای مجموعهای از اجازههای مختص نوع دستگاه در یک مرحله ساده میکند.
اجازههای دستهای پساز اتصال دستگاه به برنامه همپا اعطا میشود و فقط تا زمانیکه دستگاه مرتبط باشد باقی میماند. با حذف برنامه یا برداشتن ارتباط، اجازهها برداشته میشود.
برای اطلاعات بیشتر، به
AssociationRequest.Builder.setDeviceProfile() مراجعه کنید.
بهبودهای تخمین پهنای باند
در Android 12، قابلیتهای تخمین پهنای باند ارائهشده توسط
getLinkDownstreamBandwidthKbps()
و
getLinkUpstreamBandwidthKbps()
برای اتصال Wi-Fi و تلفن همراه بهبود یافته است. مقادیر برگرداندهشده اکنون
نشاندهنده میانگین وزنی همیشگی توان عملیاتی کاربر بهازای هر شرکت مخابراتی یا SSID
Wi-Fi، نوع شبکه، و سطح سیگنال در همه برنامههای دستگاه است.
این کار میتواند برآورد دقیقتر و واقعبینانهتری از توان عملیاتی موردانتظار ارائه دهد،
برآوردهایی از شروع سرد برنامهتان ارائه دهد، و درمقایسه با استفاده از دیگر روشهای برآورد توان عملیاتی،
به چرخههای کمتری نیاز دارد.
بهبودهای Wi-Fi Aware (NAN)
Android 12 چند بهبود به Wi-Fi Aware اضافه میکند:
- در دستگاههای دارای Android نسخه ۱۲ (سطح API ۳۱) و بالاتر، میتوانید از
onServiceLost()فراخوانی برگشتی استفاده کنید تا وقتی برنامهتان سرویس کشفشدهای را بهدلیل توقف سرویس یا خارج شدن از محدوده ازدست میدهد، هشدار دریافت کنید. - نحوه راهاندازی چندین مسیر داده (مسیرهای داده NAN) درحال تغییر است تا کارآمدتر شود. نسخههای قبلی از پیامرسانی L2 برای تبادل اطلاعات همتا به همتای آغازگران استفاده میکردند که باعث تأخیر میشد. در دستگاههای دارای Android نسخه ۱۲ و بالاتر، پاسخدهنده (سرور) را میتوان بهگونهای پیکربندی کرد که هر همتایی را بپذیرد—یعنی لازم نیست اطلاعات آغازگر را ازقبل بداند. این کار راهاندازی مسیر داده را سرعت میبخشد و چندین پیوند نقطه به نقطه را تنها با یک درخواست شبکه فعال میکند.
- برای جلوگیری از رد شدن درخواستهای اتصال یا کاوش توسط چارچوب بهدلیل
تمام شدن منابع، در دستگاههای دارای Android 12 و
بالاتر، میتوانید
WifiAwareManager.getAvailableAwareResources()را فراخوانی کنید. مقدار برگشتی این روش به شما امکان میدهد تعداد مسیرهای داده دردسترس، تعداد جلسههای انتشار دردسترس، و تعداد جلسههای اشتراک دردسترس را دریافت کنید.
اتصال همزمان همتا به همتا + اینترنت
وقتی دستگاههایی که Android 12 (سطح API ۳۱) و بالاتر را هدف قرار میدهند در دستگاههایی با پشتیبانی سختافزاری اجرا میشوند، استفاده از اتصالهای همتا به همتا اتصال Wi-Fi موجود شما را هنگام ایجاد اتصال به دستگاه همتا قطع نخواهد کرد. برای
بررسی پشتیبانی از این ویژگی، از
WifiManager.isMultiStaConcurrencySupported() استفاده کنید.
فعال کردن خاموش بودن صفحهنمایش برای پرداختهای NFC
در برنامههایی که Android نسخه ۱۲ و بالاتر را هدف قرار میدهند، میتوانید پرداختهای NFC را بدون روشن بودن صفحهنمایش دستگاه با تنظیم کردن requireDeviceScreenOn روی false فعال کنید. برای اطلاعات بیشتر درباره پرداخت با NFC با صفحهنمایش خاموش یا قفلشده، به
رفتار صفحهنمایش خاموش و صفحه قفل مراجعه کنید.
فضای ذخیرهسازی
Android 12 قابلیتهای مدیریت فضای ذخیرهسازی زیر را معرفی میکند:
- پشتیبانی از فروشگاه رسانه برای
MediaDocumentsProviderوقتی برنامهتان شناسه منبع یکسان رسانهای را که معادل شناسه منبع یکسان ارائهدهنده اسناد دادهشده است بازیابی میکند. - فهرستی برای ضبطهای گفتاری.
- اجازه
MANAGE_MEDIAکه به برنامه اجازه میدهد عملیات مدیریت رسانه را انجام دهد بدون اینکه برای هر عملیات، کادر گفتگوی تأیید به کاربر نشان دهد. - برنامههایی که هم اجازه
MANAGE_EXTERNAL_STORAGEو هم اجازهQUERY_ALL_PACKAGESرا دارند (مثل برنامههای مدیریت فایل) میتوانند یک فعالیت سفارشی را برای مدیریت فضای ذخیرهسازی برنامه دیگری فراخوانی کنند، بهشرطی که برنامه دیگر فعالیت سفارشی را ایجاد کند.
عملکرد اصلی
بهروزرسانی خودکار برنامه
Android 12 روش
setRequireUserAction()
را برای برنامههایی که از
PackageInstaller API استفاده میکنند معرفی میکند.
این روش به برنامههای نصبکننده اجازه میدهد بهروزرسانیهای برنامه را بدون نیاز به
تأیید کاربر انجام دهند.
اطلاعات مجموعه تراشه دستگاه
Android 12 دو ثابت به android.os.Build اضافه میکند که
اطلاعات مدل و فروشنده مجموعه تراشه SoC را ازطریق کیت توسعه نرمافزار (SDK) نشان میدهد. میتوانید این اطلاعات را بهترتیب با فراخوانی Build.SOC_MANUFACTURER و Build.SOC_MODEL بازیابی کنید.
بهروزرسانیهای میاناهای برنامهسازی کاربردی اصلی Java
براساس درخواستها و همکاری با توسعهدهندگان، کتابخانههای اصلی زیر را در Android 12 اضافه کردهایم:
| کلاس | میاناهای برنامهسازی کاربردی |
|---|---|
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
|