نمای کلی ویژگی ها و 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
،

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

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

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

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

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

اشتراک URL Recents (فقط پیکسل)

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

برای کسب اطلاعات بیشتر ، به اشتراک گذاری URL Enable Recents مراجعه کنید.

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

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

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

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

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

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

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

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

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

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

در Android 12 یا بالاتر ، می توانید از نحوه سازماندهی این سیستم مجوزهای ارائه شده به سیستم عامل به گروه های مجوز استفاده کنید:

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

مخفی کردن برنامه های Overlay Windows

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

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

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

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

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

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

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

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

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

خصوصیات دستگاه تولید شده شامل زمینه های Build زیر است:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

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

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

رشته های محلی برای بیومتریک پرورپت

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

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

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

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

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

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

توسعه دهندگان می توانند با افزودن یک برچسب ابرداده جدید از جمله رشته 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) ضبط کند ، فرمی که به طور گسترده با بازیکنان استاندارد سازگار است . این از کدک های مدرن در صورت موجود بودن بدون قربانی سازگاری با برنامه های قدیمی استفاده می کند.

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

کلاس عملکرد

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

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

پیشرفت های رمزگذاری ویدیویی

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

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

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

تمرکز صوتی

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

برای اطلاعات بیشتر به تمرکز صوتی در Android 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 2

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

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

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

پشتیبانی از سنسور دوربین Quad Bayer

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

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

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

با شروع در Android 12 ، می توانید از طریق روش ApplicationExitInfo.getTraceInputStream() به سنگ قبر Crash Bative App به عنوان یک بافر پروتکل دسترسی پیدا کنید. بافر پروتکل با استفاده از این طرح سریال می شود. پیش از این ، تنها راه دسترسی به این اطلاعات از طریق Bridge Android Debug (ADB) بود.

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

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

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

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

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

اثرات همچنین می تواند با استفاده از View.setRenderEffect(RenderEffect) در RenderNode اساسی برای View استفاده شود.

برای اجرای یک RenderEffect :

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

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

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

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

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

قابلیت اتصال

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

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

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

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

پروفایل مدیر دستگاه همراه

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

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

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

برای کسب اطلاعات بیشتر ، به AssociationRequest.Builder.setDeviceProfile() مراجعه کنید.

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

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

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

Android 12 برخی از پیشرفت ها را به Wi-Fi آگاه می کند:

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

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

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

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

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

ذخیره سازی

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

عملکرد اصلی

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

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

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

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

به روزرسانی به API های هسته ای Java

براساس درخواست ها و همکاری با توسعه دهندگان ، ما کتابخانه های اصلی زیر را در 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
،

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

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

تجربه کاربری

مادی شما

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

مادی شما

پیشرفت های ابزارک

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

برای اطلاعات بیشتر به پیشرفت های ابزارک Android 12 مراجعه کنید.

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

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

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

صفحه نمایش صفحه چلپ چلوپ API

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

API های گوشه ای گرد

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

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

تجربیات غنی از هاپتیک

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

اثرات محرک

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

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

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

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

AppSearch

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

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

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

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

حالت بازی

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

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

توصیه ها و پیشرفت های تصویر (PIP)

Android 12 پیشرفت های زیر را برای حالت PIP معرفی می کند:

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

Android 12 در حال حاضر از حرکات Stashing و Pinch-to-Zoom برای پنجره PIP پشتیبانی می کند:

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

  • کاربر اکنون می تواند پنجره PIP را با استفاده از pinch-to-zoom تغییر اندازه دهد.

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

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

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

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 رفتار سازگاری به عقب را برای حالت همهجانبه چسبنده فراهم می کند.

اشتراک URL Recents (فقط پیکسل)

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

برای کسب اطلاعات بیشتر ، به اشتراک گذاری URL Enable Recents مراجعه کنید.

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

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

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

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

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

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

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

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

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

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

در Android 12 یا بالاتر ، می توانید از نحوه سازماندهی این سیستم مجوزهای ارائه شده به سیستم عامل به گروه های مجوز استفاده کنید:

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

مخفی کردن برنامه های Overlay Windows

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

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

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

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

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

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

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

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

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

خصوصیات دستگاه تولید شده شامل زمینه های Build زیر است:

  • BRAND
  • DEVICE
  • MANUFACTURER
  • MODEL
  • PRODUCT

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

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

رشته های محلی برای بیومتریک پرورپت

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

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

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

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

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

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

توسعه دهندگان می توانند با افزودن یک برچسب ابرداده جدید از جمله رشته 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>

رسانه ها

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

Starting in Android 12 (API level 31), the system can automatically transcode HEVC(H.265) and HDR (HDR10 and HDR10+) videos recorded on the device to AVC (H.264), a format which is widely compatible with standard players . This takes advantage of modern codecs when they are available without sacrificing compatibility with older applications.

See compatible media transcoding for more details.

Performance class

Android 12 introduces a standard called performance class . A performance class specifies hardware capabilities beyond Android's baseline requirements. Each Android device declares the performance class that it supports. Developers can check the device's performance class at runtime and provide upgraded experiences that take full advantage of the device's capabilities.

See Performance class for more details.

Video encoding improvements

Android 12 defines a standard set of keys for controlling the quantization parameter (QP) value for video encoding, allowing developers to avoid vendor-specific code.

The new keys are available in the MediaFormat API and also in the NDK Media library .

Starting with Android 12 video encoders enforce a minimum quality threshold. This guarantees that users don't experience extremely low quality when encoding videos with high scene complexity.

Audio focus

Starting with Android 12 (API level 31), when an app requests audio focus while another app has the focus and is playing, the system fades out the playing app.

See Audio focus in Android 12 and higher for more details.

MediaDrm updates

In order to determine whether a secure decoder component is required with the current MediaDrm APIs, you must follow these steps:

  1. Create a MediaDrm .
  2. Open a session to obtain a session id.
  3. Create a MediaCrypto using the session id.
  4. Call MediaCrypto.requiresSecureDecoderComponent(mimeType) .

With the new methods requiresSecureDecoder(@NonNull String mime) and requiresSecureDecoder(@NonNull String mime, @SecurityLevel int level) you can determine this as soon as you create a MediaDrm .

دوربین

Camera2 vendor extensions

Many of our device manufacturer partners have built custom camera extensions—such as Bokeh, HDR, Night mode, and others—that they want apps to use to create differentiated experiences on their devices. The CameraX library already supports these custom vendor extensions. In Android 12, these vendor extensions are now exposed directly in the platform.

This addition helps apps that have complex Camera2 implementations take advantage of vendor extensions without having to make significant changes to legacy code. The Camera2 Extension APIs expose exactly the same set of extensions as in CameraX, and those are already supported on many different devices , so you can use them without any additional configuration.

For more information, see CameraExtensionCharacteristics .

Quad bayer camera sensor support

Many Android devices today ship with ultra high-resolution camera sensors, typically with Quad or Nona Bayer patterns, and these offer great flexibility in terms of image quality and low-light performance. Android 12 introduces new platform APIs that let third-party apps take full advantage of these versatile sensors. The new APIs support the unique behavior of these sensors and take into account that they might support different stream configurations and combinations when operating in full resolution or 'maximum resolution' mode vs 'default' mode.

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

Provide apps direct access to tombstone traces

Starting in Android 12, you can access your app's native crash tombstone as a protocol buffer through the ApplicationExitInfo.getTraceInputStream() method. The protocol buffer is serialized using this schema . Previously, the only way to get access to this information was through the Android Debug Bridge (adb).

For more information, see Provide apps direct access to tombstone traces

AVIF image support

Android 12 introduces support for images that use the AV1 Image File Format (AVIF). AVIF is a container format for images and sequences of images encoded using AV1. AVIF takes advantage of the intra-frame encoded content from video compression. This dramatically improves image quality for the same file size when compared to older image formats, such as JPEG. For an in-depth look at the advantages of this format, see Jake Archibald's blog post .

Easier blurs, color filters, and other effects

Android 12 adds the new RenderEffect that applies common graphics effects such as blurs, color filters, Android shader effects, and more to View s and rendering hierarchies. Effects can be combined as either chain effects (which compose an inner and outer effect) or blended effects. Different Android devices may or may not support the feature due to limited processing power.

Effects can also be applied to the underlying RenderNode for View s by calling View.setRenderEffect(RenderEffect) .

To implement a RenderEffect :

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

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

In Android 12, the NDK ImageDecoder API has been expanded to decode all frames and timing data from images that use the animated GIF and animated WebP file formats. When it was introduced in Android 11, this API decoded only the first image from animations in these formats.

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

For more details on the API, refer to the API reference and the sample on GitHub .

قابلیت اتصال

Keeping companion apps awake

To support the need of companion apps to stay running to manage the device, Android 12 introduces APIs that do the following:

  • Enable you to wake an app when a companion device is within range.
  • Guarantee that the process will continue running while the device stays within range.

To use the APIs, your devices must be connected using Companion Device Manager . For more information, see CompanionDeviceManager.startObservingDevicePresence() and CompanionDeviceService.onDeviceAppeared() .

Companion Device Manager profiles

A permissions dialog that uses a companion device profile to request multiple permissions in a single request.

Partner apps on Android 12 (API level 31) and higher can use companion device profiles when connecting to a watch. Using a profile simplifies the enrollment process by bundling the granting of a device-type-specific set of permissions into one step.

The bundled permissions are granted to the companion app once the device connects, and last only while the device is associated. Deleting the app or removing the association removes the permissions.

For more information, see AssociationRequest.Builder.setDeviceProfile() .

Bandwidth estimation improvements

In Android 12, the bandwidth estimation capabilities provided by getLinkDownstreamBandwidthKbps() and getLinkUpstreamBandwidthKbps() are improved for both Wi-Fi and cellular connectivity. The values returned now represent the user's all-time weighted average throughput per carrier or WiFi SSID, network type, and signal level, across all applications on the device. This can return a more-accurate and realistic estimate of expected throughput, provide estimates on a cold start of your application, and requires fewer cycles when compared to using other throughput estimation methods.

Wi-Fi Aware (NAN) enhancements

Android 12 adds some enhancements to Wi-Fi Aware:

  • On devices running Android 12 (API level 31) and higher, you can use the onServiceLost() callback to be alerted when your app has lost a discovered service due to the service stopping or moving out of range.
  • The way that multiple data-paths (NAN Data Paths) are set up is changing to be more efficient. Earlier versions used L2 messaging to exchange peer information of the initiators, which introduced latency. On devices running Android 12 and higher, the responder (server) can be configured to accept any peer—that is, it doesn't need to know the initiator information upfront. This speeds up datapath bringup and enables multiple point-to-point links with only one network request.
  • To prevent the framework from rejecting discovery or connection requests due to running out of resources, on devices running Android 12 and higher, you can call WifiAwareManager.getAvailableAwareResources() . This method's return value lets you get the number of available data paths, the number of available publish sessions, and the number of available subscribe sessions.

Concurrent Peer-to-Peer + Internet Connection

When devices targeting Android 12 (API level 31) and higher run on devices with hardware support, using Peer-to-peer connections will not disconnect your existing Wi-Fi connection when creating the connection to the peer device. To check for support for this feature, use WifiManager.isMultiStaConcurrencySupported() .

Enable screen off for NFC payments

In apps that target Android 12 and higher, you can enable NFC payments without the device's screen on by setting requireDeviceScreenOn to false . For more information about NFC payments with screen off or locked, see Screen off and lock-screen behavior .

ذخیره سازی

Android 12 introduces the following storage management capabilities:

عملکرد اصلی

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

Android 12 introduces the setRequireUserAction() method for apps that use the PackageInstaller API. This method allows installer apps to perform app updates without requiring the user to confirm the action.

Device chipset information

Android 12 adds two constants to android.os.Build that expose the SoC chipset vendor and model information via the SDK. You can retrieve this information by calling Build.SOC_MANUFACTURER and Build.SOC_MODEL respectively.

Updates to core Java APIs

Based on requests and collaboration with developers, we've added the following core libraries in 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