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 پاسخگو نیست استفاده کنند. برای
استفاده از این کلاس:
- زیرکلاس خودتان را تعریف کنید و روشهای
onRenderProcessResponsive()وonRenderProcessUnresponsive()آن را پیادهسازی کنید. - یک نمونه از
WebViewRenderProcessClientخود را به یک یا چند شیءWebViewپیوست کنید. - اگر
WebViewپاسخگو نباشد، سیستم روشonRenderProcessUnresponsive()مشتری را فراخوانی میکند وWebViewوWebViewRenderProcessرا ارسال میکند. (اگرWebViewتکفرایندی باشد، پارامترWebViewRenderProcessتهی است.) برنامه شما میتواند اقدام مناسبی انجام دهد، مثلاً چارگوش گفتگویی به کاربر نشان دهد و از او بپرسد که آیا میخواهد فرایند پردازش را متوقف کند یا نه.
اگر WebView همچنان پاسخ ندهد، سیستم بهطور دورهای (نه بیشتر از یک بار در هر پنج ثانیه) با onRenderProcessUnresponsive() تماس میگیرد، اما اقدام دیگری انجام نمیدهد.
اگر WebView دوباره پاسخگو شود،
سیستم فقط یکبار با onRenderProcessResponsive() تماس میگیرد.
پانلهای تنظیمات
Android 10 پانلهای تنظیمات را معرفی میکند، یک API که به برنامهها اجازه میدهد تنظیمات را در زمینه برنامه خود به کاربران نشان دهند. این امر باعث میشود کاربران نیازی به رفتن به تنظیمات برای تغییر چیزهایی مانند NFC یا دادههای تلفن همراه نداشته باشند تا بتوانند از برنامه استفاده کنند.
برای مثال، فرض کنید کاربری مرورگر وب را درحالیکه دستگاهش در حالت هواپیما است باز میکند. قبلاز 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()
از پاسخها و کنشهای تولیدشده توسط سیستم انصراف دهید.