مصرف انرژی را برای برنامه خود بهینه کنید

این سند، بهترین شیوه‌ها را برای بهینه‌سازی مصرف برق در یک برنامه ناوبری موبایل که با استفاده از Navigation SDK می‌سازید، شرح می‌دهد. در عین حال، مواردی را که باید هنگام به‌کارگیری این شیوه‌ها در نظر بگیرید، شرح می‌دهد. به‌طور خاص، این سند موارد زیر را پوشش می‌دهد:

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

چرا باید اپلیکیشن ناوبری خود را بهینه کنید؟

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

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

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

چه چیزی بیشترین برق را مصرف می‌کند؟

این بخش، فعالیت‌های درون‌برنامه‌ای مرتبط با مصرف بالای انرژی را به دو دسته تقسیم می‌کند:

  • رندر صفحه نمایش
  • به‌روزرسانی‌های مکان

رندر صفحه نمایش

رندر صفحه نمایش معمولاً بیشترین مصرف انرژی را در برنامه‌های ناوبری موبایل ایجاد می‌کند. هر بار که دستگاه نقشه و سایر عناصر رابط کاربری را روی صفحه نمایش می‌دهد، به پردازش GPU و CPU متکی است. به طور مشابه، وقتی کاربر آن صفحه را برای مدت طولانی روشن می‌گذارد، این نیز از انرژی بیشتری استفاده می‌کند.

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

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

علاوه بر رندر صفحه نمایش، دو فعالیت ناوبری دیگر نیز برق دستگاه را مصرف می‌کنند:

  • استفاده از دکل‌های مخابراتی و GPS
  • به‌روزرسانی‌ها و اشتراک‌گذاری موقعیت مکانی، مانند ارائه ETA یا گزارش موقعیت‌های یک وسیله نقلیه در ناوگان.

ارتباطات GPS و رادیوی سلولی هر دو به عملیات راه‌اندازی پرمصرف متکی هستند: GPS باید ماهواره‌ها را پیدا کند و رادیوهای سلولی باید با دکل‌ها مذاکره کرده و اتصال برقرار کنند. به همین دلایل، آنها اساساً در طول ناوبری به طور مداوم کار می‌کنند، حتی اگر رادیوهای سلولی به مدت 20 تا 30 ثانیه فعال بمانند تا هزینه‌های راه‌اندازی به حداقل برسد. سیستم عامل این تنظیمات را کنترل می‌کند که شما به راحتی نمی‌توانید آنها را در برنامه خود پیکربندی کنید.

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

مصرف برق برنامه خود را بهینه کنید

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

تغییر نرخ فریم

صفحه نمایش، آنچه را که نشان می‌دهد با فرکانسی به نام نرخ فریم به‌روزرسانی می‌کند. نرخ فریم معمولاً با واحد فریم در ثانیه (FPS) اندازه‌گیری می‌شود. از آنجا که رندر صفحه نمایش از CPU یا GPU زیادی استفاده می‌کند، می‌توانید نرخ فریم را برای صرفه‌جویی در مصرف برق کاهش دهید.

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

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

اگرچه شما نمی‌توانید نحوه تنظیم روشنایی صفحه نمایش دستگاه توسط کاربر نهایی یا مدت زمان روشن ماندن صفحه نمایش را کنترل کنید، اما می‌توانید گزینه‌ای برای راهنمایی ناوبری بدون نقشه ارائه دهید. این به کاربر نهایی اجازه می‌دهد تا آن گزینه را برای صرفه‌جویی در مصرف انرژی انتخاب کند. به عنوان مثال، اگر رانندگان مرتباً در یک محله کار می‌کنند، ممکن است به راهنمایی مبتنی بر نقشه به دفعات زیاد نیاز نداشته باشند. ناوبری بدون نقشه را می‌توان با تنظیم مقصد و شروع راهنمایی در SDK ناوبری فعال کرد، اما نقشه نمایش داده نمی‌شود.

برای پنهان کردن رابط کاربری ناوبری، NavigationView یا SupportNavigationFragment را اضافه نکنید، یا اگر قبلاً این کار را انجام داده‌اید، کدی را که آنها را اضافه می‌کند حذف کنید. کد زیر از برنامه آزمایشی اندروید Navigation SDK اصلاح شده است و استفاده از نظرات را برای حذف کدی که رابط کاربری ناوبری را اضافه می‌کند نشان می‌دهد:

//Obtain a reference to the NavigationFragment
//setContentView(R.layout.activity_nav_fragment);
//mNavFragment = (SupportNavigationFragment)   getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

کیت توسعه نرم‌افزار ناوبری (Navigation SDK) همچنان به به‌روزرسانی مکان‌های ثبت‌شده در جاده، زمان تقریبی رسیدن به مقصد (ETA) و مسافت باقی‌مانده از سفر ادامه خواهد داد و برنامه شما همچنان می‌تواند در تمام رویدادهایی که توسط SDK در حین حرکت راننده ایجاد می‌شود ، مشترک شود. این روش برای هر مورد استفاده‌ای مناسب نیست و البته در مواردی که راننده نیاز به دیدن نقشه و دنبال کردن راهنمایی‌های بصری دارد، توصیه خوبی نیست. تصاویر زیر مقایسه‌ای از تغییر نماهای نقشه در حین ناوبری فعال را نشان می‌دهند.

برنامه آزمایشی در حال اجرا با نمای نقشه قابل مشاهده است.
شکل 1. اپلیکیشن آزمایشی iOS مربوط به کیت توسعه نرم‌افزار ناوبری که نسخه آزمایشی Data Back را نشان می‌دهد
برنامه آزمایشی در حال اجرا است و نمای نقشه قابل مشاهده نیست.
شکل ۲. برنامه آزمایشی در حال اجرا بدون نمایش نقشه. توجه داشته باشید که زمان و مسافت باقی مانده و همچنین موقعیت مکانی ثبت شده در جاده هنوز در حال به‌روزرسانی هستند.

از یک سبک نقشه تیره استفاده کنید

برای کاهش میزان انرژی مورد نیاز برای رندر نقشه روی صفحه، می‌توانید طرح نقشه را با تم تیره تنظیم کنید.

کیت توسعه نرم‌افزار ناوبری (Navigation SDK) نقشه‌های خود را با استفاده از کیت توسعه نرم‌افزار گوگل مپس برای اندروید (Google Maps SDK for Android) رندر می‌کند، که شامل گزینه‌هایی برای استایل‌دهی به هرگونه نمای نقشه غیر ناوبری در برنامه شما است. نمای ناوبری همچنین از حالت تاریک اجباری پشتیبانی می‌کند. این ممکن است به دلیل تفاوت در نوع صفحه نمایش، بر همه دستگاه‌ها به یک شکل تأثیر نگذارد، اما در برخی موارد امکان صرفه‌جویی بالقوه در مصرف برق را فراهم می‌کند. یک مطالعه اخیر نشان داده است که میزان صرفه‌جویی در مصرف برق توسط حالت تاریک در برخی از صفحه نمایش‌ها به میزان روشنایی اولیه صفحه نمایش بستگی دارد. به عنوان مثال، حالت تاریک در صفحه نمایش‌هایی که روی روشنایی کامل تنظیم شده‌اند، نسبت به صفحه نمایش‌هایی که روشنایی آنها از قبل روی 30 تا 50 درصد حداکثر تنظیم شده است، انرژی بیشتری صرفه‌جویی می‌کند. این نکته هنگام استفاده از حالت تاریک برای برنامه‌های شما مهم است، زیرا صرفه‌جویی در مصرف برق به نحوه تنظیم روشنایی صفحه توسط کاربر نهایی بستگی دارد.

برای کسب اطلاعات بیشتر در مورد تغییر رابط کاربری ناوبری، به بخش «تغییر رابط کاربری ناوبری» مراجعه کنید.

تصویر صفحه نمایش از اجرای Navigation SDK روی آیفون ۱۵ پرو با سبک نقشه تیره.
شکل ۳. SDK ناوبری پیکربندی شده با سبک نقشه تیره

برای ایجاد یک سبک تیره برای نقشه خود، از یک شیء MapStyleOptions با یک سبک JSON که نشان دهنده انتخاب سبک نقشه تیره شماست، استفاده کنید. سبک‌های قدیمی JSON را می‌توان با استفاده از ویرایشگر سبک قدیمی در https://mapstyle.withgoogle.com/ ایجاد کرد.

تغییر فرکانس به‌روزرسانی موقعیت مکانی GPS

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

این چیزی نیست که بتوانید مستقیماً در Navigation SDK کنترل کنید، اما اگر برنامه اندروید شما به طور مستقل درخواست موقعیت مکانی می‌دهد، باید توصیه‌های مقاله «بهینه‌سازی موقعیت مکانی برای باتری» در مستندات توسعه‌دهندگان اندروید را در نظر بگیرید. همین توصیه در مورد استفاده از منابع موقعیت مکانی غیر GPS (همراه و وای‌فای) نیز صدق می‌کند.

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

کاربران برنامه شما ممکن است بخواهند بدانند که چگونه مصرف برق خود را بهینه کنند. برای کمک به آنها در کاهش مصرف برق در برنامه‌هایشان، به کاربران خود توصیه کنید موارد زیر را انجام دهند:

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

اندازه‌گیری مصرف برق

شما می‌توانید از ابزارهای حرفه‌ای برای اندازه‌گیری مصرف برق استفاده کنید، اما اغلب تهیه آنها دشوار یا پرهزینه است. برنامه‌ها و ابزارهای پروفایلینگ IDE مانند Power Profiler در اندروید استودیو و پنل Battery Usage در XCode Organizer مصرف برق را اندازه‌گیری می‌کنند، اما حذف تأثیر فرآیندهای پس‌زمینه یا تعیین یک مبنای عملکرد برای اندازه‌گیری می‌تواند دشوار باشد. در برخی موارد، محدودیت‌های دستگاه ممکن است مانع از دسترسی به داده‌های لازم شود.

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