نمای کلی ویژگی ها و API ها

اندروید 12 ویژگی های جدید و API های عالی را برای توسعه دهندگان معرفی می کند. بخش‌های زیر به شما کمک می‌کند تا با ویژگی‌های برنامه‌های خود آشنا شوید و با APIهای مرتبط شروع کنید.

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

تجربه کاربری

مادی شما

اندروید 12 یک زبان طراحی جدید به نام Material You معرفی می‌کند که به شما کمک می‌کند تا برنامه‌های شخصی‌تر و زیباتر بسازید. برای اینکه همه آخرین به‌روزرسانی‌های Material Design 3 را در برنامه‌های خود بیاورید، نسخه آلفای Material Design Components را امتحان کنید.

مادی شما

بهبود ویجت ها

Android 12 API ابزارک موجود را برای بهبود تجربه کاربر و توسعه‌دهنده در پلتفرم و راه‌اندازها اصلاح می‌کند. ما راهنمایی ایجاد کرده‌ایم که به شما کمک می‌کند از سازگاری ویجت خود با Android 12 اطمینان حاصل کنید و آن را با ویژگی‌های جدید به‌روزرسانی کنید.

برای اطلاعات بیشتر به بهبود ویجت‌های Android 12 مراجعه کنید.

درج محتوای غنی

Android 12 یک API یکپارچه جدید معرفی می کند که به برنامه شما امکان می دهد محتوای غنی را از هر منبع موجود دریافت کند: کلیپ بورد، صفحه کلید، یا کشیدن و رها کردن.

برای اطلاعات بیشتر، به دریافت محتوای غنی مراجعه کنید.

API صفحه نمایش اسپلش برنامه

اندروید 12 یک انیمیشن راه‌اندازی برنامه جدید را برای همه برنامه‌ها معرفی می‌کند که شامل یک حرکت درون برنامه از زمان راه‌اندازی، یک صفحه نمایش اسپلش که نماد برنامه را نشان می‌دهد و یک انتقال به خود برنامه است. برای جزئیات بیشتر به راهنمای برنامه نویس splash screens مراجعه کنید.

API های گوشه گرد

اندروید 12 RoundedCorner و WindowInsets.getRoundedCorner(int position) را معرفی می کند که شعاع و نقطه مرکزی را برای گوشه های گرد ارائه می کنند.

برای اطلاعات بیشتر، گوشه های گرد را ببینید.

تجربیات لمسی غنی

اندروید 12 ابزارهایی را برای ایجاد بازخورد لمسی آموزنده برای رویدادهای رابط کاربری، جلوه‌های همه‌جانبه و لذت‌بخش برای بازی، و لمس لمسی برای بهره‌وری گسترش می‌دهد.

جلوه های محرک

اندروید 12 جلوه‌های گویا مانند تیک کم را اضافه می‌کند که از پهنای باند فرکانس وسیع‌تر جدیدترین محرک‌ها بهره می‌برد. توسعه دهندگان بازی اکنون می توانند به چندین محرک مختلف به طور مستقل در کنترلرهای بازی دسترسی داشته باشند تا اثر یکسان را به صورت همزمان یا جلوه های لمسی متفاوت را بر روی چندین محرک ارائه دهند. برای توسعه‌دهندگان، توصیه می‌کنیم از ثابت‌ها و اولیه‌ها به‌عنوان بلوک‌های ساختمانی برای جلوه‌های لمسی غنی استفاده کنند - ثابت‌ها برای بهبود رویدادهای رابط کاربری و آهنگساز لمسی برای توالی‌های اولیه برای جلوه‌های پیچیده‌تر. این APIها برای آزمایش در دستگاه‌های Pixel 4 در دسترس هستند و ما همچنان به همکاری با شرکای سازنده دستگاه خود ادامه می‌دهیم تا جدیدترین پشتیبانی لمسی را برای کاربران در سراسر اکوسیستم ارائه کنیم.

جلوه های لمسی همراه با صوتی

برنامه‌های Android 12 می‌توانند بازخورد لمسی حاصل از یک جلسه صوتی را با استفاده از لرزاننده تلفن ایجاد کنند. این فرصتی را برای تجربه بازی و صوتی فراگیرتر فراهم می کند. برای مثال، آهنگ‌های زنگ تقویت‌شده لمسی می‌توانند به شناسایی تماس‌گیرندگان کمک کنند، یا یک بازی رانندگی می‌تواند احساس زمین ناهموار را شبیه‌سازی کند.

برای اطلاعات بیشتر به مستندات مرجع HapticGenerator مراجعه کنید.

AppSearch

اندروید 12 AppSearch، یک موتور جستجوی روی دستگاه با کارایی بالا را به عنوان یک سرویس سیستم معرفی می کند. AppSearch به برنامه‌ها اجازه می‌دهد تا داده‌های ساختاریافته را فهرست‌بندی کنند و با قابلیت‌های جستجوی متن کامل داخلی، روی آن جستجو کنند. علاوه بر این، AppSearch از ویژگی های جستجوی بومی مانند فهرست بندی و بازیابی بسیار کارآمد، پشتیبانی چند زبانه و رتبه بندی مرتبط پشتیبانی می کند.

نمودار نمایه سازی و جستجو در AppSearch را نشان می دهد

AppSearch در دو نوع ارائه می‌شود: یک نمایه محلی برای استفاده از برنامه شما که با نسخه‌های قدیمی‌تر اندروید سازگار است، یا یک فهرست مرکزی که برای کل سیستم در Android 12 نگهداری می‌شود. با استفاده از نمایه مرکزی، برنامه شما می‌تواند اجازه دهد داده‌های آن در آن نمایش داده شود. رابط کاربری سیستم توسط مؤلفه هوشمند از پیش نصب شده سیستم ظاهر می شود. اینکه دقیقاً چه داده هایی بر روی سطوح UI سیستم نمایش داده می شود به OEM بستگی دارد. علاوه بر این، برنامه شما می‌تواند به‌طور ایمن داده‌ها را با سایر برنامه‌ها به اشتراک بگذارد تا به آنها اجازه دهد روی آن داده‌ها نیز جستجو کنند.

در راهنمای برنامه‌نویس درباره AppSearch بیشتر بیاموزید و استفاده از آن را با کتابخانه AppSearch Jetpack شروع کنید، که یک سطح API مناسب برای توسعه‌دهندگان و همچنین پشتیبانی از پردازشگر حاشیه‌نویسی را ارائه می‌دهد.

حالت بازی

مداخلات Game Mode API و Game Mode به شما امکان می دهد با اولویت بندی ویژگی هایی مانند عملکرد یا عمر باتری بر اساس تنظیمات کاربر یا تنظیمات خاص بازی، گیم پلی را بهینه کنید.

برای اطلاعات بیشتر، حالت بازی را ببینید.

توصیه ها و بهبودهای تصویر در تصویر (PiP).

اندروید 12 بهبودهای زیر را برای حالت PiP معرفی می کند:

پشتیبانی از حرکات PiP جدید

اندروید 12 اکنون از حرکات پنهان کردن و نزدیک کردن به زوم برای پنجره PiP پشتیبانی می کند:

  • برای پنهان کردن پنجره، کاربر می تواند پنجره را به لبه چپ یا راست بکشد. برای باز کردن پنجره، کاربر می تواند روی قسمت قابل مشاهده پنجره پنهان شده ضربه بزند یا آن را به بیرون بکشد.

  • کاربر اکنون می تواند اندازه پنجره PiP را با استفاده از کوچک کردن برای بزرگنمایی تغییر دهد.

اندروید 12 بهبودهای زیبایی قابل توجهی را به انتقال متحرک بین پنجره های تمام صفحه و PiP اضافه کرد. ما قویاً توصیه می کنیم همه تغییرات قابل اجرا را اجرا کنید. هنگامی که این کار را انجام دادید، این تغییرات به طور خودکار به صفحه نمایش های بزرگ مانند تاشوها و تبلت ها بدون نیاز به کار بیشتر تبدیل می شوند.

این ویژگی ها به شرح زیر است:

اعلان‌های تماس تلفنی جدید که امکان رتبه‌بندی اهمیت تماس‌های دریافتی را فراهم می‌کند

اندروید 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);

پشتیبانی از تصویر غنی شده برای اعلان ها

در اندروید 12، اکنون می توانید تجربه اعلان برنامه خود را با ارائه تصاویر متحرک در اعلان های MessagingStyle() و BigPictureStyle() غنی کنید. همچنین، برنامه شما اکنون می‌تواند کاربران را قادر سازد که هنگام پاسخ دادن به پیام‌ها از قسمت اعلان، پیام‌های تصویری ارسال کنند.

بهبود حالت همهجانبه برای ناوبری ژست

Android 12 رفتارهای موجود را ادغام می‌کند تا کاربران بتوانند دستورات ناوبری اشاره‌ای را در حالت غوطه‌ورانه انجام دهند . علاوه بر این، Android 12 رفتار سازگاری با عقب را برای حالت همهجانبه چسبنده ارائه می دهد.

اشتراک‌گذاری نشانی وب اخیر (فقط Pixel)

در دستگاه‌های Pixel، کاربران اکنون می‌توانند پیوندهای محتوای وب را که اخیراً مشاهده کرده‌اند را مستقیماً از صفحه نمایش اخیر به اشتراک بگذارند. پس از بازدید از محتوای یک برنامه، کاربر می تواند به صفحه Recents بکشد و برنامه ای را که در آن محتوا را مشاهده کرده است پیدا کند، سپس روی دکمه پیوند ضربه بزنید تا URL را کپی یا به اشتراک بگذارید.

برای اطلاعات بیشتر، به فعال کردن اشتراک‌گذاری نشانی وب اخیر مراجعه کنید.

امنیت و حریم خصوصی

داشبورد حریم خصوصی

یک جدول زمانی عمودی، برنامه‌های مختلفی را نشان می‌دهد که به اطلاعات مکان دسترسی داشته‌اند، و این دسترسی‌ها در چه زمانی انجام شده است
شکل 1. صفحه استفاده از موقعیت مکانی، بخشی از داشبورد حریم خصوصی.

در دستگاه‌های پشتیبانی‌شده که دارای Android 12 یا بالاتر هستند، صفحه داشبورد حریم خصوصی در تنظیمات سیستم ظاهر می‌شود. در این صفحه، کاربران می‌توانند به صفحه‌های جداگانه‌ای دسترسی داشته باشند که نشان می‌دهند برنامه‌ها چه زمانی به اطلاعات مکان، دوربین و میکروفون دسترسی دارند. هر صفحه یک جدول زمانی از زمانی که برنامه های مختلف به نوع خاصی از داده دسترسی پیدا کرده اند را نشان می دهد. شکل 1 جدول زمانی دسترسی به داده ها را برای اطلاعات مکان نشان می دهد.

برنامه شما می تواند منطقی را برای کاربران فراهم کند تا به آنها کمک کند بفهمند چرا برنامه شما به اطلاعات مکان، دوربین یا میکروفون دسترسی دارد. این منطق می تواند در صفحه جدید داشبورد حریم خصوصی، صفحه مجوزهای برنامه شما یا هر دو ظاهر شود.

مجوزهای بلوتوث

Android 12 مجوزهای BLUETOOTH_SCAN ، BLUETOOTH_ADVERTISE و BLUETOOTH_CONNECT را معرفی می کند. این مجوزها تعامل برنامه‌هایی را که Android 12 را هدف قرار می‌دهند با دستگاه‌های بلوتوث آسان‌تر می‌کنند، به‌ویژه برای برنامه‌هایی که نیازی به دسترسی به مکان دستگاه ندارند.

اعلامیه های مجوز بلوتوث برنامه خود را به روز کنید

برای آماده‌سازی دستگاه خود برای هدف قرار دادن Android 12 یا بالاتر، منطق برنامه خود را به‌روزرسانی کنید. به جای اعلام مجموعه قدیمی از مجوزهای بلوتوث ، مجموعه مدرنتری از مجوزهای بلوتوث را اعلام کنید.

جستجوی گروه مجوز

در Android 12 یا بالاتر، می‌توانید جویا شوید که چگونه سیستم مجوزهای ارائه‌شده توسط پلتفرم را در گروه‌های مجوز سازماندهی می‌کند:

  • برای تعیین گروه مجوزی که سیستم در آن مجوز تعریف شده از پلتفرم قرار داده است، getGroupOfPlatformPermission() را فراخوانی کنید.
  • برای تعیین مجوزهای تعریف شده توسط پلتفرم که سیستم در یک گروه مجوز خاص قرار داده است، getPlatformPermissionsForGroup() فراخوانی کنید.

پنهان کردن پنجره های پوشش برنامه

برای اینکه برنامه‌نویسان کنترل بیشتری بر آنچه کاربران هنگام تعامل با برنامه توسعه‌دهنده می‌بینند، داشته باشند، اندروید 12 امکان پنهان کردن پنجره‌های همپوشانی را که توسط برنامه‌هایی که دارای مجوز SYSTEM_ALERT_WINDOW طراحی شده‌اند را معرفی می‌کند.

پس از اعلام مجوز HIDE_OVERLAY_WINDOWS ، یک برنامه می‌تواند setHideOverlayWindows() فراخوانی کند تا نشان دهد که تمام پنجره‌های نوع TYPE_APPLICATION_OVERLAY زمانی که پنجره خود برنامه قابل مشاهده است، باید پنهان شوند. ممکن است برنامه‌ها هنگام نمایش صفحه‌های حساس، مانند جریان‌های تأیید تراکنش، این کار را انجام دهند.

برنامه‌هایی که پنجره‌هایی از نوع TYPE_APPLICATION_OVERLAY را نشان می‌دهند باید جایگزین‌هایی را در نظر بگیرند که ممکن است برای مورد استفاده‌شان مناسب‌تر باشد، مانند تصویر در تصویر یا حباب‌ها .

پرچم حفاظت از مجوز امضاکنندگان شناخته شده

با شروع در اندروید 12، ویژگی knownCerts برای مجوزهای سطح امضا به شما امکان می دهد در زمان اعلام به خلاصه گواهی های امضای شناخته شده مراجعه کنید.

برنامه شما می‌تواند این ویژگی را اعلام کند و از پرچم knownSigner استفاده کند تا به دستگاه‌ها و برنامه‌ها اجازه دهد به برنامه‌های دیگر مجوز امضا بدهند ، بدون نیاز به امضای برنامه‌ها در زمان ساخت و ارسال دستگاه.

گواهی خصوصیات دستگاه

Android 12 مجموعه برنامه‌هایی را گسترش می‌دهد که می‌توانند ویژگی‌های دستگاه را که در گواهی تأیید وجود دارند، هنگامی که این برنامه‌ها کلید جدیدی تولید می‌کنند، تأیید کنند.

از Android 9 (سطح API 28)، دارندگان خط‌مشی دستگاه (DPO) که از Keymaster نسخه 4.0 یا بالاتر استفاده می‌کنند، می‌توانند ویژگی‌های دستگاه را در این گواهی‌های تأیید تأیید کنند. با شروع اندروید 12، هر برنامه‌ای که Android 12 (سطح API 31) یا بالاتر را هدف قرار می‌دهد، می‌تواند این تأیید را با استفاده از متد setDevicePropertiesAttestationIncluded() انجام دهد.

ویژگی های دستگاه تولید شده شامل فیلدهای Build زیر است:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

اقدامات اعلان صفحه قفل ایمن

با شروع در Android 12، کلاس Notification.Action.Builder از متد setAuthenticationRequired() پشتیبانی می‌کند، که به برنامه شما اجازه می‌دهد قبل از اینکه برنامه شما یک اقدام اعلان را فراخوانی کند ، قفل دستگاه را باز کند . این روش به افزودن یک لایه امنیتی اضافی به اعلان ها در دستگاه های قفل شده کمک می کند.

رشته های قابل محلی سازی برای BiometricPrompt

Android 12 API های جدیدی را معرفی می کند تا به شما کمک کند تجربه کاربری احراز هویت بیومتریک برنامه خود را بهبود ببخشید. کلاس تودرتوی جدید BiometricManager.Strings شامل متدهای getButtonLabel() ، getPromptMessage() و getSettingName() می باشد که به برنامه شما اجازه می دهد برچسب دکمه، پیام اعلان یا نام تنظیمات برنامه را خوانا و بومی سازی شده توسط کاربر بازیابی کند. از این برچسب‌ها برای ایجاد دستورالعمل‌های دقیق‌تر روبه‌روی کاربر که مختص روش‌های احراز هویت بیومتریک مورد استفاده است، مانند «استفاده از قفل با چهره» یا «از اثر انگشت خود برای ادامه استفاده کنید» استفاده کنید.

تشخیص فیشینگ در برنامه‌های پیام‌رسان (فقط Pixel)

هنگامی که یک پیام مشکوک شناسایی می شود، کاربر پیامی مانند این را می بیند.

در دستگاه‌های Pixel پشتیبانی‌شده، Android 12 تشخیص فیشینگ را روی پیام‌های دریافتی در برنامه‌های پیام‌رسان محبوب اجرا می‌کند. این سیستم از یادگیری ماشینی روی دستگاه برای شناسایی فعالیت های مشکوک استفاده می کند. هنگامی که شناسایی شد، سیستم یک پوشش ایمنی را در بالای رابط کاربری برنامه پیام‌رسان نمایش می‌دهد تا به کاربران هشدار دهد. به عنوان مثال، تشخیص فیشینگ می تواند به کاربران در مورد خطرات احتمالی زیر هشدار دهد:

  • درخواست های مشکوک، مانند ارسال کد، پول یا موارد مشابه
  • آدرس های اینترنتی غیر قابل اعتماد
  • پیوست های مخرب
  • پیوند به برنامه های مخرب

علاوه بر هشدار به کاربر، پوشش همچنین به کاربر امکان می دهد پیام مشکوک را گزارش کند و در مورد هشدارهای صادر شده توسط سیستم بازخورد ارائه دهد.

برنامه‌نویسان می‌توانند با افزودن یک برچسب فراداده جدید از جمله رشته com.google.android.ALLOW_PHISHING_DETECTION در فایل‌های مانیفست برنامه خود، از این ویژگی انصراف دهند. به عنوان مثال:

<manifest>
    <application android:name="com.messagingapp">
        <meta-data android:name="com.google.android.ALLOW_PHISHING_DETECTION" android:value="false" />

    </application>
</manifest>

رسانه ها

رمزگذاری رسانه سازگار

با شروع Android 12 (سطح API 31)، این سیستم می‌تواند به‌طور خودکار ویدیوهای HEVC (H.265) و HDR (HDR10 و HDR10+) ضبط‌شده در دستگاه را به AVC (H.264) تبدیل کند، فرمتی که به طور گسترده با پخش‌کننده‌های استاندارد سازگار است. . وقتی کدک‌های مدرن بدون به خطر انداختن سازگاری با برنامه‌های قدیمی‌تر در دسترس باشند، از مزیت آن بهره می‌برند.

برای جزئیات بیشتر به رمزگذاری رسانه سازگار مراجعه کنید.

کلاس عملکرد

اندروید 12 استانداردی به نام کلاس عملکرد را معرفی می کند. یک کلاس عملکرد قابلیت‌های سخت‌افزاری را فراتر از نیازهای پایه اندروید مشخص می‌کند. هر دستگاه اندرویدی کلاس عملکردی که پشتیبانی می کند را اعلام می کند. توسعه دهندگان می توانند کلاس عملکرد دستگاه را در زمان اجرا بررسی کنند و تجربیات ارتقا یافته ای را ارائه دهند که از قابلیت های دستگاه نهایت استفاده را ببرد.

برای جزئیات بیشتر به کلاس عملکرد مراجعه کنید.

بهبود کدگذاری ویدیو

اندروید 12 مجموعه ای استاندارد از کلیدها را برای کنترل مقدار پارامتر کوانتیزاسیون (QP) برای رمزگذاری ویدیو تعریف می کند و به توسعه دهندگان اجازه می دهد از کدهای خاص فروشنده اجتناب کنند.

کلیدهای جدید در MediaFormat API و همچنین در کتابخانه رسانه NDK در دسترس هستند.

شروع با رمزگذارهای ویدیوی Android 12 حداقل آستانه کیفیت را اعمال می کند. این تضمین می‌کند که کاربران هنگام رمزگذاری ویدیوهایی با پیچیدگی صحنه بالا، کیفیت بسیار پایینی را تجربه نکنند.

فوکوس صوتی

با شروع Android 12 (سطح API 31)، هنگامی که یک برنامه فوکوس صوتی را درخواست می کند در حالی که برنامه دیگری فوکوس را دارد و در حال پخش است، سیستم برنامه پخش را محو می کند.

برای جزئیات بیشتر به فوکوس صوتی در اندروید 12 و بالاتر مراجعه کنید.

به روز رسانی MediaDrm

برای تعیین اینکه آیا یک مؤلفه رمزگشای ایمن با APIهای MediaDrm فعلی مورد نیاز است، باید این مراحل را دنبال کنید:

  1. یک MediaDrm ایجاد کنید.
  2. برای دریافت شناسه جلسه، یک جلسه باز کنید.
  3. با استفاده از شناسه جلسه یک MediaCrypto ایجاد کنید.
  4. MediaCrypto.requiresSecureDecoderComponent(mimeType) را فراخوانی کنید.

با روش‌های جدید requiresSecureDecoder(@NonNull String mime) و requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) می‌توانید به محض ایجاد یک MediaDrm این را تعیین کنید.

دوربین

پسوندهای فروشنده Camera2

بسیاری از شرکای سازنده دستگاه ما افزونه‌های دوربین سفارشی مانند بوکه، HDR، حالت شب و موارد دیگر را ساخته‌اند که می‌خواهند برنامه‌ها از آنها برای ایجاد تجربه‌های متفاوت در دستگاه‌های خود استفاده کنند. کتابخانه CameraX از قبل از این افزونه‌های فروشنده سفارشی پشتیبانی می‌کند. در اندروید 12، این افزونه‌های فروشنده اکنون مستقیماً در پلتفرم نمایش داده می‌شوند.

این افزوده به برنامه‌هایی که پیاده‌سازی‌های پیچیده Camera2 دارند کمک می‌کند از پسوندهای فروشنده بدون نیاز به ایجاد تغییرات قابل توجه در کد قدیمی استفاده کنند. APIهای برنامه افزودنی Camera2 دقیقاً همان مجموعه برنامه‌های افزودنی را در CameraX نشان می‌دهند و آن‌ها قبلاً در بسیاری از دستگاه‌های مختلف پشتیبانی می‌شوند، بنابراین می‌توانید بدون هیچ گونه پیکربندی اضافی از آنها استفاده کنید.

برای اطلاعات بیشتر، CameraExtensionCharacteristics ببینید.

پشتیبانی از سنسور دوربین چهارگانه

بسیاری از دستگاه‌های اندرویدی امروزه با سنسورهای دوربین فوق‌العاده با وضوح بالا، معمولاً با الگوهای Quad یا Nona Bayer عرضه می‌شوند، و از نظر کیفیت تصویر و عملکرد در نور کم، انعطاف‌پذیری زیادی را ارائه می‌دهند. Android 12 API های پلتفرمی جدیدی را معرفی می کند که به برنامه های شخص ثالث اجازه می دهد از این حسگرهای همه کاره استفاده کامل کنند. APIهای جدید از رفتار منحصربه‌فرد این حسگرها پشتیبانی می‌کنند و در نظر می‌گیرند که هنگام کار در حالت وضوح کامل یا حالت «حداکثر وضوح» در مقابل حالت «پیش‌فرض»، ممکن است از پیکربندی‌ها و ترکیب‌های مختلف جریان پشتیبانی کنند.

گرافیک و تصاویر

دسترسی مستقیم به آثار سنگ قبر را برای برنامه‌ها فراهم کنید

با شروع اندروید 12، می‌توانید از طریق متد ApplicationExitInfo.getTraceInputStream() به سنگ قبر اصلی برنامه خود به عنوان بافر پروتکل دسترسی داشته باشید. بافر پروتکل با استفاده از این طرح سریالی می شود. پیش از این، تنها راه دسترسی به این اطلاعات از طریق پل اشکال زدایی اندروید (adb) بود.

برای اطلاعات بیشتر، به ارائه دسترسی مستقیم برنامه‌ها به آثار سنگ قبر مراجعه کنید

پشتیبانی از تصویر AVIF

اندروید 12 از تصاویری که از فرمت فایل تصویری AV1 (AVIF) استفاده می کنند، پشتیبانی می کند. AVIF یک فرمت کانتینری برای تصاویر و دنباله‌ای از تصاویر است که با استفاده از AV1 کدگذاری شده‌اند. AVIF از محتوای رمزگذاری شده درون فریم از فشرده سازی ویدیو بهره می برد. این به طور چشمگیری کیفیت تصویر را برای همان اندازه فایل در مقایسه با فرمت های تصویر قدیمی تر، مانند JPEG، بهبود می بخشد. برای نگاهی عمیق به مزایای این قالب، به پست وبلاگ جیک آرچیبالد مراجعه کنید.

تاری آسان تر، فیلترهای رنگی و جلوه های دیگر

Android 12 RenderEffect جدید را اضافه می‌کند که جلوه‌های گرافیکی رایج مانند تاری، فیلترهای رنگی، افکت‌های سایه‌زن اندروید و موارد دیگر را به View و سلسله‌مراتب رندر اعمال می‌کند. افکت‌ها را می‌توان به‌عنوان جلوه‌های زنجیره‌ای (که یک اثر درونی و بیرونی را تشکیل می‌دهند) یا جلوه‌های ترکیبی ترکیب کرد. ممکن است دستگاه های اندرویدی مختلف به دلیل قدرت پردازش محدود از این ویژگی پشتیبانی کنند یا نکنند.

همچنین می‌توان افکت‌ها را با فراخوانی View.setRenderEffect(RenderEffect) روی RenderNode زیرین برای View اعمال کرد.

برای پیاده سازی RenderEffect :

view.setRenderEffect(RenderEffect.createBlurEffect(radiusX, radiusY, SHADER_TILE_MODE))

رمزگشایی تصویر متحرک بومی

در اندروید 12، NDK ImageDecoder API برای رمزگشایی تمام فریم ها و داده های زمان بندی تصاویری که از فرمت های فایل متحرک GIF و WebP متحرک استفاده می کنند، گسترش یافته است. هنگامی که در اندروید 11 معرفی شد، این API تنها اولین تصویر را از انیمیشن های این فرمت ها رمزگشایی کرد.

از ImageDecoder به جای کتابخانه های شخص ثالث برای کاهش بیشتر اندازه APK و بهره مندی از به روز رسانی های آینده مربوط به امنیت و عملکرد استفاده کنید.

برای جزئیات بیشتر در مورد API، به مرجع API و نمونه در GitHub مراجعه کنید.

قابلیت اتصال

بیدار نگه داشتن برنامه های همراه

برای پشتیبانی از نیاز برنامه‌های همراه به اجرا ماندن برای مدیریت دستگاه، Android 12 APIهایی را معرفی می‌کند که کارهای زیر را انجام می‌دهند:

  • شما را قادر می سازد تا زمانی که دستگاه همراه در محدوده است، برنامه را بیدار کنید.
  • تضمین کنید که تا زمانی که دستگاه در محدوده قرار دارد، روند به اجرا ادامه خواهد داد.

برای استفاده از APIها، دستگاه‌های شما باید با استفاده از Companion Device Manager متصل شوند. برای اطلاعات بیشتر، CompanionDeviceManager.startObservingDevicePresence() و CompanionDeviceService.onDeviceAppeared() را ببینید.

نمایه های مدیر دستگاه همراه

گفتگوی مجوزها که از نمایه دستگاه همراه برای درخواست چندین مجوز در یک درخواست استفاده می کند.

برنامه‌های شریک در Android 12 (سطح API 31) و بالاتر می‌توانند از نمایه‌های دستگاه همراه هنگام اتصال به ساعت استفاده کنند. استفاده از نمایه، فرآیند ثبت‌نام را با اعطای مجموعه‌ای از مجوزهای نوع دستگاه در یک مرحله ساده می‌کند.

مجوزهای همراه پس از اتصال دستگاه به برنامه همراه اعطا می شود و فقط تا زمانی که دستگاه مرتبط است دوام می آورد. حذف برنامه یا حذف انجمن، مجوزها را حذف می کند.

برای اطلاعات بیشتر، AssociationRequest.Builder.setDeviceProfile() ببینید.

بهبود تخمین پهنای باند

در Android 12، قابلیت‌های تخمین پهنای باند ارائه شده توسط getLinkDownstreamBandwidthKbps() و getLinkUpstreamBandwidthKbps() برای اتصال Wi-Fi و سلولی بهبود یافته است. مقادیری که اکنون برگردانده شده اند نشان دهنده میانگین وزنی تمام وقت کاربر به ازای هر شرکت مخابراتی یا SSID WiFi، نوع شبکه و سطح سیگنال در همه برنامه های موجود در دستگاه است. این می تواند تخمین دقیق تر و واقعی تر از توان مورد انتظار را ارائه دهد، تخمین هایی را در شروع سرد برنامه شما ارائه دهد و در مقایسه با سایر روش های تخمین توان، به چرخه های کمتری نیاز دارد.

پیشرفت های Wi-Fi Aware (NAN).

اندروید 12 چند پیشرفت به Wi-Fi Aware اضافه می کند:

  • در دستگاه‌های دارای Android 12 (سطح API 31) و بالاتر، می‌توانید از پاسخ تماس onServiceLost() استفاده کنید تا زمانی که برنامه شما یک سرویس کشف‌شده را به دلیل توقف یا خارج شدن از محدوده سرویس از دست داده است، هشدار داده شود.
  • روشی که چندین مسیر داده (NAN Data Paths) راه اندازی می شوند در حال تغییر است تا کارآمدتر شود. نسخه‌های قبلی از پیام‌رسانی L2 برای تبادل اطلاعات همتایان آغازگر استفاده می‌کردند که تأخیر را معرفی می‌کرد. در دستگاه‌های دارای Android 12 و بالاتر، پاسخ‌دهنده (سرور) را می‌توان طوری پیکربندی کرد که هر همتای را بپذیرد - یعنی نیازی به دانستن اطلاعات آغازگر از قبل ندارد. این امر به بالا آوردن مسیر داده سرعت می بخشد و چندین پیوند نقطه به نقطه را تنها با یک درخواست شبکه فعال می کند.
  • برای جلوگیری از رد کردن درخواست‌های کشف یا اتصال به دلیل کمبود منابع، در دستگاه‌های دارای Android 12 و بالاتر، می‌توانید با WifiAwareManager.getAvailableAwareResources() تماس بگیرید. مقدار برگشتی این روش به شما امکان می دهد تعداد مسیرهای داده موجود، تعداد جلسات انتشار موجود و تعداد جلسات اشتراک موجود را دریافت کنید.

همتا به همتا + اتصال به اینترنت همزمان

وقتی دستگاه‌هایی که Android 12 (سطح API 31) و بالاتر را هدف قرار می‌دهند، روی دستگاه‌هایی با پشتیبانی سخت‌افزار اجرا می‌شوند، استفاده از اتصالات نظیر به نظیر اتصال Wi-Fi موجود شما را هنگام ایجاد اتصال به دستگاه همتا قطع نمی‌کند. برای بررسی پشتیبانی از این ویژگی، از WifiManager.isMultiStaConcurrencySupported() استفاده کنید.

خاموش کردن صفحه را برای پرداخت های NFC فعال کنید

در برنامه‌هایی که Android 12 و بالاتر را هدف قرار می‌دهند، می‌توانید پرداخت‌های NFC را بدون روشن بودن صفحه نمایش دستگاه با تنظیم requireDeviceScreenOn روی false فعال کنید. برای اطلاعات بیشتر درباره پرداخت‌های NFC با صفحه خاموش یا قفل، به صفحه خاموش و رفتار قفل صفحه مراجعه کنید.

ذخیره سازی

اندروید 12 قابلیت های مدیریت فضای ذخیره سازی زیر را معرفی می کند:

عملکرد اصلی

به روز رسانی خودکار برنامه

اندروید 12 متد setRequireUserAction() را برای برنامه هایی که از PackageInstaller API استفاده می کنند معرفی می کند. این روش به برنامه های نصب کننده اجازه می دهد تا بدون نیاز به تایید کاربر، به روز رسانی برنامه را انجام دهند.

اطلاعات چیپست دستگاه

Android 12 دو ثابت به android.os.Build اضافه می‌کند که اطلاعات مدل و فروشنده چیپست SoC را از طریق SDK نشان می‌دهد. می توانید این اطلاعات را به ترتیب با فراخوانی Build.SOC_MANUFACTURER و Build.SOC_MODEL بازیابی کنید.

به روز رسانی به API های اصلی جاوا

بر اساس درخواست‌ها و همکاری با توسعه‌دهندگان، کتابخانه‌های اصلی زیر را در Android 12 اضافه کرده‌ایم:

کلاس 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