ویژگی‌ها و میاناهای برنامه‌سازی کاربردی Android 10

Android 10 ویژگی‌ها و قابلیت‌های فوق‌العاده‌ای برای کاربران و توسعه‌دهندگان معرفی می‌کند. این سند آنچه را که برای توسعه‌دهندگان دردسترس است برجسته می‌کند.

برای آشنایی با میاناهای برنامه‌سازی کاربردی، گزارش تفاوت میانای برنامه‌سازی کاربردی را بخوانید یا به مرجع میانای برنامه‌سازی کاربردی Android مراجعه کنید — به‌دنبال میاناهای برنامه‌سازی کاربردی‌ای بگردید که «در سطح میانای برنامه‌سازی کاربردی ۲۹ اضافه شده‌اند». همچنین حتماً تغییرات رفتاری Android 10 (برای برنامه‌هایی که سطح میانای برنامه‌سازی کاربردی ۲۹ را هدف قرار می‌دهند و برای همه برنامه‌ها) و همچنین تغییرات حریم خصوصی را بررسی کنید تا با بخش‌هایی که تغییرات پلاتفرم ممکن است بر برنامه‌هایتان تأثیر بگذارد آشنا شوید.

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

Android 10 تعدادی ویژگی امنیتی معرفی می‌کند که در بخش‌های زیر خلاصه شده‌اند.

کادرهای گفتگوی اصالت‌سنجی زیست‌سنجشی بهبودیافته

Android 10 بهبودهای زیر را در پشتیبانی از اصالت‌سنجی زیست‌سنجشی معرفی می‌کند:

  • بررسی قابلیت اصالت‌سنجی زیست‌سنجشی.
  • سازوکار جایگزینی که به کاربر امکان می‌دهد درصورت عدم امکان اصالت‌سنجی بااستفاده از ورودی زیست‌سنجشی، بااستفاده از پین، الگو، یا گذرواژه دستگاه اصالت‌سنجی کند.
  • نکته‌ای که به سیستم می‌گوید پس‌از اینکه کاربر بااستفاده از روش زیست‌سنجشی ضمنی اصالت‌سنجی شد، تأیید کاربر را درخواست نکند. برای مثال، می‌توانید به سیستم بگویید که پس‌از اصالت‌سنجی کاربر بااستفاده از اصالت‌سنجی با چهره، دیگر نیازی به تأیید نباشد.

اجرای کد DEX جاسازی‌شده مستقیماً از APK

از Android 10، می‌توانید به پلاتفرم بگویید کد DEX جاسازی‌شده را مستقیماً از فایل APK برنامه‌تان اجرا کند. این گزینه می‌تواند به جلوگیری از حمله کمک کند اگر مهاجمی موفق شود کد کامپایل‌شده محلی را در دستگاه دستکاری کند.

برای اطلاعات بیشتر، اجرای کد DEX جاسازی‌شده مستقیماً از APK را ببینید.

پشتیبانی از TLS 1.3

Android 10 پشتیبانی از TLS 1.3 را اضافه می‌کند. TLS 1.3 بازبینی عمده‌ای در استاندارد TLS است که شامل مزایای عملکردی و امنیت بهبودیافته است. معیارهای ما نشان می‌دهد که اتصالات امن با TLS 1.3 در مقایسه با TLS 1.2 تا ۴۰٪ سریع‌تر برقرار می‌شوند.

برای جزئیات بیشتر درباره پیاده‌سازی TLS 1.3، به بخش TLS در صفحه تغییرات رفتار برای همه برنامه‌ها مراجعه کنید.

Public Conscrypt API

از Android 10، ارائه‌دهنده امنیتی Conscrypt شامل یک میانای برنامه‌سازی کاربردی عمومی برای عملکرد TLS است.

مجموعه کلاس‌های تحت android.net.ssl حاوی روش‌های ایستا برای دسترسی به عملکردهایی است که از APIهای عمومی javax.net.ssl دردسترس نیستند. نام این کلاس‌ها را می‌توان به‌صورت جمع کلاس javax.net.ssl مربوطه استنباط کرد. برای مثال، کدی که روی نمونه‌های javax.net.ssl.SSLSocket عمل می‌کند می‌تواند به‌جای آن از روش‌های SSLSockets استفاده کند.

ویژگی‌های اتصال‌پذیری

Android 10 شامل چندین بهبود مربوط به شبکه‌سازی و اتصال‌پذیری است.

میانای برنامه‌سازی کاربردی اتصال شبکه Wi-Fi

Android 10 پشتیبانی از اتصال‌های همتابه‌همتا را اضافه می‌کند. این ویژگی به برنامه شما امکان می‌دهد تا بااستفاده از WifiNetworkSpecifier برای توصیف ویژگی‌های شبکه درخواست‌شده، از کاربر بخواهد نقطه دسترسی‌ای را که دستگاه به آن متصل است تغییر دهد. اتصال همتا به همتا برای اهداف غیرمرتبط با ارائه شبکه استفاده می‌شود، مثل پیکربندی راه‌اندازی برای دستگاه‌های ثانویه مانند Chromecast و سخت‌افزار Google Home.

برای اطلاعات بیشتر، به Wi-Fi Network Request API for peer-to-peer connectivity مراجعه کنید.

میانای برنامه‌سازی کاربردی پیشنهاد شبکه Wi-Fi

Android 10 پشتیبانی از برنامه شما را اضافه می‌کند تا از کاربر بخواهد به نقطه دسترسی Wi-Fi متصل شود. می‌توانید پیشنهادهایی برای اتصال به شبکه ارائه دهید. درنهایت پلاتفرم براساس ورودی برنامه شما و برنامه‌های دیگر انتخاب می‌کند که کدام نقطه دسترسی را بپذیرد.

برای اطلاعات بیشتر درباره این ویژگی، پیشنهاد Wi-Fi را ببینید.

بهبود حالت‌های تأخیر کم و عملکرد بالای Wi-Fi

Android 10 به شما امکان می‌دهد برای به‌حداقل رساندن تأخیر، به مودم زیرین راهنمایی ارائه دهید.

‫Android 10 میانای برنامه‌سازی کاربردی قفل Wi-Fi را گسترش می‌دهد تا به‌طور مؤثر از حالت عملکرد بالا و حالت تأخیر کم پشتیبانی کند. ذخیره انرژی Wi-Fi برای حالت عملکرد بالا و تأخیر کم غیرفعال است و بسته به پشتیبانی مودم، ممکن است بهینه‌سازی بیشتر تأخیر در حالت تأخیر کم فعال شود.

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

جستجوهای تخصصی در رافع ساناد

Android 10 پشتیبانی بومی را برای جستجوهای ساناد تخصصی بااستفاده از جستجوهای متن ساده و حالت DNS-over-TLS اضافه می‌کند. قبلاً، رافع ساناد پلاتفرم فقط از سوابق A و AAAA پشتیبانی می‌کرد که فقط امکان جستجوی نشانی‌های IP مرتبط با نام را فراهم می‌کردند، اما از هیچ نوع سابقه دیگری پشتیبانی نمی‌کرد. DnsResolver API وضوح عمومی و ناهمگام ارائه می‌دهد و به شما امکان می‌دهد SRV، NAPTR، و انواع دیگر سوابق را جستجو کنید. توجه داشته باشید که تجزیه پاسخ به برنامه واگذار شده است.

برای برنامه‌های مبتنی بر NDK، به android_res_nsend مراجعه کنید.

Wi-Fi Easy Connect

Android 10 به شما امکان می‌دهد از Easy Connect برای ارائه اطلاعات کاربری Wi-Fi به دستگاه همتا استفاده کنید، که جایگزینی برای WPS است که منسوخ شده است. برنامه‌ها می‌توانند بااستفاده از هدف ACTION_PROCESS_WIFI_EASY_CONNECT_URI ، «اتصال آسان» را در جریان راه‌اندازی و تدارک خود ادغام کنند.

برای اطلاعات بیشتر درباره این ویژگی، Wi-Fi Easy Connect را ببینید.

میانای برنامه‌سازی کاربردی اتصال Wi-Fi Direct

کلاس‌های میانای برنامه‌سازی کاربردی WifiP2pConfig و WifiP2pManager در Android 10 به‌روزرسانی شده‌اند تا از قابلیت‌های برقراری اتصال سریع به Wi-Fi Direct بااستفاده از اطلاعات ازپیش تعیین‌شده پشتیبانی کنند. این اطلاعات ازطریق کانال جانبی، مثل بلوتوث یا NFC، هم‌رسانی می‌شود.

نمونه کد زیر نحوه ایجاد گروه بااستفاده از اطلاعات ازپیش تعیین‌شده را نشان می‌دهد:

کاتلین

val manager = getSystemService(Context.WIFI_P2P_SERVICE) as WifiP2pManager
val channel = manager.initialize(this, mainLooper, null)

// prefer 5G band for this group
val config = WifiP2pConfig.Builder()
    .setNetworkName("networkName")
    .setPassphrase("passphrase")
    .enablePersistentMode(false)
    .setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
    .build()

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null)

جاوا

WifiP2pManager manager = (WifiP2pManager) getSystemService(Context.WIFI_P2P_SERVICE);
Channel channel = manager.initialize(this, getMainLooper(), null);

// prefer 5G band for this group
WifiP2pConfig config = new WifiP2pConfig.Builder()
.setNetworkName("networkName")
.setPassphrase("passphrase")
.enablePersistentMode(false)
.setGroupOperatingBand(WifiP2pConfig.GROUP_OWNER_BAND_5GHZ)
.build();

// create a non-persistent group on 5GHz
manager.createGroup(channel, config, null);

برای پیوستن به گروه بااستفاده از اطلاعات کاربری، manager.createGroup() را با موارد زیر جایگزین کنید:

کاتلین

manager.connect(channel, config, null)

جاوا

manager.connect(channel, config, null);

کانال‌های اتصال‌گرا (CoC) در بلوتوث کم‌مصرف

Android 10 به برنامه شما امکان می‌دهد از اتصال‌های BLE CoC برای انتقال جریان‌های داده بزرگ‌تر بین دو دستگاه BLE استفاده کند. این میانای انتزاعی بلوتوث و مکانیک اتصال‌پذیری برای ساده‌سازی پیاده‌سازی است.

ویژگی‌های تلفنی

Android 10 شامل چندین بهبود مرتبط با تلفن است.

بهبود کیفیت تماس

Android 10 توانایی جمع‌آوری اطلاعات درباره کیفیت تماس‌های «زیرسیستم چندرسانه‌ای IP» (IMS) درحال انجام، ازجمله کیفیت به و از شبکه، را در دستگاه‌هایی که از این ویژگی پشتیبانی می‌کنند اضافه می‌کند.

غربالگری تماس و شناسه تماس‌گیرنده

Android 10 ابزاری دراختیار برنامه‌تان قرار می‌دهد تا تماس‌هایی را که در دفترچه تلفن کاربر نیستند به‌عنوان تماس‌های هرزنامه احتمالی شناسایی کند و تماس‌های هرزنامه را به‌طور بی‌صدا ازطرف کاربر رد کند. اطلاعات مربوط به این تماس‌های مسدودشده به‌عنوان تماس‌های مسدودشده در گزارش تماس ثبت می‌شود تا شفافیت بیشتری برای کاربر هنگام ازدست دادن تماس‌ها فراهم شود. استفاده از این API نیاز به دریافت اجازه‌های READ_CALL_LOG از کاربر برای ارائه عملکرد غربالگری تماس و شناسه تماس‌گیرنده را ازبین می‌برد.

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

Android 10 نحوه رسیدگی به هدف‌های تماس را تغییر می‌دهد. پخش NEW_OUTGOING_CALL منسوخ شده است و با CallRedirectionService API جایگزین شده است. CallRedirectionService API میاناهایی را برای شما فراهم می‌کند تا تماس‌های خروجی برقرارشده توسط پلاتفرم Android را اصلاح کنید. برای مثال، برنامه‌های شخص ثالث ممکن است تماس‌ها را لغو کنند و آن‌ها را ازطریق VoIP تغییر مسیر دهند.

بهبودهایی در ایجاد فایل در فضای ذخیره‌سازی خارجی

علاوه‌بر معرفی فضای ذخیره‌سازی محدود، Android 10 قابلیت‌های زیر را دررابطه‌با فضای ذخیره‌سازی خارجی اضافه می‌کند:

  • می‌توانید از پرچم IS_PENDING استفاده کنید تا به برنامه‌تان دسترسی انحصاری به فایل رسانه‌ای بدهید، زیرا این فایل در دیسک نوشته شده است.
  • اگر از مکان خاصی که فایل‌ها باید در آن ذخیره شوند اطلاع دارید، می‌توانید به سیستم راهنمایی ارائه دهید که فایل‌های جدیداً نوشته‌شده را کجا ذخیره کند.
  • هر دستگاه ذخیره‌سازی خارجی نام حجم یکتایی دارد.

رسانه و گرافیک

Android 10 ویژگی‌ها و میاناهای برنامه‌سازی کاربردی رسانه و گرافیک جدید زیر را معرفی می‌کند:

درحال هم‌رسانی ورودی صوتی

Android 10 این قابلیت را اضافه می‌کند که دو برنامه بتوانند به‌طور هم‌زمان از ورودی صوتی استفاده کنند. برای اطلاعات کامل، به هم‌رسانی ورودی صوتی مراجعه کنید.

ضبط بازپخش صوتی

Android 10 به برنامه این امکان را می‌دهد که بازپخش صدا را از برنامه‌های دیگر ضبط کند. برای اطلاعات کامل، ضبط بازپخش را ببینید.

نوار جستجو در اعلان‌های MediaStyle

از Android 10، اعلان‌های MediaStyle نوار جستجو را نمایش می‌دهند. نوار کاوش پیشرفت بازپخش را از PlaybackState.getPosition() نشان می‌دهد و در برخی موارد می‌توان از نوار کاوش برای رفتن به مکانی در برنامه درحال پخش استفاده کرد. ظاهر و رفتار نوار جستجو با این قوانین کنترل می‌شود:

  • اگر MediaSession فعالی وجود داشته باشد و مدت آن (که با MediaMetadata.METADATA_KEY_DURATION مشخص می‌شود) بیشتر از صفر باشد، نوار جستجو ظاهر می‌شود. این یعنی نوار برای جاری‌سازی‌های نامشخص مانند جاری‌سازی‌های زنده و پخش‌های رادیویی ظاهر نمی‌شود.
  • اگر جلسه ACTION_SEEK_TO را اجرا کند، کاربر می‌تواند نوار جستجو را بکشد تا مکان بازپخش را کنترل کند.

Native MIDI API

Android Native MIDI API (AMidi) به توسعه‌دهندگان برنامه امکان می‌دهد داده‌های MIDI را با کد C/C++‎ ارسال و دریافت کنند، با منطق کنترل/صدا C/C++‎ خود ادغام نزدیک‌تری داشته باشند، و نیاز به JNI را به‌حداقل برسانند.

برای اطلاعات بیشتر، Android Native MIDI API را ببینید.

بهبودهای MediaCodecInfo

Android 10 روش‌هایی را به MediaCodecInfo اضافه می‌کند که اطلاعات بیشتری درباره کدک نشان می‌دهد.

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

Thermal API

وقتی دستگاه‌ها بیش‌ازحد گرم می‌شوند، ممکن است CPU و/یا GPU را محدود کنند و این می‌تواند به روش‌های غیرمنتظره‌ای بر برنامه‌ها و بازی‌ها تأثیر بگذارد. برنامه‌هایی که از گرافیک پیچیده، محاسبات سنگین، یا فعالیت مداوم شبکه استفاده می‌کنند، بیشتر احتمال دارد با مشکل مواجه شوند و این مشکلات ممکن است در دستگاه‌های مختلف براساس مجموعه تراشه و فرکانس‌های هسته، سطوح ادغام، و همچنین بسته‌بندی و فرم فاکتور دستگاه متفاوت باشد.

در Android 10، برنامه‌ها و بازی‌ها می‌توانند از میانای برنامه‌سازی کاربردی حرارتی برای نظارت بر تغییرات دستگاه استفاده کنند و برای حفظ مصرف کمتر انرژی اقدام کنند تا دمای عادی بازیابی شود. برنامه‌ها یک شنونده را در PowerManager ثبت می‌کنند، که ازطریق آن سیستم وضعیت حرارتی جاری را از خفیف و متوسط تا شدید، بحرانی، اضطراری، و خاموش شدن گزارش می‌دهد.

وقتی دستگاه تنش حرارتی را گزارش می‌کند، برنامه‌ها و بازی‌ها می‌توانند با عقب‌نشینی از فعالیت‌های جاری به کاهش مصرف برق به روش‌های مختلف کمک کنند. برای مثال، برنامه‌های جاری‌سازی می‌توانند وضوح/نرخ بیت یا ترافیک شبکه را کاهش دهند، برنامه دوربین می‌تواند فلاش یا بهبود تصویر فشرده را غیرفعال کند، بازی می‌تواند نرخ فریم یا موزاییک‌کاری چندضلعی را کاهش دهد، برنامه رسانه می‌تواند صدای بلندگو را کاهش دهد، و برنامه نقشه‌ها می‌تواند GPS را خاموش کند.

میانای برنامه‌سازی کاربردی حرارتی به لایه HAL دستگاه جدید نیاز دارد—درحال‌حاضر در دستگاه‌های Pixel دارای Android 10 پشتیبانی می‌شود و ما با شرکای سازنده دستگاه خود همکاری می‌کنیم تا در اسرع وقت پشتیبانی گسترده‌ای را به این بوم‌سازگان اضافه کنیم.

دوربین و تصاویر

Android 10 ویژگی‌های جدید زیر را در رابطه با دوربین و تصویر معرفی می‌کند:

پشتیبانی از دوربین تک‌رنگ

Android 9 (سطح میانای برنامه‌سازی کاربردی ۲۸) برای اولین‌بار قابلیت دوربین تک‌رنگ را معرفی کرد. Android 10 چندین بهبود به پشتیبانی از دوربین تک‌رنگ اضافه می‌کند:

  • پشتیبانی از قالب جاری‌سازی Y8 برای بهبود کارایی حافظه.
  • پشتیبانی از ضبط DNG خام تک‌رنگ.
  • معرفی شمارش‌های MONO و NIR CFA برای تشخیص تفاوت بین دوربین تک‌رنگ معمولی و دوربین‌های مادون قرمز نزدیک.

می‌توانید از این ویژگی برای گرفتن تصویر تک‌رنگ اصلی استفاده کنید. یک دستگاه چنددوربینه منطقی ممکن است از دوربین تک‌رنگ به‌عنوان دوربین فرعی فیزیکی استفاده کند تا کیفیت تصویر بهتری در نور کم به‌دست آورد.

قالب ژرفای پویا

از Android 10، دوربین‌ها می‌توانند داده‌های عمق تصویر را در فایل جداگانه‌ای ذخیره کنند. این کار بااستفاده از طرح‌واره جدیدی به‌نام «قالب ژرفای پویا» (DDF) انجام می‌شود. برنامه‌ها می‌توانند هم تصویر JPG و هم فراداده عمق آن را درخواست کنند و بااستفاده از آن اطلاعات، هر محوشدگی‌ای را که می‌خواهند در پس‌پردازش اعمال کنند بدون اینکه داده‌های تصویر اصلی را تغییر دهند.

برای خواندن مشخصات این قالب، قالب Dynamic Depth را ببینید.

قالب فایل تصویری با کارایی بالا

قالب «فایل تصویری با کارایی بالا» (HEIF) قالب استاندارد تصویر و ویدیو است که درمقایسه با دیگر قالب‌های فایل، کدبندی با کیفیت بالاتر و اندازه فایل کوچک‌تر ارائه می‌دهد.

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

بهبودهایی در چنددوربینی

‫Android 10 ادغام چند دوربین در یک دوربین منطقی را بهبود می‌بخشد، ویژگی‌ای که در Android 9 (سطح میانای برنامه‌سازی کاربردی ۲۸) معرفی شد. موارد زیر به Camera2 API اضافه شده است:

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig)—به شما امکان می‌دهد پرس‌وجو کنید که آیا پیکربندی جلسه ارسال‌شده می‌تواند برای ایجاد جلسه ضبط دوربین استفاده شود یا نه.

  • LOGICAL_MULTI_CAMERA_ACTIVE_PHYSICAL_ID—به شما امکان می‌دهد شناسه دوربین فیزیکی فعال را که از دستگاه دوربین منطقی پشتیبانی می‌کند تعیین کنید. می‌توانید از شناسه‌های برگردانده‌شده برای درخواست جاری‌سازی‌های منطقی و جاری‌سازی‌های زیردوربین فیزیکی استفاده کنید تا به بهره‌وری انرژی بهتری دست یابید.

میانای برنامه‌سازی کاربردی خدمات دسترس‌پذیری

Android 10 ویژگی‌ها و میاناهای برنامه‌سازی کاربردی جدید زیر را برای سرویس دسترس‌پذیری معرفی می‌کند:

پرچم کلید ورودی AccessibilityNodeInfo

از Android نسخه ۱۰، می‌توانید isTextEntryKey() را فراخوانی کنید تا مشخص کنید آیا AccessibilityNodeInfo داده‌شده نشان‌دهنده کلید ورودی نوشتار است که بخشی از صفحه‌کلید یا صفحه شماره‌گیری است یا نه.

بازخورد گفتاری کادر گفتگوی دسترس‌پذیری

در مواردی که کاربران برای شروع سرویس دسترس‌پذیری باید میان‌بر دسترس‌پذیری را اجرا کنند، Android 10 اجازه می‌دهد درصورت درخواست سرویس، پیام‌واره نوشتار به گفتار همراه با کادر گفتگو ارائه شود.

میان‌بر دسترس‌پذیری وقتی پیمایش اشاره‌ای فعال است

وقتی ویژگی پیمایش با اشاره در Android 10 فعال باشد، دکمه دسترس‌پذیری قابل‌مشاهده یا انتخاب نیست. برای دسترسی به منو خدمات دسترس‌پذیری، کاربران باید یکی از اشاره‌های زیر را انجام دهند:

  • تند کشیدن به بالا با دو انگشت.
  • با دو انگشت تند به‌بالا بکشید و نگه دارید.

میان‌بر دسترس‌پذیری برای صفحه‌کلیدهای فیزیکی

در Android 10، کاربران می‌توانند میان‌بر دسترس‌پذیری را در صفحه‌کلید فیزیکی با فشار دادن Control+Alt+Z فعال کنند.

بهبود کنترل‌کننده صفحه‌کلید نرم‌افزاری

در Android 10، سرویس‌های دسترس‌پذیری می‌توانند درخواست کنند که صفحه‌کلید نرم‌افزاری حتی وقتی دستگاه تشخیص می‌دهد صفحه‌کلید سخت‌افزاری متصل است نمایش داده شود. کاربران می‌توانند این رفتار را لغو کنند.

زمان‌های استراحت دسترس‌پذیری تعریف‌شده توسط کاربر

Android 10 میانای برنامه‌سازی کاربردی getRecommendedTimeoutMillis() را معرفی می‌کند. این روش از زمان‌های استراحت تعریف‌شده توسط کاربر برای عناصر میانای کاربر تعاملی و غیرتعاملی پشتیبانی می‌کند. مقدار برگشتی تحت تأثیر اولویت‌های کاربر و میاناهای برنامه‌سازی کاربردی سرویس دسترس‌پذیری است.

بهبودهای تکمیل خودکار

Android 10 شامل بهبودهای زیر در سرویس تکمیل خودکار است.

درخواست‌های تکمیل خودکار مربوط به سازگاری

می‌توانید از پرچم FillRequest.FLAG_COMPATIBILITY_MODE_REQUEST استفاده کنید تا مشخص کنید آیا درخواست تکمیل خودکار ازطریق حالت سازگاری تولید شده است یا نه.

ذخیره هم‌زمان نام کاربری و گذرواژه

بااستفاده از پرچم SaveInfo.FLAG_DELAY_SAVE می‌توانید از مواردی که برنامه از چندین فعالیت برای نمایش نام کاربری، گذرواژه، و فیلدهای دیگر استفاده می‌کند پشتیبانی کنید.

تعامل کاربر با واسط کاربر «ذخیره»

می‌توانید با تنظیم کردن شنونده کنش در کادر گفتگوی ذخیره و تغییر دادن نمایان بودن نمای راه دور گذرواژه مربوطه، فیلد گذرواژه را در کادر گفتگوی ذخیره نشان دهید یا پنهان کنید.

پشتیبانی از به‌روزرسانی مجموعه‌های داده

«تکمیل خودکار» می‌تواند گذرواژه‌های موجود را به‌روز کند. برای مثال، اگر کاربری قبلاً گذرواژه‌ای را ذخیره کرده باشد و گذرواژه جدیدی را ذخیره کند، «تکمیل خودکار» از کاربر می‌خواهد به‌جای ذخیره کردن گذرواژه جدید، گذرواژه موجود را به‌روز کند.

بهبودهای «طبقه‌بندی فیلد»

Android 10 حاوی بهبودهای زیر در Field Classification API است.

سازنده UserData.Builder

سازنده UserData.Builder تغییر کرده است تا با الگوی Builder همسوتر شود.

اجازه دادن به نگاشت یک «مقدار» به چند نوع «شناسه دسته»

هنگام استفاده از UserData.Builder در Android 10، اکنون می‌توانید مقداری را به چندین نوع شناسه دسته نگاشت کنید. در نسخه‌های قبلی، اگر مقداری بیش‌از یک‌بار اضافه می‌شد، استثنایی ایجاد می‌شد.

پشتیبانی بهبودیافته برای شماره کارت اعتباری

اکنون طبقه‌بندی فیلد می‌تواند اعداد چهاررقمی را به‌عنوان چهار رقم آخر شماره کارت اعتباری تشخیص دهد.

پشتیبانی از طبقه‌بندی فیلد مختص برنامه

Android 10 FillResponse.setUserData() را اضافه می‌کند که به شما امکان می‌دهد داده‌های کاربر مختص برنامه را برای مدت جلسه تنظیم کنید. این کار به سرویس تکمیل خودکار کمک می‌کند انواع فیلدهای دارای محتوای مختص برنامه را شناسایی کند.

کنترل‌های سیستم و میانای کاربر

Android 10 بهبودهای زیر را در میانای کاربر ارائه می‌دهد:

پشتیبانی از قابلیت‌های PopFrame در JVMTI

Android 10 پشتیبانی از قابلیت can_pop_frames را در پیاده‌سازی JVMTI در Android اضافه می‌کند. هنگام اشکال‌زدایی، این ویژگی به شما امکان می‌دهد پس‌از توقف در نقطه شکست و تنظیم متغیرهای محلی، متغیرهای سراسری، یا پیاده‌سازی تابع، توابع را دوباره اجرا کنید. برای اطلاعات بیشتر، به صفحه مرجع Pop Frame در Oracle مراجعه کنید.

میانای برنامه‌سازی کاربردی کنترل سطح

Android 10 یک SurfaceControl API برای دسترسی سطح پایین به ترکیب‌کننده سیستم (SurfaceFlinger) ارائه می‌دهد. برای اکثر کاربران، SurfaceView روش صحیح استفاده از ترکیب‌کننده است. ‫ SurfaceControl API می‌تواند در موارد خاصی مفید باشد، برای مثال:

  • همگام‌سازی چند سطح
  • جاسازی سطح بین‌فرایندی
  • مدیریت طول عمر سطح پایین‌تر

SurfaceControl API هم در کیت توسعه نرم‌افزار و هم در اتصالات NDK دردسترس است. پیاده‌سازی NDK شامل یک API برای تبادل دستی میانگیرها با ترکیب‌کننده است. این گزینه جایگزینی برای کاربرانی است که با محدودیت‌های BufferQueue مواجه شده‌اند.

تشخیص پردازکننده معلق «وب‌نما»

Android 10 کلاس انتزاعی WebViewRenderProcessClient را معرفی می‌کند که برنامه‌ها می‌توانند از آن برای تشخیص اینکه WebView پاسخگو نیست استفاده کنند. برای استفاده از این کلاس:

  1. زیرکلاس خودتان را تعریف کنید و روش‌های onRenderProcessResponsive() و onRenderProcessUnresponsive() آن را پیاده‌سازی کنید.
  2. یک نمونه از WebViewRenderProcessClient خود را به یک یا چند شیء WebView پیوست کنید.
  3. اگر WebView پاسخگو نباشد، سیستم روش onRenderProcessUnresponsive() مشتری را فراخوانی می‌کند و WebView و WebViewRenderProcess را ارسال می‌کند. (اگر WebView تک‌فرایندی باشد، پارامتر WebViewRenderProcess تهی است.) برنامه شما می‌تواند اقدام مناسبی انجام دهد، مثلاً چارگوش گفتگویی به کاربر نشان دهد و از او بپرسد که آیا می‌خواهد فرایند پردازش را متوقف کند یا نه.

اگر WebView همچنان پاسخ ندهد، سیستم به‌طور دوره‌ای (نه بیشتر از یک بار در هر پنج ثانیه) با onRenderProcessUnresponsive() تماس می‌گیرد، اما اقدام دیگری انجام نمی‌دهد. اگر WebView دوباره پاسخگو شود، سیستم فقط یک‌بار با onRenderProcessResponsive() تماس می‌گیرد.

پانل‌های تنظیمات

Android 10 پانل‌های تنظیمات را معرفی می‌کند، یک API که به برنامه‌ها اجازه می‌دهد تنظیمات را در زمینه برنامه خود به کاربران نشان دهند. این امر باعث می‌شود کاربران نیازی به رفتن به تنظیمات برای تغییر چیزهایی مانند NFC یا داده‌های تلفن همراه نداشته باشند تا بتوانند از برنامه استفاده کنند.

شکل ۱. کاربر سعی می‌کند صفحه وبی را باز کند درحالی‌که دستگاه به شبکه متصل نیست. Chrome پانل تنظیمات اتصال اینترنت را بالا می‌آورد…

شکل ۲. کاربر می‌تواند Wi-Fi را روشن کند و شبکه‌ای را انتخاب کند بدون اینکه از برنامه Chrome خارج شود.

برای مثال، فرض کنید کاربری مرورگر وب را درحالی‌که دستگاهش در حالت هواپیما است باز می‌کند. قبل‌از Android 10، برنامه فقط می‌توانست پیام عمومی نمایش دهد و از کاربر بخواهد برای بازیابی اتصال، تنظیمات را باز کند. با Android 10، برنامه مرورگر می‌تواند پانلی درون‌خطی نمایش دهد که تنظیمات اتصال کلیدی مثل حالت هواپیما، Wi-Fi (ازجمله شبکه‌های اطراف)، و داده تلفن همراه را نشان می‌دهد. با این پانل، کاربران می‌توانند بدون ترک برنامه، اتصال را بازیابی کنند.

برای نمایش پانل تنظیمات، قصدی را با یکی از کنش‌های زیر Settings.Panel اجرا کنید:

کاتلین

val panelIntent = Intent(Settings.Panel.settings_panel_type)
startActivityForResult(panelIntent)

جاوا

Intent panelIntent = new Intent(Settings.Panel.settings_panel_type);
startActivityForResult(panelIntent);

settings_panel_type می‌تواند یکی از این موارد باشد:

ACTION_INTERNET_CONNECTIVITY
تنظیمات مربوط به اتصال اینترنت، مثل حالت هواپیما، Wi-Fi، و داده تلفن همراه را نشان می‌دهد.
ACTION_WIFI
تنظیمات Wi-Fi را نشان می‌دهد، اما تنظیمات اتصال‌پذیری دیگر را نشان نمی‌دهد. این برای برنامه‌هایی مفید است که برای بارگذاری یا بارگیری‌های بزرگ به اتصال Wi-Fi نیاز دارند.
ACTION_NFC
همه تنظیمات مربوط به ارتباط حوزه نزدیک (NFC) را نشان می‌دهد.
ACTION_VOLUME
تنظیمات میزان صدا را برای همه جاری‌سازی‌های صوتی نشان می‌دهد.

بهبود هم‌رسانی

Android 10 چندین بهبود در هم‌رسانی ارائه می‌دهد:

Sharing Shortcuts API

Sharing Shortcuts API جایگزین Direct Share APIs می‌شود.

به‌جای بازیابی نتایج به‌صورت واکنشی و براساس تقاضا، Sharing Shortcuts API به برنامه‌ها اجازه می‌دهد هدف‌های هم‌رسانی مستقیم را ازقبل منتشر کنند. ShortcutManager این‌گونه کار می‌کند. ازآنجایی‌که این دو میانای برنامه‌سازی کاربردی مشابه هستند، ShortcutInfo میانای برنامه‌سازی کاربردی را گسترش داده‌ایم تا استفاده از هر دو ویژگی آسان‌تر شود. با Sharing Shortcuts API، می‌توانید مستقیماً دسته‌ها یا افراد را به هدف هم‌رسانی اختصاص دهید. هدف‌های هم‌رسانی در سیستم باقی می‌مانند تا زمانی که همان برنامه آن‌ها را به‌روز کند یا برنامه حذف نصب شود.

سازوکار قدیمی‌تر «هم‌رسانی مستقیم» همچنان کار می‌کند، اما برنامه‌هایی که از آن استفاده می‌کنند اولویت کمتری نسبت به برنامه‌هایی دارند که از Sharing Shortcuts API استفاده می‌کنند.

ShortcutInfo.Builder روش‌هایی را برای ارائه اطلاعات بیشتر درباره هدف هم‌رسانی اضافه و بهبود می‌کند.

هدف‌های هم‌رسانی مستقیم

می‌توانید میان‌بر پویایی را به‌عنوان «هدف هم‌رسانی مستقیم» منتشر کنید. انتشار هدف‌های هم‌رسانی مستقیم را ببینید.

ShortcutManagerCompat یک AndroidX API جدید است که سازگاری با نسخه قدیمی را با DirectShare API قدیمی ارائه می‌دهد. این روش ترجیحی برای انتشار هدف‌های هم‌رسانی است.

درحال پیش‌نمایش نوشتار

وقتی برنامه‌ای محتوای نوشتاری هم‌رسانی می‌کند، می‌تواند پیش‌نمایش اختیاری از محتوا را در میانای کاربر «برگه هم‌رسانی» نشان دهد.

افزودن پیش‌نمایش‌های نوشتار غنی‌شده را ببینید

بیشتر بدانید

برای اطلاعات بیشتر درباره نحوه هم‌رسانی داده‌ها توسط برنامه‌ها، ارسال داده‌های ساده به برنامه‌های دیگر و دریافت داده‌های ساده از برنامه‌های دیگر را ببینید.

زمینه تیره

Android 10 «زمینه تیره» ارائه می‌دهد که هم روی رابط کاربری سیستم Android و هم روی برنامه‌هایی که در دستگاه اجرا می‌شوند اعمال می‌شود. برای اطلاعات کامل، زمینه تیره را ببینید.

انواع سرویس پیش‌زمینه‌ای

Android 10 foregroundServiceType مشخصه مانیفست XML را معرفی می‌کند که آن را در تعریف چندین سرویس خاص می‌گنجانید. می‌توان چندین نوع سرویس پیش‌زمینه‌ای را به یک سرویس خاص اختصاص داد، هرچند این کار به‌ندرت مناسب است.

جدول زیر انواع مختلف سرویس پیش‌زمینه‌ای و سرویس‌هایی را نشان می‌دهد که اعلام نوع خاصی برای آن‌ها مناسب است:

نوع سرویس پیش‌زمینه‌ای نمونه مورد استفاده برای سرویسی که باید این نوع را اعلام کند
connectedDevice نظارت بر ردیاب تناسب اندام پوشیدنی
dataSync بارگیری فایل‌ها از شبکه
location ادامه دادن کنش شروع‌شده توسط کاربر
mediaPlayback پخش کتاب صوتی، پادکست، یا موسیقی
mediaProjection ویدیویی از نمایشگر دستگاه در مدت زمان کوتاهی ضبط کنید
phoneCall مدیریت تماس تلفنی درحال انجام

کاتلین

Android 10 شامل به‌روزرسانی‌های زیر برای توسعه Kotlin است.

حاشیه‌نویسی‌های تهی‌پذیری برای میاناهای برنامه‌سازی کاربردی libcore

Android 10 پوشش حاشیه‌نویسی‌های تهی‌پذیری را در کیت توسعه نرم‌افزار برای libcore APIs بهبود می‌بخشد. این حاشیه‌نویسی‌ها به توسعه‌دهندگان نرم‌افزار که از تجزیه و تحلیل تهی‌پذیری Kotlin یا Java در «استودیو Android» استفاده می‌کنند امکان می‌دهد هنگام تعامل با این میاناهای برنامه‌سازی کاربردی، اطلاعات تهی‌پذیری را دریافت کنند.

معمولاً نقض قرارداد تهی‌پذیری در Kotlin منجر به خطاهای کامپایل می‌شود. برای اطمینان از سازگاری با کد موجود شما، فقط حاشیه‌نویسی‌های @RecentlyNullable و @RecentlyNonNull اضافه شده‌اند. این یعنی نقض‌های تهی‌پذیری به‌جای خطا، به هشدار منجر می‌شوند.

علاوه‌براین، هرگونه حاشیه‌نویسی @RecentlyNullable یا @RecentlyNonNull که در Android 9 اضافه شده است، به‌ترتیب به @Nullable و @NonNull تغییر می‌کند. این یعنی در Android نسخه ۱۰ و بالاتر، نقض‌های تهی‌پذیری به‌جای هشدار به خطا منجر می‌شود.

برای اطلاعات بیشتر درباره تغییرات حاشیه‌نویسی، به Android Pie SDK is now more Kotlin-friendly در وبلاگ توسعه‌دهندگان Android مراجعه کنید.

کیت توسعه بومی

Android 10 شامل تغییرات NDK زیر است.

اشکال‌زدایی بهبودیافته مالکیت توصیف‌گر فایل

‫Android 10 به fdsan اضافه می‌کند که به شما کمک می‌کند مشکلات مالکیت توصیف‌گر فایل را راحت‌تر پیدا و برطرف کنید.

اشکال‌های مربوط به مدیریت نادرست مالکیت توصیف‌گر فایل، که معمولاً به‌صورت استفاده پس‌از بستن و بستن دوگانه ظاهر می‌شوند، مشابه اشکال‌های تخصیص حافظه استفاده پس‌از آزاد کردن و آزاد کردن دوگانه هستند، اما معمولاً تشخیص و رفع آن‌ها بسیار دشوارتر است. fdsan تلاش می‌کند با اعمال مالکیت توصیف‌گر فایل، مدیریت نادرست توصیف‌گر فایل را شناسایی و/یا از آن جلوگیری کند.

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

ELF TLS

برنامه‌های ساخته‌شده بااستفاده از NDK با حداقل سطح میانای برنامه‌سازی کاربردی ۲۹ می‌توانند به‌جای emutls از ELF TLS استفاده کنند. پشتیبانی از پیونددهنده پویا و ایستا برای پشتیبانی از این روش مدیریت متغیرهای محلی رشته اضافه شده است.

برای برنامه‌های ساخته‌شده برای سطح میانای برنامه‌سازی کاربردی ۲۸ و پایین‌تر، بهبودهایی برای libgcc/compiler-rt پیاده‌سازی شده است تا برخی مشکلات emutls برطرف شود.

برای اطلاعات بیشتر، تغییرات Android برای توسعه‌دهندگان NDK را ببینید.

مدت زمان

Android 10 شامل تغییر زمان اجرای زیر است.

راه‌اندازی زباله‌روبی مبتنی بر Mallinfo

وقتی اشیای کوچک پلاتفرم Java به اشیای بزرگ در پشته C++‎ ارجاع می‌دهند، اشیای C++‎ اغلب فقط زمانی می‌توانند بازیابی شوند که شیء Java جمع‌آوری شده باشد و، برای مثال، نهایی شده باشد. در نسخه‌های قبلی، پلاتفرم اندازه بسیاری از اشیاء ++C مرتبط با اشیاء Java را تخمین می‌زد. این تخمین همیشه دقیق نبود و گاهی‌اوقات منجر به افزایش قابل‌توجه استفاده از حافظه می‌شد، زیرا پلتفرم در زمانی که باید، زباله‌روبی را انجام نمی‌داد.

در Android 10، زباله‌روب (GC) اندازه کل توده اختصاص‌داده‌شده توسط malloc() سیستم را ردیابی می‌کند و مطمئن می‌شود که اختصاص‌های بزرگ malloc() همیشه در محاسبات راه‌انداز GC گنجانده شده‌اند. برنامه‌هایی که تعداد زیادی تخصیص C++‎ را با اجرای Java درهم می‌آمیزند ممکن است درنتیجه شاهد افزایش بسامد جمع‌آوری زباله باشند. برنامه‌های دیگر ممکن است کاهش کمی داشته باشند.

آزمایش و اشکال‌زدایی

Android 10 شامل بهبودهای زیر برای آزمایش و اشکال‌زدایی است.

بهبودهایی برای ردیابی سیستم درون‌دستگاهی

از Android 10، می‌توانید محدودیت‌هایی برای اندازه و مدت ردیابی هنگام انجام ردیابی سیستم در دستگاه مشخص کنید. وقتی هرکدام از این مقادیر را مشخص می‌کنید، سیستم ردیابی طولانی انجام می‌دهد و به‌طور دوره‌ای میان‌گیر ردیابی را در فایل مقصد کپی می‌کند، درحالی‌که ردیابی ضبط می‌شود. وقتی به محدودیت‌های اندازه یا مدت‌زمانی که مشخص کرده‌اید برسید، ردگیری تکمیل می‌شود.

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

در Android نسخه ۱۰ و بالاتر، فایل‌های ردیابی در قالبی ذخیره می‌شوند که می‌توان آن‌ها را با Perfetto باز کرد، پروژه‌ای متن‌باز برای ابزار دقیق عملکرد و ردیابی. می‌توانید فایل‌های ردیابی Perfetto را به قالب Systrace تبدیل کنید.

بهبودهای TextClassifier

Android 10 قابلیت‌های بیشتری برای طبقه‌بندی نوشتار در میانای TextClassifier ارائه می‌دهد.

تشخیص زبان

روش detectLanguage() مشابه روش‌های طبقه‌بندی موجود قبلی عمل می‌کند. این تابع یک شیء TextLanguage.Request دریافت می‌کند و یک شیء TextLanguage برمی‌گرداند.

اشیاء TextLanguage از فهرستی از جفت‌های مرتب‌شده تشکیل شده‌اند. هر جفت حاوی یک زبان و امتیاز اطمینان متناظر برای طبقه‌بندی است.

کنش‌های مکالمه پیشنهادی

روش suggestConversationActions() مشابه روش‌های طبقه‌بندی موجود عمل می‌کند. این تابع یک شیء ConversationActions.Request دریافت می‌کند و یک شیء ConversationActions برمی‌گرداند.

اشیاء ConversationActions شامل فهرستی از اشیاء ConversationAction است. هر شیء ConversationAction شامل یک کنش پیشنهادی بالقوه و امتیاز اطمینان آن است.

پاسخ‌ها/کنش‌های هوشمند در اعلان‌ها

Android 9 قابلیت نمایش پاسخ‌های پیشنهادی را در اعلان معرفی کرد. Android 10 این قابلیت را با توانایی گنجاندن کنش‌های پیشنهادی مبتنی بر هدف گسترش می‌دهد. علاوه‌براین، پلاتفرم می‌تواند این پیشنهادها را به‌طور خودکار تولید کند. برنامه‌ها همچنان می‌توانند پیشنهادهای خودشان را ارائه دهند یا از پیشنهادهای تولیدشده توسط سیستم انصراف دهند.

میانای برنامه‌سازی کاربردی که برای تولید این پاسخ‌ها استفاده می‌شود بخشی از TextClassifier است، و همچنین مستقیماً در Android 10 دراختیار توسعه‌دهندگان قرار گرفته است. برای اطلاعات بیشتر، لطفاً بخش مربوط به بهبودهای TextClassifier را بخوانید.

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