Android'de Konum Tabanlı Otomasyonu Pil Tüketmeden Kurmak
Muffle uygulaması geliştiricisi, GeofencingClient API ile konum tabanlı ses profili otomasyonunu pil dostu şekilde nasıl kurduğunu ve OEM kısıtlamalarıyla nasıl başa çıktığını anlatıyor.
Bir Android geliştiricisi, telefonunu sessize almayı unuttuğu utandırıcı bir deneyimden yola çıkarak Muffle adlı bir uygulama geliştirdi. Amaç, kullanıcı belirli konumlara (ofis, ibadethane vb.) girip çıktığında ses profilini otomatik değiştirmekti. Ancak sürekli GPS taraması yapan arka plan servisleri saatler içinde pili tüketebildiğinden, geliştirici Google Play Services tabanlı GeofencingClient API'sini tercih etti. Bu API, konum izleme yükünü sisteme devrederek hücre kulesi ve Wi-Fi sinyallerini kullanıyor, GPS'e daha az bağımlı kalıyor ve uygulamayı yalnızca sınır geçişlerinde uyandırıyor.
Geliştirme sürecinde en büyük sürpriz, düşük-orta segment cihazlarda OEM'lerin agresif pil optimizasyonu ayarlarının arka plan dinleyicilerini habersizce öldürmesiydi. Bu sorunu çözmek için WorkManager tabanlı bir 'diriltme' mekanizması eklenerek geofence'lerin periyodik olarak yeniden kaydedilmesi sağlandı. Ayrıca zayıf GPS kapsama alanlarında yaşanan 'konum sapması' nedeniyle ses profillerinin gereksiz yere değişmesini önlemek için sınır bölgelerine tampon mesafe eklendi.
Geliştirici, geriye dönüp baksa Wi-Fi SSID tespitini ikincil bir doğrulama katmanı olarak kullanacağını belirtiyor; çünkü bilinen bir ağa bağlanma, GPS veya hücre bazlı geofencing'den çok daha güvenilir ve enerji tasarruflu bir tetikleyici. Yazının temel çıkarımı, Android'in arka plan süreçlerine düşman bir ortam olduğu ve geliştiricilerin uygulamalarını süreklilik varsayımı yerine, her an öldürülüp yeniden canlandırılabilecek şekilde durum bilgisiz (stateless) tasarlaması gerektiği.