اندروید 7.0 برای توسعه دهندگان

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

حتماً تغییرات رفتاری Android 7.0 را بررسی کنید تا در مورد مناطقی که تغییرات پلت فرم ممکن است بر برنامه‌های شما تأثیر بگذارد مطلع شوید.

برای کسب اطلاعات بیشتر در مورد ویژگی های مصرف کننده اندروید 7.0، به www.android.com مراجعه کنید.

پشتیبانی از چند پنجره

در اندروید 7.0، ما در حال معرفی یک ویژگی چندوظیفه ای جدید و بسیار مورد درخواست در پلتفرم هستیم - پشتیبانی از چند پنجره.

کاربران اکنون می توانند دو برنامه را به طور همزمان روی صفحه باز کنند.

  • در گوشی‌ها و تبلت‌هایی که اندروید ۷.۰ دارند، کاربران می‌توانند دو برنامه را در کنار هم یا یکی بالاتر از دیگری در حالت تقسیم صفحه اجرا کنند. کاربران می توانند اندازه برنامه ها را با کشیدن تقسیم کننده بین آنها تغییر دهند.
  • در دستگاه‌های Android TV، برنامه‌ها می‌توانند خود را در حالت تصویر در تصویر قرار دهند و به آن‌ها اجازه می‌دهد همچنان محتوا را در حالی که کاربر مرور می‌کند یا با برنامه‌های دیگر ارتباط برقرار می‌کند، نشان دهد.
اجرای برنامه های موبایل در حالت تقسیم صفحه

شکل 1. برنامه هایی که در حالت تقسیم صفحه اجرا می شوند.

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

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

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

بهبودهای اعلان

در اندروید 7.0، اعلان‌ها را دوباره طراحی کرده‌ایم تا استفاده از آن‌ها را آسان‌تر و سریع‌تر کنیم. برخی از تغییرات عبارتند از:

  • به‌روزرسانی‌های الگو : ما در حال به‌روزرسانی الگوهای اعلان‌ها هستیم تا تأکید جدیدی بر تصویر قهرمان و آواتار داشته باشیم. توسعه دهندگان می توانند با حداقل تنظیمات در کد خود از مزیت های قالب های جدید استفاده کنند.
  • سفارشی‌سازی سبک پیام‌رسانی : می‌توانید تعداد بیشتری از برچسب‌های رابط کاربری مرتبط با اعلان‌های خود را با استفاده از کلاس MessagingStyle سفارشی کنید. می توانید پیام، عنوان گفتگو و نمای محتوا را پیکربندی کنید.
  • اعلان‌های همراه : سیستم می‌تواند پیام‌ها را با هم گروه‌بندی کند، مثلاً بر اساس موضوع پیام، و گروه را نمایش دهد. کاربر می‌تواند در جای خود اقداماتی مانند رد کردن یا بایگانی را روی آنها انجام دهد. اگر اعلان‌ها را برای Android Wear پیاده‌سازی کرده‌اید، قبلاً با این مدل آشنا خواهید شد.
  • پاسخ مستقیم : برای برنامه‌های ارتباطی بی‌درنگ، سیستم Android از پاسخ‌های درون خطی پشتیبانی می‌کند تا کاربران بتوانند به‌سرعت مستقیماً در رابط اعلان به پیامک یا پیام متنی پاسخ دهند.
  • نمایش‌های سفارشی : دو API جدید به شما امکان می‌دهند از تزئینات سیستم، مانند سرصفحه‌های اعلان‌ها و اقدامات، هنگام استفاده از نماهای سفارشی در اعلان‌ها استفاده کنید.
تلفن همراه اعلان‌های پیام‌های همراه را نمایش می‌دهد
موبایل در حال نمایش اعلان پیام تکی
تلفن همراه در حال نمایش پاسخ پیام درون خطی در رابط اعلان

شکل 2. اعلان های همراه و پاسخ مستقیم.

برای آشنایی با نحوه پیاده‌سازی ویژگی‌های جدید، به راهنمای اعلان‌ها مراجعه کنید.

کامپایل JIT/AOT با هدایت نمایه

در Android 7.0، ما یک کامپایلر Just in Time (JIT) با پروفایل کد به ART اضافه کرده‌ایم که به آن اجازه می‌دهد به طور مداوم عملکرد برنامه‌های Android را در حین اجرا بهبود بخشد. کامپایلر JIT مکمل کامپایلر فعلی ART Ahead of Time (AOT) است و به بهبود عملکرد زمان اجرا، صرفه جویی در فضای ذخیره سازی و سرعت بخشیدن به به روز رسانی برنامه ها و به روز رسانی سیستم کمک می کند.

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

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

ART کامپایل هدایت‌شده پروفایل را به‌گونه‌ای مدیریت می‌کند که تأثیر آن بر باتری دستگاه به حداقل برسد. این پیش‌کامپایل را فقط زمانی انجام می‌دهد که دستگاه بی‌حرکت باشد و شارژ شود، با انجام این کار از قبل، در زمان و باتری صرفه‌جویی می‌کند.

مسیر سریع برای نصب برنامه

یکی از ملموس ترین مزایای کامپایلر JIT ART، سرعت نصب برنامه ها و به روز رسانی سیستم است. حتی برنامه‌های بزرگی که برای بهینه‌سازی و نصب آن‌ها در اندروید ۶.۰ به چند دقیقه نیاز داشتند، اکنون می‌توانند در عرض چند ثانیه نصب شوند. به‌روزرسانی‌های سیستم نیز سریع‌تر هستند، زیرا هیچ مرحله بهینه‌سازی دیگری وجود ندارد.

Doze on the Go...

Android 6.0 Doze را معرفی کرد، یک حالت سیستمی که با به تعویق انداختن CPU و فعالیت های شبکه برنامه ها در زمانی که دستگاه بیکار است، مانند زمانی که روی میز یا در کشو نشسته است، باتری را ذخیره می کند.

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

تصویری از اینکه Doze چگونه اولین سطح از محدودیت‌های فعالیت سیستم را برای بهبود عمر باتری اعمال می‌کند

شکل 3. Doze اکنون محدودیت هایی را برای بهبود عمر باتری حتی زمانی که دستگاه ثابت نیست اعمال می کند.

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

هنگامی که دستگاه دوباره ثابت است، صفحه نمایش خاموش و باتری آن برای مدتی روشن است، Doze محدودیت‌های کامل CPU و شبکه را در PowerManager.WakeLock ، آلارم‌های AlarmManager و اسکن‌های GPS/Wi-Fi اعمال می‌کند.

بهترین روش‌ها برای تطبیق برنامه‌تان با Doze، چه دستگاه در حال حرکت باشد یا نه یکسان است، بنابراین اگر قبلاً برنامه‌تان را به‌روزرسانی کرده‌اید تا به‌خوبی Doze را مدیریت کند، همه چیز آماده است. اگر نه، اکنون شروع به تطبیق برنامه خود با Doze کنید.

Project Svelte: بهینه سازی پس زمینه

Project Svelte تلاشی مداوم برای به حداقل رساندن استفاده از RAM توسط سیستم و برنامه‌ها در طیف وسیعی از دستگاه‌های Android در اکوسیستم است. در اندروید 7.0، Project Svelte بر بهینه سازی نحوه اجرای برنامه ها در پس زمینه متمرکز شده است.

پردازش پس‌زمینه بخش ضروری اکثر برنامه‌ها است. وقتی به درستی مدیریت شود، می‌تواند تجربه کاربری شما را شگفت‌انگیز کند - فوری، سریع و آگاه به زمینه. هنگامی که پردازش پس‌زمینه به درستی انجام نشود، می‌تواند بیهوده RAM (و باتری) را مصرف کند و بر عملکرد سیستم برای سایر برنامه‌ها تأثیر بگذارد.

از اندروید 5.0، JobScheduler روش ترجیحی برای انجام کارهای پس‌زمینه به روشی است که برای کاربران خوب است. برنامه‌ها می‌توانند کارها را زمان‌بندی کنند در حالی که به سیستم اجازه می‌دهند بر اساس حافظه، قدرت و شرایط اتصال بهینه شود. JobScheduler کنترل و سادگی را ارائه می دهد و ما می خواهیم همه برنامه ها از آن استفاده کنند.

گزینه خوب دیگر GCMNetworkManager است، بخشی از خدمات Google Play، که برنامه‌ریزی کاری مشابه را با سازگاری با نسخه‌های قدیمی اندروید ارائه می‌دهد.

ما همچنان به توسعه JobScheduler و GCMNetworkManager ادامه می‌دهیم تا موارد استفاده بیشتری را برآورده کنند - برای مثال، در Android 7.0 اکنون می‌توانید کار پس‌زمینه را بر اساس تغییرات در ارائه‌دهندگان محتوا زمان‌بندی کنید. در همان زمان، ما شروع به منسوخ کردن برخی از الگوهای قدیمی می کنیم که می توانند عملکرد سیستم را کاهش دهند، به خصوص در دستگاه های با حافظه کم.

در Android 7.0 ما سه پخش ضمنی پرکاربرد را حذف می‌کنیم - CONNECTIVITY_ACTION ، ACTION_NEW_PICTURE ، و ACTION_NEW_VIDEO - زیرا می‌توانند همزمان فرآیندهای پس‌زمینه برنامه‌های متعدد را بیدار کنند و حافظه و باتری را تحت فشار قرار دهند. اگر برنامه شما اینها را دریافت می‌کند، از Android 7.0 برای مهاجرت به JobScheduler و APIهای مرتبط استفاده کنید.

برای جزئیات به مستندات Background Optimizations نگاهی بیندازید.

SurfaceView

Android 7.0 حرکت همزمان را به کلاس SurfaceView می‌آورد که عملکرد باتری بهتری نسبت به TextureView در موارد خاص ارائه می‌کند: هنگام رندر ویدیو یا محتوای سه‌بعدی، برنامه‌های دارای موقعیت اسکرول و انیمیشن متحرک با SurfaceView انرژی کمتری نسبت به TextureView مصرف می‌کنند.

کلاس SurfaceView ترکیب بندی با باتری کارآمدتری را روی صفحه امکان پذیر می کند، زیرا در سخت افزار اختصاصی، جدا از محتوای پنجره برنامه ترکیب شده است. در نتیجه، کپی های متوسط ​​کمتری نسبت به TextureView ایجاد می کند.

موقعیت محتوای یک شی SurfaceView اکنون به طور همزمان با محتوای برنامه حاوی آن به روز می شود. یکی از نتایج این تغییر این است که ترجمه‌های ساده یا مقیاس‌های ویدیویی که در SurfaceView پخش می‌شود، دیگر نوارهای سیاهی در کنار نمای هنگام حرکت ایجاد نمی‌کند.

با شروع اندروید 7.0، اکیداً توصیه می کنیم با استفاده از SurfaceView به جای TextureView در مصرف برق صرفه جویی کنید.

ذخیره داده

ذخیره داده در تنظیمات

شکل 4. ذخیره داده در تنظیمات.

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

Android 7.0 حالت Data Saver را معرفی می‌کند، یک سرویس سیستمی جدید که به کاهش استفاده از داده‌های تلفن همراه توسط برنامه‌ها، چه در رومینگ، نزدیک به پایان چرخه صورت‌حساب یا در یک بسته داده پیش‌پرداخت کوچک کمک می‌کند. Data Saver به کاربران امکان کنترل نحوه استفاده برنامه‌ها از داده‌های تلفن همراه را می‌دهد و به توسعه‌دهندگان اجازه می‌دهد خدمات کارآمدتری را هنگامی که Data Saver روشن است ارائه دهند.

هنگامی که کاربر بهینه‌سازی داده را در تنظیمات فعال می‌کند و دستگاه در یک شبکه اندازه‌گیری شده است، سیستم استفاده از داده‌های پس‌زمینه را مسدود می‌کند و به برنامه‌ها سیگنال می‌دهد تا در صورت امکان از داده‌های کمتری در پیش‌زمینه استفاده کنند - مانند محدود کردن نرخ بیت برای پخش، کاهش کیفیت تصویر، به تعویق انداختن پیشخوان خوش بینانه و غیره. کاربران می‌توانند به برنامه‌های خاصی اجازه دهند استفاده از داده‌های اندازه‌گیری شده در پس‌زمینه را حتی زمانی که Data Saver روشن است، مجاز کنند.

Android 7.0 ConnectivityManager را گسترش می‌دهد تا برنامه‌ها راهی برای بازیابی تنظیمات برگزیده بهینه‌سازی داده کاربر و نظارت بر تغییرات ترجیحی ارائه دهد. همه برنامه‌ها باید بررسی کنند که آیا کاربر «بهینه‌سازی اطلاعات» را فعال کرده است یا خیر و سعی کنند استفاده از داده‌های پیش‌زمینه و پس‌زمینه را محدود کنند.

Vulkan API

Android 7.0 Vulkan™ ، یک API رندر سه بعدی جدید را در پلتفرم ادغام می کند. مانند OpenGL™ ES ، Vulkan یک استاندارد باز برای گرافیک سه بعدی و رندر است که توسط گروه Khronos نگهداری می شود.

Vulkan از ابتدا طراحی شده است تا سربار CPU را در درایور به حداقل برساند و به برنامه شما اجازه می دهد تا عملکرد GPU را مستقیماً کنترل کند. Vulkan همچنین موازی سازی بهتری را با اجازه دادن به چندین رشته برای انجام کارهایی مانند ساخت بافر فرمان به طور همزمان امکان پذیر می کند.

ابزارها و کتابخانه های توسعه Vulkan در Android 7.0 SDK قرار گرفته اند. آنها عبارتند از:

  • سرصفحه ها
  • لایه های اعتبار سنجی (کتابخانه های اشکال زدایی)
  • کامپایلر سایه زن SPIR-V
  • کتابخانه کامپایل سایه بان زمان اجرا SPIR-V

Vulkan فقط برای برنامه‌های دستگاه‌های دارای سخت‌افزار دارای قابلیت Vulkan، مانند Nexus 5X، Nexus 6P و Nexus Player در دسترس است. ما از نزدیک با شرکای خود کار می کنیم تا Vulkan را در اسرع وقت به دستگاه های بیشتری برسانیم.

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

Quick Settings Tile API

کاشی های تنظیمات سریع در سایه اعلان

شکل 5. کاشی های تنظیمات سریع در سایه اعلان.

تنظیمات سریع یک راه محبوب و ساده برای نمایش تنظیمات و اقدامات کلیدی، مستقیماً از قسمت اعلان است. در Android 7.0، ما دامنه تنظیمات سریع را گسترش داده‌ایم تا آن را حتی مفیدتر و راحت‌تر کنیم.

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

برای توسعه دهندگان، Android 7.0 همچنین یک API جدید اضافه می کند که به شما امکان می دهد کاشی های تنظیمات سریع خود را تعریف کنید تا به کاربران امکان دسترسی آسان به کنترل ها و اقدامات کلیدی در برنامه شما را بدهد.

کاشی‌های تنظیمات سریع برای کنترل‌ها یا اقداماتی که نیاز فوری یا مکرر استفاده می‌شوند، رزرو شده‌اند و نباید به‌عنوان میانبر برای راه‌اندازی یک برنامه استفاده شوند.

هنگامی که کاشی‌های خود را تعریف کردید، می‌توانید آن‌ها را در اختیار کاربران قرار دهید تا فقط با کشیدن و رها کردن آن‌ها را به تنظیمات سریع اضافه کنند.

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

مسدود کردن شماره

Android 7.0 اکنون از مسدود کردن شماره در پلتفرم پشتیبانی می‌کند و یک چارچوب API ارائه می‌کند تا به ارائه‌دهندگان خدمات اجازه دهد لیست شماره‌های مسدود شده را حفظ کنند. برنامه پیش‌فرض پیامک، برنامه پیش‌فرض تلفن و برنامه‌های شرکت مخابراتی می‌توانند از فهرست شماره‌های مسدود شده بخوانند و بنویسند. این لیست برای سایر برنامه ها قابل دسترسی نیست.

با تبدیل شماره مسدود کردن به یکی از ویژگی‌های استاندارد این پلتفرم، اندروید راهی ثابت برای برنامه‌ها فراهم می‌کند تا از مسدود کردن شماره در طیف گسترده‌ای از دستگاه‌ها پشتیبانی کنند. از دیگر مزایایی که اپلیکیشن ها می توانند از آن بهره ببرند عبارتند از:

  • شماره های مسدود شده در تماس ها نیز روی پیامک مسدود می شوند
  • شماره‌های مسدود شده می‌توانند در بازنشانی‌ها و دستگاه‌ها از طریق ویژگی پشتیبان‌گیری و بازیابی باقی بمانند
  • چندین برنامه می توانند از همان لیست شماره های مسدود شده استفاده کنند

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

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

غربالگری تماس

اندروید ۷.۰ به برنامه پیش‌فرض تلفن اجازه می‌دهد تا تماس‌های دریافتی را نمایش دهد. برنامه تلفن این کار را با پیاده‌سازی CallScreeningService جدید انجام می‌دهد، که به برنامه تلفن اجازه می‌دهد تا تعدادی از اقدامات را بر اساس Call.Details ورودی انجام دهد. جزئیات، مانند:

  • تماس دریافتی را رد کنید
  • اجازه تماس به گزارش تماس را ندهید
  • اعلان تماس را به کاربر نشان ندهید

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

پشتیبانی چند محلی، زبان های بیشتر

Android 7.0 اکنون به کاربران امکان می‌دهد چندین منطقه را در تنظیمات انتخاب کنند تا از موارد استفاده دو زبانه بهتر پشتیبانی کنند. برنامه‌ها می‌توانند از یک API جدید برای دریافت مناطق انتخابی کاربر استفاده کنند و سپس تجربه‌های کاربری پیچیده‌تری را برای کاربران چندمحلی ارائه دهند - مانند نمایش نتایج جستجو به چندین زبان و عدم ارائه ترجمه صفحات وب به زبانی که کاربر قبلاً می‌داند.

اندروید 7.0 در کنار پشتیبانی از چند محلی، دامنه زبان های موجود را برای کاربران گسترش می دهد. هر کدام بیش از 25 نوع را برای زبان های رایج مانند انگلیسی، اسپانیایی، فرانسوی و عربی ارائه می دهد. همچنین پشتیبانی جزئی برای بیش از 100 زبان جدید اضافه می کند.

برنامه‌ها می‌توانند با فراخوانی LocaleList.GetDefault() فهرستی از زبان‌های تنظیم‌شده توسط کاربر را دریافت کنند. Android 7.0 برای پشتیبانی از تعداد گسترده‌ای از زبان‌ها، روشی را تغییر می‌دهد که منابع را حل می‌کند. مطمئن شوید که برنامه‌های شما مطابق با منطق وضوح منبع جدید کار می‌کنند و تأیید می‌کنید.

برای آشنایی با رفتارهای جدید با وضوح منابع و بهترین شیوه هایی که باید دنبال کنید، به پشتیبانی چند زبانه مراجعه کنید.

ایموجی های جدید

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

  • قبل از قرار دادن دستگاه، بررسی کنید که دارای ایموجی باشد. برای بررسی اینکه کدام ایموجی در فونت سیستم وجود دارد، از روش hasGlyph(String) استفاده کنید.
  • بررسی کنید که ایموجی از انتخابگرهای تنوع پشتیبانی می کند. انتخابگرهای تنوع به شما امکان می دهند ایموجی های خاصی را به صورت رنگی یا سیاه و سفید ارائه دهید. در دستگاه‌های تلفن همراه، برنامه‌ها باید ایموجی‌ها را به‌جای سیاه و سفید، رنگی نشان دهند. با این حال، اگر برنامه شما ایموجی ها را به صورت متنی نمایش می دهد، باید از تنوع سیاه و سفید استفاده کند. برای تعیین اینکه آیا ایموجی دارای تنوع است یا خیر، از انتخابگر تنوع استفاده کنید. برای فهرست کاملی از نویسه‌های دارای تغییرات، بخش توالی‌های تغییر شکلک در اسناد یونیکد در مورد تغییرات را مرور کنید.
  • بررسی کنید که ایموجی از رنگ پوست پشتیبانی می کند. اندروید 7.0 به کاربران اجازه می دهد تا رنگ پوست رندر شده ایموجی ها را به دلخواه خود تغییر دهند. برنامه‌های صفحه‌کلید باید نشانه‌های بصری برای ایموجی‌هایی که رنگ‌های پوستی مختلفی دارند ارائه دهند و به کاربران اجازه دهند رنگ پوستی را که ترجیح می‌دهند انتخاب کنند. برای تعیین اینکه کدام ایموجی های سیستمی دارای اصلاح کننده رنگ پوست هستند، از روش hasGlyph(String) استفاده کنید. با خواندن مستندات یونیکد می‌توانید تعیین کنید کدام شکلک‌ها از رنگ پوست استفاده می‌کنند.

API های ICU4J در اندروید

Android 7.0 اکنون زیر مجموعه ای از API های ICU4J را در چارچوب اندروید تحت بسته android.icu ارائه می دهد. مهاجرت آسان است و بیشتر مستلزم تغییر فضای نام com.java.icu به android.icu است. اگر قبلاً از یک بسته ICU4J در برنامه‌های خود استفاده می‌کنید، جابجایی به APIهای android.icu ارائه‌شده در چارچوب Android می‌تواند باعث صرفه‌جویی قابل توجهی در اندازه APK شود.

برای کسب اطلاعات بیشتر در مورد API های Android ICU4J، به پشتیبانی ICU4J مراجعه کنید.

WebView

Chrome + WebView، با هم

با شروع Chrome نسخه 51 در Android نسخه 7.0 و بالاتر، Chrome APK در دستگاه شما برای ارائه و ارائه WebViews سیستم Android استفاده می‌شود. این رویکرد استفاده از حافظه را در خود دستگاه بهبود می بخشد و همچنین پهنای باند مورد نیاز برای به روز نگه داشتن WebView را کاهش می دهد (زیرا تا زمانی که Chrome فعال باشد، WebView APK مستقل دیگر به روز نمی شود).

می‌توانید با فعال کردن Developer Options و انتخاب اجرای WebView، ارائه‌دهنده WebView خود را انتخاب کنید. می‌توانید از هر نسخه Chrome سازگار (Dev، Beta یا Stable) که بر روی دستگاه شما یا Webview APK مستقل نصب شده است برای اجرای WebView استفاده کنید.

چند فرآیندی

با شروع نسخه 51 کروم در اندروید 7.0، WebView محتوای وب را در یک فرآیند sandboxed جداگانه اجرا می‌کند، زمانی که گزینه برنامه‌نویس «Multiprocess WebView» فعال باشد.

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

اگر مشکلات غیرمنتظره‌ای در حالت چند فرآیندی پیدا کردید، مایلیم در مورد آنها بشنویم. لطفاً با تیم WebView در ردیاب اشکال Chromium تماس بگیرید.

جاوا اسکریپت قبل از بارگذاری صفحه اجرا می شود

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

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

موقعیت جغرافیایی در مبادی ناامن

با شروع برنامه‌هایی که Android 7.0 را هدف قرار می‌دهند، API مکان جغرافیایی فقط در مبداهای امن (از طریق HTTPS) مجاز خواهد بود. این خط‌مشی برای محافظت از اطلاعات خصوصی کاربران در هنگام استفاده از اتصال ناامن طراحی شده است.

تست با WebView بتا

WebView به طور منظم به روز می شود، بنابراین توصیه می کنیم با استفاده از کانال بتای WebView مرتباً سازگاری با برنامه خود را آزمایش کنید. برای شروع آزمایش نسخه های پیش از انتشار WebView در Android 7.0، Chrome Dev یا Chrome Beta را دانلود و نصب کنید و آن را به عنوان پیاده سازی WebView در زیر گزینه های توسعه دهنده همانطور که در بالا توضیح داده شد انتخاب کنید. لطفاً مشکلات را از طریق ردیاب اشکال Chromium گزارش کنید تا بتوانیم قبل از انتشار نسخه جدید WebView آنها را برطرف کنیم.

OpenGL™ ES 3.2 API

Android 7.0 رابط های فریمورک و پشتیبانی پلتفرم را برای OpenGL ES 3.2 اضافه می کند، از جمله:

  • همه برنامه های افزودنی از بسته برنامه افزودنی Android (AEP) به جز EXT_texture_sRGB_decode .
  • فریم بافرهای ممیز شناور برای HDR و سایه های معوق.
  • BaseVertex برای فعال کردن دسته بندی و پخش بهتر تماس ها را می کشد.
  • کنترل دسترسی بافر قوی برای کاهش سربار WebGL.

چارچوب API برای OpenGL ES 3.2 در اندروید 7.0 با کلاس GLES32 ارائه شده است. هنگام استفاده از OpenGL ES 3.2، حتماً با استفاده از تگ <uses-feature> و ویژگی android:glEsVersion این مورد را در فایل مانیفست خود اعلام کنید.

برای اطلاعات در مورد استفاده از OpenGL ES، از جمله نحوه بررسی نسخه OpenGL ES پشتیبانی شده دستگاه در زمان اجرا، راهنمای OpenGL ES API را ببینید.

ضبط تلویزیون اندروید

Android 7.0 توانایی ضبط و پخش محتوا از سرویس‌های ورودی Android TV را از طریق APIهای ضبط جدید اضافه می‌کند. با استفاده از APIهای موجود در حال تغییر زمان، سرویس‌های ورودی تلویزیون می‌توانند داده‌های کانالی را که می‌توان ضبط کرد، نحوه ذخیره جلسات ضبط‌شده را کنترل کرد و تعامل کاربر با محتوای ضبط‌شده را مدیریت کرد.

برای اطلاعات بیشتر، APIهای ضبط Android TV را ببینید.

اندروید برای کار

Android for Work بسیاری از ویژگی‌ها و APIهای جدید را برای دستگاه‌های دارای Android 7.0 اضافه می‌کند. برخی از نکات برجسته در زیر آمده است - برای فهرست کامل ویژگی‌ها، به فهرست ویژگی‌های Android Enterprise مراجعه کنید.

چالش امنیتی نمایه کاری

دارندگان نمایه ای که N SDK را هدف قرار می دهند، می توانند یک چالش امنیتی جداگانه برای برنامه های در حال اجرا در نمایه کاری تعیین کنند. چالش کاری زمانی نشان داده می‌شود که کاربر تلاش می‌کند هر برنامه کاری را باز کند. تکمیل موفقیت آمیز چالش امنیتی، نمایه کار را باز می کند و در صورت لزوم آن را رمزگشایی می کند. برای دارندگان نمایه، ACTION_SET_NEW_PASSWORD از کاربر می‌خواهد یک چالش کاری تنظیم کند، و ACTION_SET_NEW_PARENT_PROFILE_PASSWORD از کاربر می‌خواهد قفل دستگاه را تنظیم کند.

صاحبان نمایه می‌توانند خط‌مشی‌های رمز عبور متمایز را برای چالش کاری تعیین کنند (مانند مدت زمانی که پین ​​نیاز است یا اینکه آیا می‌توان از اثر انگشت برای باز کردن قفل نمایه استفاده کرد) با استفاده از setPasswordQuality() , setPasswordMinimumLength() و روش‌های مرتبط. مالک نمایه همچنین می‌تواند قفل دستگاه را با استفاده از نمونه DevicePolicyManager که با روش جدید getParentProfileInstance() برگردانده شده است، تنظیم کند. علاوه بر این، صاحبان نمایه می‌توانند با استفاده از متدهای setOrganizationColor() و setOrganizationName() صفحه اعتبار را برای چالش کاری سفارشی کنند.

کار را خاموش کنید

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

همیشه در VPN

صاحبان دستگاه و مالکان نمایه می توانند اطمینان حاصل کنند که برنامه های کاری همیشه از طریق یک VPN مشخص به هم متصل می شوند. پس از بوت شدن دستگاه، سیستم به طور خودکار VPN را راه اندازی می کند.

متدهای DevicePolicyManager جدید setAlwaysOnVpnPackage() و getAlwaysOnVpnPackage() هستند.

از آنجایی که سرویس‌های VPN می‌توانند مستقیماً به سیستم بدون تعامل برنامه متصل شوند، مشتریان VPN باید نقاط ورودی جدید برای همیشه در VPN را مدیریت کنند. مانند قبل، سرویس‌ها توسط یک فیلتر قصد تطبیق عملکرد android.net.VpnService به سیستم نشان داده می‌شوند.

کاربران همچنین می توانند به صورت دستی کلاینت های Always on VPN را تنظیم کنند که روش های VPNService را با استفاده از Settings>More>Vpn پیاده سازی می کنند. گزینه فعال کردن Always on VPN از تنظیمات تنها در صورتی در دسترس است که مشتری VPN سطح API 24 را هدف قرار دهد.

تامین سفارشی

یک برنامه کاربردی می‌تواند جریان‌های ارائه‌دهنده مالک نمایه و صاحب دستگاه را با رنگ‌ها و آرم‌های شرکت سفارشی کند. DevicePolicyManager.EXTRA_PROVISIONING_MAIN_COLOR رنگ جریان را سفارشی می کند. DevicePolicyManager.EXTRA_PROVISIONING_LOGO_URI جریان را با آرم شرکت سفارشی می کند.

افزایش دسترسی

Android 7.0 اکنون تنظیمات Vision را مستقیماً در صفحه خوش آمدید برای تنظیم دستگاه جدید ارائه می دهد. این کار، کشف و پیکربندی ویژگی‌های دسترس‌پذیری را در دستگاه‌های خود، از جمله حرکت بزرگ‌نمایی، اندازه قلم، اندازه نمایشگر و TalkBack برای کاربران آسان‌تر می‌کند.

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

همچنین در اندروید 7.0، سرویس‌های دسترس‌پذیری اکنون می‌توانند به کاربران دارای اختلالات حرکتی کمک کنند تا صفحه نمایش را لمس کنند. API جدید به ساخت سرویس هایی با ویژگی هایی مانند ردیابی چهره، ردیابی چشم، اسکن نقطه و غیره اجازه می دهد تا نیازهای آن کاربران را برآورده کند.

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

بوت مستقیم

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

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

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

برای اطلاعات بیشتر، مستقیم بوت را ببینید.

گواهی کلید

Android 7.0 گواهی کلید را معرفی می‌کند، ابزار امنیتی جدیدی که به شما کمک می‌کند مطمئن شوید که جفت‌های کلید ذخیره‌شده در فروشگاه کلید سخت‌افزاری دستگاه به درستی از اطلاعات حساسی که برنامه شما استفاده می‌کند محافظت می‌کند. با استفاده از این ابزار، اطمینان بیشتری به دست می آورید که برنامه شما با کلیدهایی که در سخت افزار امن قرار دارند، تعامل دارد، حتی اگر دستگاهی که برنامه شما را اجرا می کند روت شده باشد. اگر از کلیدهای فروشگاه کلید سخت افزاری در برنامه های خود استفاده می کنید، باید از این ابزار استفاده کنید، به خصوص اگر از کلیدها برای تأیید اطلاعات حساس در برنامه خود استفاده می کنید.

تأیید کلید به شما امکان می دهد تأیید کنید که یک جفت کلید RSA یا EC در محل ذخیره کلید سخت افزاری دستگاه در محیط اجرای مورد اعتماد دستگاه (TEE) ایجاد و ذخیره شده است. این ابزار همچنین به شما امکان می دهد از یک سرویس خارج از دستگاه مانند سرور پشتیبان برنامه خود برای تعیین و تأیید قوی استفاده و اعتبار جفت کلید استفاده کنید. این ویژگی‌ها سطح بیشتری از امنیت را فراهم می‌کنند که از جفت کلید محافظت می‌کند، حتی اگر کسی دستگاه را روت کند یا امنیت پلتفرم Android را که روی دستگاه اجرا می‌شود به خطر بیاندازد.

توجه: فقط تعداد کمی از دستگاه‌های دارای Android 7.0 از گواهی کلید در سطح سخت‌افزار پشتیبانی می‌کنند. همه دستگاه‌های دیگری که Android 7.0 را اجرا می‌کنند، به جای آن از گواهی کلید در سطح نرم‌افزار استفاده می‌کنند. قبل از اینکه ویژگی‌های کلیدهای سخت‌افزاری دستگاه را در محیطی در سطح تولید بررسی کنید، باید مطمئن شوید که دستگاه از تأیید کلید در سطح سخت‌افزار پشتیبانی می‌کند. برای انجام این کار، باید بررسی کنید که زنجیره گواهی گواهی حاوی یک گواهی ریشه است که توسط کلید ریشه گواهی Google امضا شده است و عنصر attestationSecurityLevel در ساختار داده توضیحات کلید روی سطح امنیتی TrustedEnvironment تنظیم شده است.

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

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

در Android 7.0، برنامه‌ها می‌توانند با استفاده از پیکربندی امنیت شبکه به‌جای استفاده از API‌های برنامه‌ریزی مستعد خطا (مانند X509TrustManager) رفتار اتصالات امن (HTTPS، TLS) خود را بدون هیچ گونه تغییر کدی، به‌طور ایمن سفارشی کنند.

ویژگی های پشتیبانی شده:

  • لنگرهای اعتماد سفارشی به یک برنامه اجازه می‌دهد تا مقامات صدور گواهی (CA) را برای اتصالات امن خود سفارشی کند. به عنوان مثال، اعتماد به گواهی‌های خاص خودامضا یا مجموعه‌ای محدود از CAهای عمومی.
  • لغو فقط اشکال زدایی. به یک توسعه‌دهنده برنامه اجازه می‌دهد تا اتصالات امن برنامه خود را بدون خطر اضافی برای پایه نصب‌شده اشکال‌زدایی کند.
  • انصراف از ترافیک Cleartext. به یک برنامه اجازه می دهد از خود در برابر استفاده تصادفی از ترافیک متن شفاف محافظت کند.
  • سنجاق گواهی یک ویژگی پیشرفته که به یک برنامه اجازه می‌دهد کلیدهای سرور برای اتصالات امن را محدود کند.

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

مرجع صدور گواهینامه مورد اعتماد پیش فرض

به‌طور پیش‌فرض، برنامه‌هایی که Android 7.0 را هدف قرار می‌دهند، فقط به گواهی‌های ارائه‌شده توسط سیستم اعتماد دارند و دیگر به مقامات گواهی (CA) اضافه‌شده توسط کاربر اعتماد ندارند. برنامه‌هایی که Android 7.0 (سطح API 24) را هدف قرار می‌دهند و می‌خواهند به CAهای اضافه‌شده توسط کاربر اعتماد کنند، باید از پیکربندی امنیت شبکه استفاده کنند تا مشخص کنند که چگونه CA کاربر باید مورد اعتماد باشد.

APK Signature Scheme v2

Android 7.0 APK Signature Scheme v2 را معرفی می‌کند، یک طرح جدید امضای برنامه که زمان نصب سریع‌تر برنامه و محافظت بیشتر در برابر تغییرات غیرمجاز در فایل‌های APK را ارائه می‌دهد. به طور پیش‌فرض، Android Studio 2.2 و افزونه Android Gradle 2.2 برنامه شما را با استفاده از APK Signature Scheme v2 و طرح امضای سنتی، که از امضای JAR استفاده می‌کند، امضا می‌کنند.

اگرچه توصیه می کنیم APK Signature Scheme v2 را در برنامه خود اعمال کنید، این طرح جدید اجباری نیست. اگر برنامه شما هنگام استفاده از APK Signature Scheme v2 به درستی ساخته نمی شود، می توانید طرح جدید را غیرفعال کنید. فرآیند غیرفعال کردن باعث می شود Android Studio 2.2 و افزونه Android Gradle 2.2 تنها با استفاده از طرح امضای سنتی، برنامه شما را امضا کنند. برای امضای تنها با طرح سنتی، فایل build.gradle در سطح ماژول را باز کنید، سپس خط v2SigningEnabled false را به پیکربندی امضای انتشار خود اضافه کنید:

  android {
    ...
    defaultConfig { ... }
    signingConfigs {
      release {
        storeFile file("myreleasekey.keystore")
        storePassword "password"
        keyAlias "MyReleaseKey"
        keyPassword "password"
        v2SigningEnabled false
      }
    }
  }

احتیاط: اگر برنامه خود را با استفاده از APK Signature Scheme v2 امضا کنید و تغییرات بیشتری در برنامه ایجاد کنید، امضای برنامه باطل می شود. به همین دلیل، قبل از امضای برنامه خود با استفاده از APK Signature Scheme v2 از ابزارهایی مانند zipalign استفاده کنید نه بعد از آن.

برای اطلاعات بیشتر، اسناد Android Studio را بخوانید که نحوه امضای یک برنامه در Android Studio و نحوه پیکربندی فایل ساخت برای امضای برنامه ها با استفاده از افزونه Android برای Gradle را توضیح می دهد.

دسترسی به دایرکتوری Scoped

در Android 7.0، برنامه‌ها می‌توانند از APIهای جدید برای درخواست دسترسی به فهرست‌های ذخیره‌سازی خارجی خاص، از جمله فهرست‌های موجود در رسانه‌های قابل جابجایی مانند کارت‌های SD استفاده کنند. API های جدید نحوه دسترسی برنامه شما به فهرست های ذخیره سازی خارجی استاندارد، مانند دایرکتوری Pictures را بسیار ساده می کنند. برنامه‌هایی مانند برنامه‌های عکس می‌توانند از این APIها به‌جای استفاده از READ_EXTERNAL_STORAGE استفاده کنند، که به همه فهرست‌های ذخیره‌سازی دسترسی می‌دهد، یا چارچوب دسترسی به فضای ذخیره‌سازی، که کاربر را وادار می‌کند به فهرست راهنمای حرکت کند.

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

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

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

در اندروید 7.0، کاربر می تواند Meta + / را فشار دهد تا صفحه کلید میانبر را فعال کند که همه میانبرهای موجود را هم از سیستم و هم از برنامه در فوکوس نشان می دهد. در صورت وجود میانبر، سیستم این میانبرها را به صورت خودکار از منوی برنامه بازیابی می کند. شما همچنین می توانید لیست های میانبر تنظیم شده خود را برای صفحه نمایش ارائه دهید. می توانید این کار را با نادیده گرفتن متد onProvideKeyboardShortcuts() انجام دهید.

توجه: کلید متا در همه صفحه‌کلیدها وجود ندارد: در صفحه‌کلید مکینتاش، کلید Command ، در صفحه‌کلید ویندوز، کلید Windows ، و در صفحه‌کلیدهای Pixel C و ChromeOS، کلید جستجو است.

برای راه‌اندازی «راهنمای میان‌برهای صفحه‌کلید» از هر نقطه‌ای در برنامه‌تان، با requestShowKeyboardShortcuts() از فعالیت مربوطه تماس بگیرید.

سفارشی Pointer API

Android 7.0 Custom Pointer API را معرفی می کند که به شما امکان می دهد ظاهر، دید و رفتار اشاره گر را سفارشی کنید. این قابلیت به ویژه زمانی مفید است که کاربر از ماوس یا پد لمسی برای تعامل با اشیاء UI استفاده می کند. اشاره گر پیش فرض از یک نماد استاندارد استفاده می کند. این API همچنین شامل قابلیت های پیشرفته مانند تغییر ظاهر نماد اشاره گر بر اساس حرکات خاص ماوس یا لمسی است.

برای تنظیم یک نماد اشاره گر ، روش onResolvePointerIcon() کلاس View را نادیده بگیرید. این روش از یک شیء PointerIcon برای ترسیم نمادی که مربوط به یک رویداد حرکتی خاص است استفاده می کند.

API عملکرد پایدار

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

برای پرداختن به این محدودیت ها ، Android 7.0 شامل پشتیبانی از حالت عملکرد پایدار است و OEM ها را قادر می سازد تا نکات مربوط به قابلیت عملکرد دستگاه را برای برنامه های طولانی مدت ارائه دهد. توسعه دهندگان برنامه می توانند از این نکات برای تنظیم برنامه ها برای یک سطح قابل پیش بینی و مداوم عملکرد دستگاه در مدت زمان طولانی استفاده کنند.

توسعه دهندگان برنامه می توانند این API جدید را در Android 7.0 فقط در دستگاه های Nexus 6P امتحان کنند. برای استفاده از این ویژگی ، پرچم پنجره عملکرد پایدار را برای پنجره ای که می خواهید در حالت عملکرد پایدار اجرا کنید تنظیم کنید. این پرچم را با استفاده از روش Window.setSustainedPerformanceMode() تنظیم کنید. سیستم به طور خودکار این حالت را غیرفعال می کند وقتی پنجره دیگر در تمرکز نیست.

پشتیبانی VR

Android 7.0 پشتیبانی و بهینه سازی پلتفرم را برای یک حالت VR جدید اضافه می کند تا به توسعه دهندگان اجازه دهد تجربیات VR با کیفیت بالا را برای کاربران بسازند. تعدادی پیشرفت عملکرد وجود دارد ، از جمله دسترسی به هسته منحصر به فرد CPU برای برنامه های VR. در برنامه های خود می توانید از ردیابی هوشمند سر و اعلان های استریو که برای VR کار می کنند استفاده کنید. از همه مهمتر ، Android 7.0 گرافیک تأخیر بسیار کمی را فراهم می کند. برای کسب اطلاعات کامل در مورد ساخت برنامه های VR برای Android 7.0 ، به Google VR SDK برای Android مراجعه کنید.

در Android 7.0 ، توسعه دهندگان خدمات چاپ اکنون می توانند اطلاعات اضافی در مورد چاپگرهای فردی و کارهای چاپی را سطح بندی کنند.

هنگام لیست چاپگرهای انفرادی ، یک سرویس چاپ اکنون می تواند نمادهای هر چاپگر را به دو روش تنظیم کند:

  • می توانید با فراخوانی setIconResourceId() یک نماد را از یک شناسه منبع تنظیم کنید.
  • می توانید با فراخوانی setHasCustomPrinterIcon() یک نماد را از شبکه نشان دهید ، و تنظیم پاسخ برای زمان درخواست نماد با استفاده از onRequestCustomPrinterIcon() .

علاوه بر این ، شما می توانید با فراخوانی setInfoIntent() یک فعالیت برای هر چاپگر ارائه دهید.

شما می توانید به ترتیب پیشرفت و وضعیت مشاغل چاپی را در اعلان کار چاپ با فراخوانی setProgress() و setStatus() نشان دهید.

فریم اندازه گیری API

API Metrics Frame به یک برنامه اجازه می دهد تا عملکرد رندر UI خود را کنترل کند. API این قابلیت را با قرار دادن یک میخانه جریان/زیر API برای انتقال اطلاعات زمان بندی فریم برای پنجره فعلی برنامه فراهم می کند. داده های برگشتی معادل آن است که adb shell dumpsys gfxinfo framestats را نمایش می دهد ، اما محدود به 120 فریم گذشته نیست.

شما می توانید از API Metrics Frame برای اندازه گیری عملکرد UI در سطح تعامل در تولید و بدون اتصال USB استفاده کنید. این API اجازه می دهد تا داده ها را با دانه بندی بسیار بالاتر از آنچه که adb shell dumpsys gfxinfo انجام می دهد ، جمع آوری کند. این دانه بندی بالاتر امکان پذیر است زیرا سیستم می تواند داده ها را برای تعامل خاص در برنامه جمع آوری کند. این سیستم نیازی به ضبط جهانی از عملکرد کل برنامه ندارد یا دولت جهانی را پاک می کند. شما می توانید از این قابلیت برای جمع آوری داده های عملکرد و گرفتن رگرسیون در عملکرد UI برای موارد استفاده واقعی در یک برنامه استفاده کنید.

برای نظارت بر یک پنجره ، روش پاسخ تماس OnFrameMetricsAvailableListener.onFrameMetricsAvailable() پیاده سازی کرده و آن را در آن پنجره ثبت کنید.

API یک شیء FrameMetrics را ارائه می دهد ، که حاوی داده های زمان بندی است که گزارش زیر سیستم برای نقاط عطف مختلف در یک چرخه قاب گزارش می دهد. معیارهای پشتیبانی شده عبارتند از: UNKNOWN_DELAY_DURATION ، INPUT_HANDLING_DURATION ، ANIMATION_DURATION ، LAYOUT_MEASURE_DURATION ، DRAW_DURATION ، SYNC_DURATION ، COMMAND_ISSUE_DURATION ، SWAP_BUFFERS_DURATION ، TOTAL_DURATION و FIRST_DRAW_FRAME .

پرونده های مجازی

در نسخه های قبلی Android ، برنامه شما می تواند از Framework Storage Access استفاده کند تا کاربران بتوانند پرونده ها را از حساب های ذخیره سازی ابری خود مانند Google Drive انتخاب کنند. با این حال ، هیچ راهی برای نمایش پرونده هایی وجود ندارد که نمایندگی مستقیم بایت را نداشته باشند. برای تهیه جریان ورودی به هر پرونده لازم بود.

Android 7.0 مفهوم پرونده های مجازی را به چارچوب دسترسی به ذخیره سازی اضافه می کند. ویژگی Files Virtual به شما اجازه می دهد تا DocumentsProvider شما را به صورت اسناد و مدارک خود بازگرداند که می تواند با یک هدف ACTION_VIEW استفاده شود ، حتی اگر آنها یک نمایش مستقیم بایت را نداشته باشند. Android 7.0 همچنین به شما امکان می دهد قالب های متناوب را برای پرونده های کاربر ، مجازی یا موارد دیگر ارائه دهید.

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