ویژگی ها و API های اندروید 10

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

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

پیشرفت های امنیتی

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

گفتگوهای احراز هویت بیومتریک بهبود یافته است

اندروید 10 بهبودهای زیر را برای پشتیبانی از احراز هویت بیومتریک معرفی می کند:

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

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

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

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

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

اندروید 10 پشتیبانی از TLS 1.3 را اضافه می کند. TLS 1.3 یک تجدید نظر اساسی در استاندارد TLS است که شامل مزایای عملکرد و امنیت افزایش یافته است. معیارهای ما نشان می‌دهد که با TLS 1.3 در مقایسه با TLS 1.2، می‌توان ارتباطات ایمن را تا 40 درصد سریع‌تر برقرار کرد.

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

Public Conscrypt API

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

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

ویژگی های اتصال

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

API اتصال شبکه Wi-Fi

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

برای اطلاعات بیشتر، به API درخواست شبکه Wi-Fi برای اتصال همتا به همتا مراجعه کنید.

API پیشنهاد شبکه Wi-Fi

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

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

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

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

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

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

جستجوهای تخصصی در حل کننده DNS

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

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

Wi-Fi Easy Connect

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

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

API اتصال Wi-Fi Direct

کلاس‌های WifiP2pConfig و WifiP2pManager API به‌روزرسانی‌هایی در 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);

کانال های اتصال محور بلوتوث LE (CoC)

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

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

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

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

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

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

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

API سرویس تغییر مسیر تماس

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

بهبود در ایجاد فایل در حافظه خارجی

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

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

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

به اشتراک گذاری ورودی صوتی

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

ضبط پخش صدا

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

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

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

  • اگر 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

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

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

API حرارتی

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

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

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

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

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

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

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

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

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

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

فرمت عمق پویا

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

برای خواندن مشخصات این قالب، به قالب پویا عمق مراجعه کنید.

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

فرمت High Efficiency Image File (HEIF) یک فرمت استاندارد تصویر و ویدیو است که در مقایسه با سایر فرمت‌های فایل، کدگذاری با کیفیت بالاتر و اندازه فایل کوچک‌تر را معرفی می‌کند.

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

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

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

  • isSessionConfigurationSupported(SessionConfiguration sessionConfig) - شما را قادر می سازد تا بپرسید که آیا پیکربندی جلسه تصویب شده می تواند برای ایجاد یک جلسه ضبط دوربین استفاده شود یا خیر.

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

API خدمات دسترسی

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

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

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

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

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

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

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

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

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

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

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

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

وقفه های دسترسی تعریف شده توسط کاربر

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

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

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

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

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

نام کاربری و رمز عبور را به طور همزمان ذخیره کنید

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

تعامل کاربر با Save UI

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

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

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

بهبود طبقه بندی زمینه

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

سازنده UserData.Builder

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

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

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

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

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

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

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

UI و کنترل های سیستم

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

از کلاهک های JVMTI PopFrame پشتیبانی کنید

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

API کنترل سطح

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

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

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

تشخیص رندر آویزان WebView

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

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

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

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

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

شکل 1. کاربر سعی می کند یک صفحه وب را در حالی که دستگاه به شبکه متصل نیست باز کند. کروم پانل تنظیمات اتصال به اینترنت را باز می کند...

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

برای مثال، فرض کنید یک کاربر در حالی که دستگاهش در حالت هواپیما است، مرورگر وب را باز می کند. قبل از اندروید 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
تنظیمات صدا را برای همه جریان های صوتی نشان می دهد.

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

اندروید 10 چندین پیشرفت برای اشتراک گذاری ارائه می دهد:

اشتراک گذاری میانبرهای میانبر

اشتراک‌گذاری میانبرها جایگزین APIهای اشتراک‌گذاری مستقیم می‌شود.

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

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

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

اهداف سهم مستقیم

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

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

پیش نمایش متن

هنگامی که یک برنامه محتوای متنی را به اشتراک می‌گذارد، می‌تواند پیش‌نمایش اختیاری محتوا را در رابط کاربر صفحه اشتراک نشان دهد.

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

بیشتر بدانید

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

تم تاریک

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

انواع خدمات پیش زمینه

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

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

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

کاتلین

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

حاشیه نویسی پوچ پذیری برای API های libcore

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

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

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

برای کسب اطلاعات بیشتر در مورد تغییرات حاشیه نویسی، به Android Pie SDK مراجعه کنید اکنون در وبلاگ توسعه دهندگان Android سازگارتر با Kotlin است .

NDK

اندروید 10 شامل تغییرات NDK زیر است.

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

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

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

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

ELF TLS

برنامه های ساخته شده با استفاده از NDK با حداقل سطح API 29 می توانند از ELF TLS به جای emutls استفاده کنند. پشتیبانی پیوند دهنده پویا و استاتیک برای پشتیبانی از این روش مدیریت متغیرهای thread-local اضافه شده است.

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

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

زمان اجرا

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

راه اندازی جمع آوری زباله مبتنی بر Malinfo

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

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

تست و رفع اشکال

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

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

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

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

در اندروید 10 و بالاتر، فایل‌های ردیابی در قالبی ذخیره می‌شوند که می‌توان با Perfetto ، یک پروژه منبع باز برای ابزار دقیق و ردیابی عملکرد، باز کرد. می توانید فایل های Trace Perfetto را به فرمت Systrace تبدیل کنید .

بهبودهای TextClassifier

اندروید 10 قابلیت دسته بندی متن اضافی را در رابط TextClassifier ارائه می دهد.

تشخیص زبان

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

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

اقدامات پیشنهادی مکالمه

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

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

پاسخ‌ها/اقدامات هوشمند در اعلان‌ها

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

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

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