Bu belgede, Navigation SDK'yı kullanarak oluşturduğunuz bir mobil navigasyon uygulamasında güç tüketimini nasıl optimize edebileceğinize dair en iyi uygulamalar açıklanmaktadır. Aynı zamanda, bu uygulamaları kullanırken göz önünde bulundurulması gereken ödünleri de açıklar. Bu belgede özellikle aşağıdaki konular ele alınmaktadır:
- Yüksek güç tüketimi kaynakları, en yüksekten en düşüğe doğru sıralanır.
- Önem sırasına göre, kare hızından başlayarak güç tüketimini optimize etme stratejileri.
- Uygulama kullanıcılarını, gezinirken cihaz kullanımını yönetme konusunda eğitmek için son kullanıcı stratejileri.
Neden navigasyon uygulamanızı optimize etmelisiniz?
Uygulama kullanıcılarınız, durumlarına bağlı olarak uzun süre boyunca navigasyon kılavuzunu çalıştırabilir. Örneğin, sürücüler ve kuryeler uzun saatler boyunca çalışarak bilmedikleri bölgelerde görevleri tamamlayabilir. Bu durumlarda, uygulama içi adım adım yol tarifine büyük ölçüde güvenilir. Bu durum, bazı tipik sorunlara yol açar:
- Pilin hızlı tükenmesi ve şarj cihazlarının kullanılabilirliği. Yoğun navigasyon kullanımı, cihaz pillerinin beklenenden daha hızlı tükenmesine neden olabilir. Birçok kullanıcı bu sorunu cihazını araçta şarj ederek çözebilirken iki tekerlekli araç sürücüleri bunu yapamaz.
- Cihaz, ısındığı için performansını düşürüyor. Cihazlarını sürekli şarj eden kullanıcılar bile sorun yaşayabilir. Uzun süre boyunca yüksek güç tüketimi, cihazın ısınmasına neden olabilir. Bu durum, termal kısıtlamaya ve ardından performans kaybına yol açar.
Dönüş yönü navigasyon uygulamaları ekran, GPS ve baz istasyonlarıyla radyo iletişimi gibi güç gerektiren özelliklere dayanır. Bu nedenle, mobil uygulamanızın güç kullanımını optimize etmek en iyi uygulamalardan biridir. Ayrıca, performans ile güç tüketimini optimize etme arasında uygun dengeyi kurabilmek için hedef kitlenizin güç kullanımına yönelik ihtiyaçlarını da göz önünde bulundurmanız gerekir.
En çok gücü ne tüketiyor?
Bu bölümde, yüksek güç tüketimiyle ilişkili uygulama içi etkinlikler iki kategoriye ayrılır:
- Ekran oluşturma
- Konum güncellemeleri
Ekran oluşturma
Ekran oluşturma genellikle mobil gezinme uygulamalarında en yüksek güç tüketimine neden olur. Cihaz, ekranda her harita ve diğer kullanıcı arayüzü öğelerini çizdiğinde GPU ve CPU işlemeye bağlıdır. Benzer şekilde, kullanıcı ekranı uzun süre açık bıraktığında da daha fazla güç tüketilir.
Özellikle uygulamayı uzun saatler boyunca sürekli olarak kullanan sürücülerin veya yolcuların, gezinmek için görünür bir haritaya güvenmeleri durumunda bir ölçüde yüksek güç tüketimi bekleyebilirsiniz. Bu senaryoda, harita anlık olarak güncellendiği için uygulama ekranda daha yüksek oranda oluşturma işlemi de gerçekleştirir. Bazı durumlarda, özellikle kullanıcı durmadan bir konumdan diğerine giderken ekran neredeyse sürekli olarak yeniden çizilebilir.
Konum güncellemeleri
Ekran oluşturmanın yanı sıra diğer iki navigasyon etkinliği de cihaz gücü tüketir:
- Radyo baz istasyonu ve GPS kullanımı
- Konum güncellemeleri ve paylaşımı (ör. TVS sağlamak veya filodaki bir aracın konumunu bildirmek için)
Hem GPS hem de telefon radyosu iletişimi, güç tüketen başlatma işlemlerine dayanır: GPS'in uyduları bulması, telefon radyolarının ise kulelerle görüşüp bağlantı kurması gerekir. Bu nedenle, başlatma maliyetlerini en aza indirmek için hücresel radyolar 20-30 saniye boyunca etkin kalsa da gezinme sırasında esasen sürekli olarak çalışırlar. Bu ayarlar, uygulamanızda kolayca yapılandıramayacağınız işletim sistemi tarafından kontrol edilir.
Konum güncellemelerinde güç kullanımı, tahmin edilemeyen faktörlere göre değişir. Örneğin, cihaz ile hücresel baz istasyonu arasındaki mesafe, güç kullanımını belirler. Cihaz, kuleler arasında geçiş yapmamak için navigasyona devam etmek üzere gereken minimum sinyali kullanır. Bu nedenle, bağlantının zayıf olduğu bir alanda gezinen cihaz, baz istasyonuna yakın olan bir cihaza göre daha fazla güç kullanır. Ayrıca bazı uygulamalar, konum güncellemelerini merkezi bir filo yönetimi hizmetiyle paylaşabilir ve bu nedenle, bunu gerçekleştirmek için bir sunucuyla iletişim kurması gerekir.
Uygulamanızın güç kullanımını optimize etme
Navigasyon uygulamalarında güç kullanımını optimize etmenin zorluğu, bu uygulamaların güç tüketen kaynaklara büyük ölçüde bağlı olmasıdır. Bu durum, ekran kullanımını kısıtlama gibi ödünler vermeden etkiyi azaltma seçeneklerinizi sınırlar. Bu bölümde, uygulamanızı optimize ederken kullanabileceğiniz yaklaşımlar en etkiliden en az etkiliye doğru sıralanmıştır.
Kare hızını değiştirme
Ekran, gösterdiği içeriği kare hızı olarak bilinen bir sıklıkta günceller. Bu hız genellikle saniyedeki kare sayısı (FPS) olarak ölçülür. Ekran oluşturma işlemi önemli ölçüde CPU ve GPU işleme gücü kullandığından, güç tasarrufu yapmak için kare hızını azaltabilirsiniz.
Kare hızını düşürdüğünüzde harita oluşturma ve etkileşimli hareketler (ör. kaydırma, yakınlaştırma veya döndürme) daha az akıcı görünebilir. Güç verimliliği ile duyarlı bir kullanıcı deneyimi arasında denge kurmak için temel kare hızını düşük tutabilir ve etkin kullanıcı etkileşimleri sırasında dinamik olarak artırabilirsiniz.
iOS cihazlarda, iOS için Haritalar SDK'sı, kare hızını kontrol etmek içinGMSMapView üzerinde preferredFrameRate özelliğini gösterir. Aşağıdaki tabloda, ayarlayabileceğiniz GMSFrameRate değerleri gösterilmektedir:
| Swift değeri | Objective-C değeri | Açıklama |
|---|---|---|
.powerSave |
kGMSFrameRatePowerSave |
Pil kullanımını azaltmak için minimum kare hızını kullanın. |
.conservative |
kGMSFrameRateConservative |
Daha sorunsuz bir oluşturma sağlamak ve işlem döngülerini korumak için ortalama bir kare hızı kullanın. |
.maximum |
kGMSFrameRateMaximum |
Cihaz için maksimum kare hızını kullanın (düşük kaliteli cihazlar için 30 FPS, yüksek kaliteli cihazlar için 60 FPS). |
Referans için iOS için Navigasyon SDK'sı belgelerindeki GMSFrameRate konusuna bakın.
Tercih edilen kare hızını doğrudan ayarlamak için mapView.preferredFrameRate öğesine bir değer atayın:
Swift
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = .powerSave
Objective-C
// Reduce the frame rate to conserve battery:
mapView.preferredFrameRate = kGMSFrameRatePowerSave;
Hareketler sırasında kare hızını dinamik olarak ayarlama
Daha düşük kare hızları, kullanıcı etkileşimlerinin (ör. kaydırma, yakınlaştırma ve döndürme) kesintili olmasına neden olabilir. Kullanıcı hareketleri sırasında kare hızını geçici olarak maksimuma çıkarıp hareket sona erdiğinde güç tasarrufu sağlayan bir kare hızına dönerek etkileşimleri sorunsuz tutarken güç tasarrufu sağlayabilirsiniz.
Bunun için GMSMapViewDelegate protokolünü benimseyin ve aşağıdaki yöntemleri uygulayın:
mapView:willMove:bölümünde, kamera hareketinin kullanıcı hareketiyle başlatılıp başlatılmadığını kontrol edin.gesture,trueisepreferredFrameRatedeğerini maksimuma ayarlayın.mapView:idleAtCameraPosition:bölümünde, kamera boşta kaldığındapreferredFrameRateöğesini güç tasarrufu moduna geri yükleyin.
Aşağıdaki kod örneğinde, kullanıcı hareketleri sırasında kare hızının nasıl dinamik olarak ayarlanacağı gösterilmektedir:
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
Harita olmadan gezinme
Son kullanıcının cihaz ekran parlaklığını nasıl ayarladığını veya ekranını ne kadar süre açık tuttuğunu kontrol edemezsiniz ancak harita olmadan gezinme talimatları için bir seçenek sunabilirsiniz. Bu sayede son kullanıcı, güç tasarrufu yapmak için bu seçeneği belirleyebilir. Örneğin, sürücüler düzenli olarak aynı mahallede çalışıyorsa harita tabanlı rehberliğe o kadar sık ihtiyaç duymayabilir. Haritasız navigasyon, Navigation SDK'da hedef belirleyip rotayı başlatarak etkinleştirilebilir ancak harita gösterilmez.
GMSMapView'i gizlemek için bir kod satırı ekleyin:
mapView.isHidden = true
Navigation SDK, yola yerleştirilmiş konumları, TVS'yi ve yolculukta kalan mesafeyi güncellemeye devam eder. Sürücü ilerledikçe uygulamanız, SDK tarafından oluşturulan tüm etkinliklere abone olmaya devam edebilir. Bu yöntem her kullanım alanı için uygun değildir ve sürücünün haritayı görmesi ve görsel talimatları takip etmesi gereken durumlarda iyi bir tavsiye değildir. Aşağıdaki ekran görüntülerinde, etkin navigasyon sırasında harita görünümlerini değiştirmenin yan yana karşılaştırması gösterilmektedir.
|
|
Koyu harita stili kullanma
Haritanın ekranda oluşturulması için gereken enerji miktarını azaltmak amacıyla haritayı koyu tema kullanacak şekilde stilize etmeyi düşünebilirsiniz.
Navigation SDK, haritalarını iOS için Google Haritalar SDK'sı ile oluşturur. Bu SDK, uygulamanızdaki navigasyon dışı harita görünümlerini stilize etme seçenekleri içerir. Navigasyon görünümü, koyu modun zorunlu kılınmasını da destekler. Ekran türündeki farklılıklar nedeniyle bu ayar her cihazı aynı şekilde etkilemeyebilir ancak bazı durumlarda güç tasarrufu sağlayabilir. Yakın tarihli bir çalışmada, bazı ekranlarda karanlık modun sağladığı güç tasarrufu miktarının, ekranın başlangıçtaki parlaklığına bağlı olduğu tespit edildi. Örneğin, koyu mod, tam parlaklığa ayarlanmış ekranlarda, parlaklığı maksimumun% 30-50'sine ayarlanmış ekranlara kıyasla daha fazla güç tasarrufu sağlar. Uygulamalarınızda koyu modu kullanırken bunu göz önünde bulundurmanız önemlidir. Çünkü güç tasarrufu, son kullanıcının ekran parlaklığını nasıl ayarladığına bağlıdır.
Gezinme kullanıcı arayüzünü değiştirme hakkında daha fazla bilgi edinmek için Gezinme kullanıcı arayüzünü değiştirme başlıklı makaleyi inceleyin.
Bulut tabanlı harita stili, Google Console projenizde oluşturulmuş bir sunucu tarafı harita yapılandırmasını temsil eden bir harita kimliği gerektirir. Harita kimliği oluşturma hakkında daha fazla bilgi için harita kimliği geliştirici belgelerine bakın. Bulut tabanlı harita stili tasarlama ve dağıtma hakkında daha fazla bilgi için Bulut tabanlı harita stilleri oluşturma ve yönetme başlıklı geliştirici dokümanlarına bakın.
GPS konum güncelleme sıklığını değiştirme
Cihazdan gönderilen konum güncellemelerindeki güç kullanımını değerlendirirken iletimde gönderilen veri miktarı yerine konum güncellemelerinin sıklığına daha fazla odaklanın.
Bu, Navigation SDK'da doğrudan kontrol edebileceğiniz bir şey değildir. GPS dışı konum kaynaklarını (hücresel ve kablosuz) kullanırken de aynı tavsiyeler geçerlidir.
Kullanıcılarınızı eğitme
Uygulamanızın kullanıcıları, güç tüketimlerini nasıl optimize edeceklerini bilmek isteyebilir. Kullanıcılarınızın uygulamalarındaki güç tüketimini azaltmasına yardımcı olmak için onlara şunları yapmalarını önerin:
- Telefonu kilitleme
- Navigasyon uygulamasını arka plana alın
- Mümkünse harita olmadan navigasyonu kullanma
- OLED ve AMOLED ekranlarda koyu modu kullanarak veya otomatik parlaklığı etkinleştirerek ekran parlaklığını azaltın.
- Cihazı serin tutun
- Varsa araç içi kablosuz ağa bağlanma
Güç tüketimini ölçme
Güç tüketimini ölçmek için profesyonel düzeyde araçlar kullanabilirsiniz ancak bu araçları edinmek genellikle zor veya maliyetli olur. Android Studio'daki Power Profiler ve XCode Organizer'daki Pil Kullanımı bölmesi gibi uygulamalar ve IDE profilleme araçları güç tüketimini ölçer ancak arka plan işlemlerinin etkisini kaldırmak veya karşılaştırma için bir performans temeli belirlemek zor olabilir. Bazı durumlarda cihaz kısıtlamaları, gerekli verilere erişimi engelleyebilir.
Özel amaçlı güç izleme donanımı kullanabilir ve pil bağlantı yapılandırmasını değiştirebilirsiniz. Bu konuda size yardımcı olacak ticari ürünler ve hizmetler mevcuttur. Cihazları bu şekilde değiştirmenin cihazın garantisini geçersiz kılabileceğini unutmayın.