بهینه‌سازی مصرف انرژی برای برنامه

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

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

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

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

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

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

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

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

  • پرداز صفحه
  • به‌روزرسانی‌های موقعیت م

پرداز صفحه

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

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

به‌روزرسانی‌های موقعیت م

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

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

ارتباطات رادیویی سلولی و GPS هر دو به عملیات راه‌اندازی پرمصرف متکی هستند: GPS باید ماهواره‌ها را پیدا کند و رادیوهای سلولی باید با برج‌ها مذاکره کنند و اتصال برقرار کنند. به این دلایل، آن‌ها اساساً به‌طور مداوم درطول پیمایش اجرا می‌شوند، هرچند رادیوهای سلولی برای ۲۰ تا ۳۰ ثانیه فعال می‌مانند تا هزینه‌های راه‌اندازی را به حداقل برسانند. سیستم‌عامل این تنظیمات را کنترل می‌کند و نمی‌توانید به‌راحتی آن را در برنامه‌تان پیکربندی کنید.

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

مصرف برق برنامه‌تان را بهینه کنید

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

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

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

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

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

تنظیم خودکار نرخ فریم

از نسخه ۷.۸.۰، «کیت توسعه نرم‌افزار ناوبری» به‌طور خودکار نرخ فریم نقشه را درطول ناوبری فعال تنظیم می‌کند تا عملکرد را بهبود بخشد و مصرف باتری را کاهش دهد. وقتی دستگاه وارد حالت ذخیره انرژی می‌شود، نرخ فریم نقشه به ۱۰ فریم در ثانیه کاهش می‌یابد و وقتی ناوبری پایان می‌یابد یا حالت ذخیره انرژی غیرفعال می‌شود، به ۶۰ فریم در ثانیه بازنشانی می‌شود.

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

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

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

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

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

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

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

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

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

کیت توسعه نرم‌افزار ناوبری درحال اجرا در iPhone 15 Pro با سبک نقشه تیره.
شکل ۳.کیت توسعه نرم‌افزار ناوبری پیکربندی‌شده با سبک نقشه تیره

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

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

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

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

آموزش دادن کاربران

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

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

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

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

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