אופטימיזציה של צריכת החשמל לאפליקציה

במסמך הזה מפורטות שיטות מומלצות לאופטימיזציה של צריכת החשמל באפליקציית ניווט לנייד שאתם מפתחים באמצעות ה-Navigation SDK. בנוסף, מתוארים בו היתרונות והחסרונות שצריך להביא בחשבון כשמשתמשים בשיטות האלה. באופן ספציפי, המסמך הזה עוסק בנושאים הבאים:

  • מקורות לצריכת חשמל גבוהה, מדורגים מהגבוה לנמוך.
  • אסטרטגיות לאופטימיזציה של צריכת החשמל, לפי סדר חשיבות, החל מקצב הפריימים.
  • אסטרטגיות למשתמשי קצה כדי ללמד את משתמשי האפליקציה איך לנהל את השימוש במכשיר בזמן הניווט.

למה כדאי לבצע אופטימיזציה של אפליקציית הניווט?

בהתאם למצב, יכול להיות שהמשתמשים באפליקציה יפעילו את הנחיות הניווט לפרקי זמן ארוכים. לדוגמה, נהגים ושליחים יכולים לעבוד שעות ארוכות ולבצע משימות באזורים לא מוכרים. במקרים כאלה, הם מסתמכים מאוד על ההנחיות המפורטות באפליקציה. זה גורם לכמה בעיות אופייניות:

  • התרוקנות הסוללה וזמינות המטענים. שימוש אינטנסיבי בניווט עלול לגרום לסוללה של המכשיר להתרוקן מהר מהצפוי. משתמשים רבים יכולים לפתור את הבעיה הזו על ידי טעינת המכשיר ברכב, אבל נהגים של רכב דו-גלגלי לא יכולים לעשות זאת.
  • האטת המכשיר בגלל התחממות. גם משתמשים שמטעינים את המכשיר באופן קבוע עלולים להיתקל בבעיות. צריכת חשמל גבוהה לאורך זמן עלולה לגרום למכשיר להתחמם, וכתוצאה מכך לוויסות תרמי ולירידה בביצועים.

אפליקציות לניווט מפורט מסתמכות על תכונות שצורכות הרבה אנרגיה, כמו המסך, ה-GPS ותקשורת רדיו עם מגדלי תקשורת, ולכן מומלץ לבצע אופטימיזציה של צריכת האנרגיה של האפליקציה לנייד. בנוסף, כדאי להביא בחשבון את צורכי צריכת האנרגיה של קהל היעד כדי שתוכלו לבצע את הפשרות המתאימות בין הביצועים לבין אופטימיזציה של צריכת האנרגיה.

מה צורך הכי הרבה חשמל?

הפעילויות באפליקציה שקשורות לצריכת חשמל גבוהה מחולקות לשתי קטגוריות:

  • רינדור המסך
  • עדכוני מיקום

רינדור המסך

עיבוד המסך בדרך כלל גורם לצריכת החשמל הגבוהה ביותר באפליקציות ניווט לנייד. בכל פעם שהמכשיר מציג מפה ורכיבים בממשק המשתמש במסך, הוא מסתמך על עיבוד של ה-GPU והמעבד (CPU). באופן דומה, כשהמשתמש משאיר את המסך דולק לפרקי זמן ארוכים, גם זה צורך יותר אנרגיה.

במידה מסוימת, אפשר לצפות לצריכת חשמל גבוהה מנהגים או מרוכבים שמסתמכים על מפה גלויה כדי לנווט, במיוחד אם הם משתמשים באפליקציה ברציפות במשך שעות רבות. במצב כזה, האפליקציה גם מבצעת עיבוד (rendering) בקצב גבוה יותר במסך, כי המפה מתעדכנת בזמן אמת. במקרים מסוימים, המסך יכול להשתנות כמעט ברציפות, במיוחד כשהמשתמש נוסע ממקום למקום בלי לעצור.

עדכוני מיקום

בנוסף לעיבוד המסך, שתי פעילויות ניווט אחרות צורכות את הסוללה של המכשיר:

  • שימוש במגדל תקשורת וב-GPS
  • עדכונים לגבי מיקום ושיתוף מיקום, למשל כדי לספק זמן הגעה משוער או לדווח על מיקומים של כלי רכב בצי.

גם תקשורת GPS וגם תקשורת רדיו סלולרית מסתמכות על פעולות הפעלה שצורכות הרבה אנרגיה: ה-GPS צריך למצוא לוויינים והרדיו הסלולרי צריך לנהל משא ומתן עם מגדלים וליצור חיבור. לכן, הן פועלות באופן רציף במהלך הניווט, למרות שהרדיו הסלולרי נשאר פעיל למשך 20-30 שניות כדי לנסות למזער את עלויות ההפעלה. מערכת ההפעלה שולטת בהגדרות האלה, ואי אפשר לשנות אותן בקלות באפליקציה.

צריכת החשמל של עדכון לגבי מיקום משתנה בהתאם לגורמים בלתי צפויים. לדוגמה, המרחק בין המכשיר לתחנת הבסיס הסלולרית קובע את צריכת החשמל, כי המכשיר ישתמש באות המינימלי שנדרש כדי להמשיך בניווט, כדי להימנע מהחלפת אנטנות. לכן, מכשיר שמנווט באזור עם קישוריות חלשה יצרוך יותר חשמל ממכשיר שנמצא קרוב לתחנת בסיס. בנוסף, יכול להיות שאפליקציות מסוימות ישתפו עדכוני מיקום עם שירות מרכזי לניהול צי רכבים, ולכן יצטרכו לתקשר עם שרת כדי לעשות את זה.

אופטימיזציה של צריכת החשמל באפליקציה

האתגר באופטימיזציה של צריכת החשמל באפליקציות ניווט הוא שהאפליקציות האלה מסתמכות במידה רבה על משאבים שצורכים הרבה חשמל, מה שמגביל את האפשרויות לצמצם את ההשפעה בלי להתפשר על דברים כמו הגבלת השימוש במסך. בקטע הזה מפורטות גישות שונות לאופטימיזציה של האפליקציה, מהגישה הכי משפיעה ועד לגישה הכי פחות משפיעה.

שינוי קצב הפריימים

המסך מעדכן את מה שמוצג בו בתדירות שנקראת קצב פריימים, שבדרך כלל נמדדת בפריימים לשנייה (FPS). העיבוד של המסך צורך הרבה משאבים מהמעבד (CPU) ומהמעבד הגרפי (GPU), ולכן אפשר להפחית את קצב הפריימים כדי לחסוך בחשמל.

כשמפחיתים את קצב הפריימים, יכול להיות שהעיבוד של המפה והתנועות האינטראקטיביות (כמו הזזה, שינוי מרחק התצוגה או סיבוב) ייראו פחות חלקים. כדי לאזן בין יעילות צריכת החשמל לבין חוויית משתמש רספונסיבית, אתם יכולים לשמור על קצב פריימים בסיסי נמוך ולהגביר אותו באופן דינמי במהלך אינטראקציות פעילות של המשתמשים.

כדי לקבל מידע נוסף על שינוי קצב הפריימים, עיינו בקטע קצב פריימים במאמרי העזרה למפתחים ב-Android Media Dev Center.

התאמה אוטומטית של קצב הפריימים

החל מגרסה 7.8.0, ה-Navigation SDK משנה באופן אוטומטי את קצב הפריימים של המפה במהלך ניווט פעיל כדי לשפר את הביצועים ולהפחית את צריכת הסוללה. כשהמכשיר נכנס למצב חיסכון בסוללה, קצב הפריימים של המפה יורד ל-10 FPS, ומתאפס ל-60 FPS כשהניווט מסתיים או כשמצב החיסכון בסוללה מושבת.

אתם לא יכולים לשלוט בבהירות המסך של משתמשי הקצה או במשך הזמן שהמסך שלהם פועל, אבל אתם יכולים לספק אפשרות להנחיות ניווט בלי מפה. כך משתמש הקצה יוכל לבחור באפשרות הזו כדי לחסוך בחשמל. לדוגמה, אם הנהגים עובדים באופן קבוע באותה שכונה, יכול להיות שהם לא יצטרכו הנחיות מבוססות-מפה בתדירות גבוהה. כדי להפעיל ניווט בלי מפה, צריך להגדיר יעד ולהתחיל את ההנחיה ב-Navigation SDK, אבל לא להציג מפה.

כדי להסתיר את ממשק המשתמש של הניווט, אל תוסיפו NavigationView או SupportNavigationFragment. אם כבר הוספתם אותם, הסירו את הקוד שמוסיף אותם. הקוד הבא הוא גרסה שונה של אפליקציית ההדגמה ל-Android של Navigation SDK. הוא מראה איך להשתמש בהערות כדי להסיר את הקוד שמוסיף את ממשק המשתמש של הניווט:

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

‫Navigation SDK ימשיך לעדכן את המיקומים שמוצמדים לכביש, את זמן ההגעה המשוער ואת המרחק שנותר לנסיעה, והאפליקציה עדיין תוכל להירשם לכל האירועים שמועלים על ידי ה-SDK בזמן שהנהג ממשיך בנסיעה. זה לא מתאים לכל תרחיש שימוש, וזו לא עצה טובה במקרים שבהם הנהג צריך לראות את המפה ולעקוב אחרי ההנחיות החזותיות. צילומי המסך הבאים ממחישים השוואה בין תצוגות המפה השונות במהלך ניווט פעיל.

אפליקציית הדגמה שפועלת עם תצוגת המפה.
איור 1.אפליקציית ההדגמה של Navigation SDK ל-iOS שמציגה את ההדגמה של Data Back
אפליקציית ההדגמה פועלת בלי תצוגת מפה.
איור 2.אפליקציית הדגמה פועלת בלי תצוגת מפה. שימו לב שהזמן והמרחק שנותרו, וגם המיקום שמוצמד לכביש, עדיין מתעדכנים.

שימוש בסגנון מפה כהה

כדאי לעצב את המפה בעיצוב כהה כדי לצמצם את כמות האנרגיה שנדרשת כדי לעבד את המפה במסך.

‫Navigation SDK מעבד את המפות באמצעות Google Maps SDK ל-Android, שכולל אפשרויות לעיצוב של כל תצוגות המפה באפליקציה שלא קשורות לניווט. תצוגת הניווט תומכת גם בהפעלה ידנית של מצב כהה. יכול להיות שההגדרה הזו לא תשפיע על כל המכשירים באותו אופן בגלל הבדלים בסוג המסך, אבל במקרים מסוימים היא מאפשרת חיסכון פוטנציאלי בחשמל. במחקר שנערך לאחרונה נמצא שכמות האנרגיה שנחסכת באמצעות מצב כהה במסכים מסוימים תלויה במידת הבהירות של המסך בתחילת השימוש. לדוגמה, המצב הכהה חוסך יותר אנרגיה במסכים שמוגדרים לבהירות מלאה מאשר במסכים שהבהירות שלהם כבר מותאמת ל-30-50% מהמקסימום. חשוב להביא את זה בחשבון כשמשתמשים במצב כהה באפליקציות, כי החיסכון באנרגיה יהיה יחסי לאופן שבו משתמש הקצה מגדיר את בהירות המסך.

מידע נוסף על שינוי ממשק המשתמש של ה-Navigation זמין במאמר שינוי ממשק המשתמש של ה-Navigation.

‫Navigation SDK פועל באייפון 15 Pro עם סגנון מפה כהה.
איור 3.Navigation SDK מוגדר עם סגנון מפה כהה

כדי ליצור סגנון כהה למפה, משתמשים באובייקט MapStyleOptions עם סגנון JSON שמייצג את סגנון המפה הכהה שבחרתם. אפשר ליצור סגנונות JSON מדור קודם באמצעות הכלי לעריכת סגנונות מדור קודם בכתובת https://mapstyle.withgoogle.com/.

שינוי תדירות העדכון של מיקום ה-GPS

כשבוחנים את צריכת החשמל של עדכוני המיקום שנשלחים מהמכשיר, צריך להתמקד יותר בתדירות של עדכוני המיקום ולא בכמות הנתונים שנשלחים בשידור.

אין לכם שליטה ישירה על זה ב-Navigation SDK, אבל אם אפליקציית Android שלכם מבקשת מיקום באופן עצמאי, כדאי לפעול לפי העצות במאמר אופטימיזציה של המיקום לחיסכון בסוללה במאמרי העזרה למפתחים של Android. אותה עצה רלוונטית גם לשימוש במקורות מיקום שאינם GPS (רשת סלולרית ו-Wi-Fi).

הסברים למשתמשים

יכול להיות שהמשתמשים באפליקציה שלכם ירצו לדעת איך לבצע אופטימיזציה של צריכת החשמל. כדי לעזור להם להפחית את צריכת החשמל באפליקציות, כדאי להמליץ למשתמשים לבצע את הפעולות הבאות:

  • נועלים את הטלפון
  • מעבירים את אפליקציית הניווט לרקע
  • אם אפשר, השתמשו בניווט בלי מפה
  • להפחית את בהירות המסך, באמצעות מצב כהה במסכי OLED ו-AMOLED או באמצעות הפעלת בהירות אוטומטית.
  • שומרים על המכשיר קריר
  • מתחברים ל-Wi-Fi ברכב, אם יש כזה
במאמר איך להאריך את חיי הסוללה ככל האפשר במכשיר Android יש עצות למשתמשי קצה לגבי הארכת חיי הסוללה ב-Android. חשוב לזכור שההמלצות האלה כוללות פעולות שעלולות לפגוע ביעילות של אפליקציית ניווט, כפי שמוסבר בקטע אופטימיזציה של צריכת החשמל באפליקציה במדריך הזה.

מדידת צריכת החשמל

אפשר להשתמש בכלים מקצועיים כדי למדוד את צריכת החשמל, אבל לעיתים קרובות קשה או יקר להשיג אותם. אפליקציות וכלים ליצירת פרופילים של סביבות פיתוח משולבות (IDE), כמו Power Profiler ב-Android Studio והחלונית Battery Usage ב-XCode Organizer, מודדים את צריכת החשמל, אבל יכול להיות שיהיה קשה להסיר את ההשפעה של תהליכים ברקע או להגדיר בסיס להשוואה של הביצועים. במקרים מסוימים, הגבלות במכשיר עלולות למנוע גישה לנתונים הנדרשים.

אתם יכולים להשתמש בחומרה ייעודית למעקב אחרי צריכת החשמל ולשנות את הגדרות החיבור של הסוללה. יש מוצרים ושירותים מסחריים שיכולים לעזור לכם לעשות את זה. חשוב לזכור ששינוי מכשירים בדרך הזו עלול לבטל את האחריות על המכשיר.