เอกสารนี้อธิบายแนวทางปฏิบัติแนะนำเกี่ยวกับวิธีเพิ่มประสิทธิภาพการใช้พลังงาน ในแอปนำทางบนอุปกรณ์เคลื่อนที่ที่คุณสร้างโดยใช้ Navigation SDK ในขณะเดียวกัน ก็อธิบายถึงข้อแลกเปลี่ยนที่ต้องพิจารณาเมื่อใช้แนวทางปฏิบัติเหล่านี้ โดยเฉพาะอย่างยิ่ง เอกสารนี้ครอบคลุมหัวข้อต่อไปนี้
- แหล่งที่ใช้พลังงานสูง โดยจัดอันดับจากสูงสุดไปต่ำสุด
- กลยุทธ์ในการเพิ่มประสิทธิภาพการใช้พลังงานตามลำดับความสำคัญ โดยเริ่มจากอัตราเฟรม
- กลยุทธ์สำหรับผู้ใช้ปลายทางในการให้ความรู้แก่ผู้ใช้แอปเกี่ยวกับวิธีจัดการ การใช้งานอุปกรณ์ขณะนำทาง
เหตุใดจึงควรเพิ่มประสิทธิภาพแอปนำทาง
ผู้ใช้แอปของคุณอาจเรียกใช้คำแนะนำการนำทางเป็นระยะเวลานาน ทั้งนี้ขึ้นอยู่กับสถานการณ์ เช่น คนขับรถและพนักงานนำส่งอาจทำงานเป็นเวลานาน และทำงานที่ได้รับมอบหมายในพื้นที่ที่ไม่คุ้นเคย ในกรณีเช่นนี้ ผู้ใช้จะพึ่งพา คำแนะนำแบบเลี้ยวต่อเลี้ยวในแอปเป็นอย่างมาก ซึ่งจะส่งผลให้เกิดปัญหาทั่วไปบางอย่าง ดังนี้
- แบตเตอรี่หมดเร็วและความพร้อมใช้งานของที่ชาร์จ การใช้การนำทางอย่างหนักอาจ ทำให้แบตเตอรี่ของอุปกรณ์หมดเร็วกว่าที่คาดไว้ แม้ว่าผู้ใช้จำนวนมากจะ แก้ไขปัญหานี้ได้ด้วยการชาร์จอุปกรณ์ในรถยนต์ แต่ผู้ขับขี่รถจักรยานยนต์ ทำไม่ได้
- อุปกรณ์ลดประสิทธิภาพเนื่องจากความร้อน แม้แต่ผู้ใช้ที่ชาร์จอุปกรณ์อย่างต่อเนื่องก็อาจพบปัญหาได้ การใช้พลังงานสูงเป็นเวลานานอาจทำให้อุปกรณ์ร้อนขึ้น ส่งผลให้เกิดการควบคุมความร้อนและ ประสิทธิภาพลดลงในที่สุด
แอปนำทางแบบเลี้ยวต่อเลี้ยวต้องอาศัยฟีเจอร์ที่ใช้พลังงานสูง เช่น หน้าจอ GPS และการสื่อสารทางวิทยุกับเสาสัญญาณโทรศัพท์ ดังนั้นแนวทางปฏิบัติแนะนำคือการเพิ่มประสิทธิภาพ การใช้พลังงานของแอปบนอุปกรณ์เคลื่อนที่ นอกจากนี้ คุณควรพิจารณาความต้องการในการใช้พลังงานของกลุ่มเป้าหมาย เพื่อให้สามารถประนีประนอมระหว่างประสิทธิภาพกับการเพิ่มประสิทธิภาพการใช้พลังงานได้อย่างเหมาะสม
อะไรที่ใช้พลังงานมากที่สุด
ส่วนนี้จะแบ่งกิจกรรมในแอปที่เชื่อมโยงกับการใช้พลังงานสูง ออกเป็น 2 หมวดหมู่
- การแสดงผลหน้าจอ
- การอัปเดตตำแหน่ง
การแสดงผลหน้าจอ
โดยปกติแล้วการแสดงผลหน้าจอจะทำให้แอปนำทางบนอุปกรณ์เคลื่อนที่ ใช้พลังงานมากที่สุด ทุกครั้งที่อุปกรณ์วาดแผนที่และองค์ประกอบ UI อื่นๆ บนหน้าจอ อุปกรณ์จะอาศัยการประมวลผลของ GPU และ CPU ในทำนองเดียวกัน เมื่อผู้ใช้ออกจากหน้าจอนั้นเป็นเวลานาน ก็จะใช้พลังงานมากขึ้นด้วย
ในระดับหนึ่ง คุณอาจคาดการณ์ได้ว่าผู้ขับขี่หรือผู้ปั่นจักรยานที่ต้องพึ่งพาแผนที่ที่มองเห็นได้เพื่อนำทางจะมีการใช้พลังงานสูง โดยเฉพาะอย่างยิ่งหากใช้แอปอย่างต่อเนื่องเป็นเวลาหลายชั่วโมง ในสถานการณ์นี้ แอปจะแสดงผลบนหน้าจอในอัตราที่สูงขึ้นด้วย เนื่องจากแผนที่จะอัปเดตแบบเรียลไทม์ ในบางกรณี หน้าจออาจวาดใหม่เกือบตลอดเวลา โดยเฉพาะเมื่อผู้ใช้ ขับรถจากที่หนึ่งไปยังอีกที่หนึ่งโดยไม่หยุด
การอัปเดตตำแหน่ง
นอกจากการแสดงผลหน้าจอแล้ว กิจกรรมการนำทางอื่นๆ 2 อย่างยังใช้พลังงานของอุปกรณ์ด้วย
- การใช้งานเสาสัญญาณวิทยุและ GPS
- การอัปเดตและการแชร์ตำแหน่ง เช่น เพื่อระบุเวลาที่คาดว่าจะถึง (ETA) หรือเพื่อรายงาน ตำแหน่งของยานพาหนะในกลุ่มยานพาหนะ
การสื่อสารผ่าน GPS และสัญญาณโทรศัพท์มือถือต่างก็ต้องอาศัยการดำเนินการเริ่มต้นที่ใช้พลังงานมาก GPS ต้องค้นหาดาวเทียมและสัญญาณโทรศัพท์มือถือต้องเจรจากับเสาและ สร้างการเชื่อมต่อ ด้วยเหตุนี้ จึงทำให้การทำงานของเครื่องมือเหล่านี้เป็นไปอย่างต่อเนื่อง ในระหว่างการนำทาง แม้ว่าวิทยุเซลลูลาร์จะยังคงทำงานเป็นเวลา 20-30 วินาที เพื่อพยายามลดต้นทุนเริ่มต้นก็ตาม ระบบปฏิบัติการจะควบคุมการตั้งค่าเหล่านี้ ซึ่งคุณกำหนดค่าในแอปได้ยาก
สำหรับการอัปเดตตำแหน่ง การใช้พลังงานจะแตกต่างกันไปตามปัจจัยที่คาดเดาไม่ได้ ตัวอย่างเช่น ระยะห่างระหว่างอุปกรณ์กับสถานีฐานเซลลูลาร์ จะเป็นตัวกำหนดการใช้พลังงาน เนื่องจากอุปกรณ์จะใช้สัญญาณขั้นต่ำที่จำเป็น เพื่อนำทางต่อไปเพื่อหลีกเลี่ยงการเปลี่ยนเสา ดังนั้น อุปกรณ์ที่ นำทางในพื้นที่ที่มีการเชื่อมต่อไม่ดีจะใช้พลังงานมากกว่าอุปกรณ์ที่ อยู่ใกล้สถานีฐาน นอกจากนี้ แอปบางแอปอาจแชร์ข้อมูลอัปเดตตำแหน่ง กับบริการจัดการกลุ่มรถยนต์ส่วนกลาง จึงจำเป็นต้องสื่อสาร กับเซิร์ฟเวอร์เพื่อดำเนินการนี้
เพิ่มประสิทธิภาพการใช้พลังงานของแอป
ความท้าทายในการเพิ่มประสิทธิภาพการใช้พลังงานในแอปนำทางคือแอปเหล่านี้ ต้องพึ่งพาทรัพยากรที่ใช้พลังงานสูงมาก ซึ่งจำกัดตัวเลือกในการ ลดผลกระทบโดยไม่ต้องแลกกับการจำกัดการใช้งาน เช่น การจำกัดการใช้งาน หน้าจอ ส่วนนี้จะแสดงรายการแนวทางที่คุณสามารถใช้เมื่อเพิ่มประสิทธิภาพแอป โดยเรียงจากแนวทางที่ให้ผลลัพธ์มากที่สุดไปน้อยที่สุด
เปลี่ยนอัตราเฟรม
หน้าจอจะอัปเดตสิ่งที่แสดงด้วยความถี่ที่เรียกว่าอัตราเฟรม ซึ่งมักวัดเป็นเฟรมต่อวินาที (FPS) เนื่องจากการแสดงผลหน้าจอใช้การประมวลผล CPU และ GPU จำนวนมาก คุณจึงลดอัตราเฟรมเพื่อประหยัดพลังงานได้
เมื่อลดอัตราเฟรม การแสดงผลแผนที่และท่าทางสัมผัสแบบอินเทอร์แอกทีฟ (เช่น การเลื่อน การซูม หรือการหมุน) อาจดูไม่ราบรื่น หากต้องการรักษาสมดุลระหว่างประสิทธิภาพการใช้พลังงานกับประสบการณ์ของผู้ใช้ที่ตอบสนองได้ดี คุณสามารถคงอัตราเฟรมพื้นฐานไว้ต่ำและเพิ่มอัตราเฟรมแบบไดนามิกในระหว่างการโต้ตอบของผู้ใช้ที่ใช้งานอยู่
ในอุปกรณ์ iOS นั้น Maps SDK สำหรับ iOS จะแสดงพร็อพเพอร์ตี้ preferredFrameRate ในGMSMapView เพื่อควบคุมอัตราเฟรม ตารางต่อไปนี้แสดงค่า GMSFrameRate ที่คุณปรับได้
| ค่า Swift | ค่า Objective-C | คำอธิบาย |
|---|---|---|
.powerSave |
kGMSFrameRatePowerSave |
ใช้อัตราเฟรมขั้นต่ำเพื่อประหยัดการใช้งานแบตเตอรี่ |
.conservative |
kGMSFrameRateConservative |
ใช้ค่ามัธยฐานของอัตราเฟรมเพื่อให้การแสดงผลราบรื่นขึ้นและประหยัด รอบการประมวลผล |
.maximum |
kGMSFrameRateMaximum |
ใช้อัตราเฟรมสูงสุดสำหรับอุปกรณ์ (30 FPS สำหรับอุปกรณ์ระดับล่าง 60 FPS สำหรับอุปกรณ์ระดับสูง) |
ดูข้อมูลอ้างอิงได้ที่ GMSFrameRate ในเอกสารประกอบ Navigation SDK สำหรับ iOS
หากต้องการตั้งค่าอัตราเฟรมที่ต้องการโดยตรง ให้กำหนดค่าให้กับ
mapView.preferredFrameRate
Swift
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = .powerSave
Objective-C
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
ปรับอัตราเฟรมแบบไดนามิกระหว่างการใช้ท่าทางสัมผัส
อัตราเฟรมที่ต่ำอาจทำให้การโต้ตอบของผู้ใช้ (เช่น การเลื่อน การซูม และ การหมุน) ดูไม่ราบรื่น คุณสามารถรักษาการโต้ตอบให้ราบรื่นพร้อมทั้งประหยัดพลังงานได้โดย เพิ่มอัตราเฟรมชั่วคราวเป็นสูงสุดในระหว่างท่าทางของผู้ใช้ จากนั้น กลับไปใช้อัตราเฟรมที่ประหยัดพลังงานเมื่อท่าทางสิ้นสุดลง
โดยใช้โปรโตคอล GMSMapViewDelegate และใช้เมธอดต่อไปนี้
- ใน
mapView:willMove:ให้ตรวจสอบว่าผู้ใช้เป็นผู้เริ่มการเคลื่อนไหวของกล้องหรือไม่ ท่าทางสัมผัส หากgestureเป็นtrueให้ตั้งค่าpreferredFrameRateเป็นสูงสุด - ใน
mapView:idleAtCameraPosition:ให้คืนค่าpreferredFrameRateเป็น โหมดประหยัดพลังงานเมื่อกล้องไม่มีการใช้งาน
ตัวอย่างโค้ดต่อไปนี้แสดงวิธีปรับอัตราเฟรมแบบไดนามิกระหว่างท่าทางของผู้ใช้
Swift
class YourViewController: UIViewController {
@IBOutlet weak var mapView: GMSMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView.delegate = self
// Set a baseline low frame rate to conserve power:
mapView.preferredFrameRate = .powerSave
}
}
// MARK: - GMSMapViewDelegate
extension YourViewController: GMSMapViewDelegate {
func mapView(_ mapView: GMSMapView, willMove gesture: Bool) {
// Increase frame rate during user gestures for smooth interaction:
if gesture {
mapView.preferredFrameRate = .maximum
}
}
func mapView(_ mapView: GMSMapView, idleAt position: GMSCameraPosition) {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = .powerSave
}
}
Objective-C
@interface YourViewController : UIViewController <GMSMapViewDelegate>
@end
@implementation YourViewController {
GMSMapView *_mapView;
}
- (void)viewDidLoad {
[super viewDidLoad];
_mapView.delegate = self;
// Set a baseline low frame rate to conserve power:
_mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
#pragma mark - GMSMapViewDelegate
- (void)mapView:(GMSMapView *)mapView willMove:(BOOL)gesture {
// Increase frame rate during user gestures for smooth interaction:
if (gesture) {
mapView.preferredFrameRate = kGMSFrameRateMaximum;
}
}
- (void)mapView:(GMSMapView *)mapView
idleAtCameraPosition:(GMSCameraPosition *)position {
// Restore the power-saving frame rate when gestures finish:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
}
@end
นำทางโดยไม่มีแผนที่
แม้ว่าคุณจะควบคุมไม่ได้ว่าผู้ใช้ปลายทางจะตั้งค่าความสว่างของหน้าจออุปกรณ์อย่างไรหรือ จะเปิดหน้าจอไว้นานเท่าใด แต่คุณสามารถให้ตัวเลือกสำหรับคำแนะนำในการนำทางโดยไม่ต้องใช้แผนที่ได้ ซึ่งจะช่วยให้ผู้ใช้ปลายทางเลือกตัวเลือกดังกล่าวได้ เพื่อประหยัดพลังงาน เช่น หากคนขับทำงานในย่านเดียวกันเป็นประจำ ก็อาจไม่จำเป็นต้องใช้คำแนะนำตามแผนที่บ่อยนัก คุณเปิดใช้การนำทาง โดยไม่มีแผนที่ได้โดย ตั้งค่าปลายทางและเริ่มคำแนะนำ ใน Navigation SDK แต่ไม่แสดงแผนที่
เพิ่มบรรทัดโค้ดเพื่อซ่อน GMSMapView
mapView.isHidden = true
Navigation SDK จะอัปเดตตำแหน่งที่สแนปกับถนน เวลาถึงโดยประมาณ และ ระยะทางที่เหลือของการเดินทางต่อไป และแอปจะยังคงติดตามเหตุการณ์ที่ SDK สร้างขึ้น ได้ต่อไปเมื่อคนขับเดินทางต่อ วิธีนี้ไม่เหมาะกับทุกกรณีการใช้งาน และไม่ควรใช้ในกรณีที่คนขับจำเป็นต้องดูแผนที่และทำตามคำแนะนำด้วยภาพ ภาพหน้าจอต่อไปนี้แสดงการเปรียบเทียบข้อมูลคู่กันของการสลับมุมมองแผนที่ระหว่างการนำทางที่ใช้งานอยู่
|
|
ใช้รูปแบบแผนที่มืด
ลองจัดรูปแบบแผนที่ให้ใช้ธีมมืดเพื่อลดปริมาณพลังงาน ที่ต้องใช้ในการแสดงผลแผนที่บนหน้าจอ
Navigation SDK แสดงผลแผนที่โดยใช้ Google Maps SDK สำหรับ iOS ซึ่งมีตัวเลือกสำหรับ การจัดรูปแบบมุมมองแผนที่ที่ไม่ใช่การนำทางในแอปของคุณ มุมมองการนำทางยัง รองรับการบังคับใช้โหมดมืดด้วย การตั้งค่านี้อาจไม่ส่งผลต่ออุปกรณ์ทุกเครื่องในลักษณะเดียวกันเนื่องจากความแตกต่างของประเภทหน้าจอ แต่จะช่วยให้ประหยัดพลังงานได้ในบางกรณี การศึกษาล่าสุดพบว่าปริมาณแบตเตอรี่ที่ประหยัดได้จากโหมดมืดในบางหน้าจอจะขึ้นอยู่กับความสว่างของหน้าจอตั้งแต่แรก เช่น โหมดมืดจะประหยัดพลังงานได้มากกว่าในหน้าจอที่ตั้งค่าความสว่างไว้เต็มที่ เมื่อเทียบกับหน้าจอที่ปรับความสว่างไว้ที่ 30-50% ของ ความสว่างสูงสุดอยู่แล้ว คุณควรพิจารณาเรื่องนี้เมื่อใช้โหมดมืดสำหรับแอป เนื่องจากการประหยัดพลังงานจะขึ้นอยู่กับวิธีที่ผู้ใช้ปลายทางตั้งค่าความสว่างของหน้าจอ
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไข UI การนำทางได้ที่ แก้ไข UI การนำทาง
การจัดรูปแบบแผนที่บนระบบคลาวด์ต้องใช้รหัสแผนที่ที่แสดงถึงการกำหนดค่าแผนที่ฝั่งเซิร์ฟเวอร์ซึ่งสร้างขึ้นในโปรเจ็กต์ Google Console ดูข้อมูลเพิ่มเติมเกี่ยวกับการสร้างรหัสแผนที่ได้ที่เอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์เกี่ยวกับรหัสแผนที่ ดูรายละเอียดเพิ่มเติมเกี่ยวกับการออกแบบและการติดตั้งใช้งาน รูปแบบแผนที่ที่อิงตามระบบคลาวด์ได้ในเอกสารประกอบสำหรับนักพัฒนาซอฟต์แวร์เกี่ยวกับการสร้างและการจัดการ รูปแบบแผนที่ที่อิงตามระบบคลาวด์
เปลี่ยนความถี่ในการอัปเดตตำแหน่ง GPS
เมื่อพิจารณาการใช้พลังงานจากการอัปเดตตำแหน่งที่ส่งจากอุปกรณ์ ให้มุ่งเน้น ความถี่ของการอัปเดตตำแหน่งมากกว่าปริมาณข้อมูลที่ส่งในการ ส่ง
คุณไม่สามารถควบคุมสิ่งนี้ได้โดยตรงใน Navigation SDK คำแนะนำเดียวกันนี้ใช้ได้กับการใช้แหล่งที่มาของตำแหน่งที่ไม่ใช่ GPS (เซลล์และ Wi-Fi)
ให้ความรู้แก่ผู้ใช้
ผู้ใช้แอปของคุณอาจต้องการทราบวิธีเพิ่มประสิทธิภาพการใช้พลังงาน หากต้องการช่วยให้ผู้ใช้ลดการใช้พลังงานในแอป โปรดแนะนำให้ผู้ใช้ทำดังนี้
- ล็อกโทรศัพท์
- ใส่แอปการนำทางไว้เบื้องหลัง
- ใช้การนำทางโดยไม่มีแผนที่หากเป็นไปได้
- ลดความสว่างของหน้าจอโดยใช้โหมดมืดสำหรับหน้าจอ OLED และ AMOLED หรือโดยการเปิดใช้การปรับความสว่างอัตโนมัติ
- รักษาอุณหภูมิของอุปกรณ์ให้เย็น
- เชื่อมต่อ Wi-Fi ในรถ (หากมี)
วัดการใช้พลังงาน
คุณสามารถใช้เครื่องมือระดับมืออาชีพเพื่อวัดการใช้พลังงานได้ แต่เครื่องมือเหล่านี้มักจะหายากหรือมีราคาสูง เครื่องมือสร้างโปรไฟล์แอปและ IDE เช่น Power Profiler ใน Android Studio และแผงการใช้งานแบตเตอรี่ใน XCode Organizer จะวัดการใช้พลังงาน แต่การนำผลกระทบของกระบวนการในเบื้องหลังออกหรือการตั้งค่าพื้นฐานด้านประสิทธิภาพเพื่อใช้วัดเทียบอาจทำได้ยาก ในบางกรณี ข้อจำกัดของอุปกรณ์อาจป้องกันไม่ให้คุณเข้าถึงข้อมูลที่จำเป็น
คุณสามารถใช้ฮาร์ดแวร์ตรวจสอบการใช้พลังงานสำหรับวัตถุประสงค์พิเศษและแก้ไข การกำหนดค่าการเชื่อมต่อแบตเตอรี่ รวมถึงมีผลิตภัณฑ์และบริการเชิงพาณิชย์ ที่จะช่วยคุณทำสิ่งนี้ โปรดทราบว่าการดัดแปลงอุปกรณ์ในลักษณะนี้อาจทำให้การรับประกันของอุปกรณ์เป็นโมฆะ