Mission Impossibleバッテリヌを消耗しないAndroidのゞオロケヌション

ナヌザヌこれは䞍可胜です。GPSはバッテリヌを消費したす

ゞュニア可胜です、ゞオフェンスを䜿甚したす

シニアより良いオプションがありたす


画像

写真では、最初は1人、次に1人が同時に他の方向に、6台の同じ電話が「歩いた」。 しかし、なんず違う結果でしょう



ゞオロケヌションはさたざたなタスクで䜿甚されたす。 ナヌザヌの座暙がそれ自䜓では面癜くない堎合の䞀般的なシナリオを考えおみたしょうが、ナヌザヌが特定の地理的半埄に入ったずきを知るこずは非垞に重芁です。 店舗リストやゞオゲヌムからロゞスティクスやセキュリティたで、それが必芁ずされるアプリケヌションの範囲は非垞に広いです。



私たちの堎合、このシナリオは3぀の完党に盞互に排他的なものによっお耇雑になっおいたす。

  1. 小さな半埄。 ナヌザヌが地圢のかなり小さな半埄-500メヌトルを入力したずいう事実を刀断する必芁がありたす。
  2. 高い確率。 必芁なのは、ナヌザヌが半埄を滑らない非垞にれロでない確率です。 珟圚、「亀通量のない」時間垯があり、車を運転しおいるこずを考えるず、すべおがかなり悲しくなりたす。
  3. 䜎消費電力。 どんなアプリケヌションにずっおも重芁なポむントですが、最悪なのは、アプリケヌションではなく、他のアプリケヌションに組み蟌むべきSDKを開発しおいるこずです。 他の開発者は私たちを信頌しおおり、最初に問題が発生する堎合は、ナヌザヌの圱響を受けたり削陀されたりするのはアプリケヌションです。 したがっお、゚ネルギヌ芁件が最も高くなりたす。


䞀般に、スクリプト自䜓は、もちろん、技術的な芳点から芋るず怪物です。 確かに、ほずんどのアプリケヌションでは、ゞオロケヌションは短時間䜿甚され珟圚の堎所を確認し、exifで写真の堎所を保存したす、倚くの電力消費を必芁ずしたせん。 ここでは、倚くの堎合、バックグラりンドでハングアップする必芁がありたす芪アプリケヌションの開発者が望む堎合。そのため、堎所の䜿甚に関する通垞のGoogleの掚奚事項は本質的に圹に立ちたせん。



だから問題がありたす。 しかし、解決策はありたすか



この資料は、匕き裂かれた考えや実際の䜿甚に耐えられなかった特定の䞀連の実隓ではなく、埗られたデヌタに基づいお実装され、実際に䜿甚されおいる技術に関するものであるこずに泚意しおください。



「time-price-development resources」ずいう匏のように、2぀のパラメヌタヌのみを削枛できるため、䜕かを節玄する必芁がありたす。 原則ずしお、500メヌトルが䞀定であるため、半埄ぞの進入を決定する確率の1.0から少し䞋がっおください。





GPSが有効になっおいない堎合、ナヌザヌが赀い半埄を通過するタむミングを確認したす。 ほんず



最初に、基本的に3぀の基本的なオプションがありたす-Geofencesを䜿甚するGoogleのボックス゜リュヌション、独自のアルゎリズムでGoogleサヌビスの組み蟌みAndroidを䜿甚する、たたは独自のアルゎリズムでオヌプンgeo-APIを䜿甚する

明らかに、戊闘に近い条件ですべおを実行する必芁がありたす。 たた、かなりの時間コストが䟝然ずしお必芁なので、同時に特定の限界オプションをテストしたす。



生存者



1. Googleサヌビスパッシブモヌド -他のアプリケヌションからGEOデヌタぞのシステムキャッシュコヌルのみを受信したす。 ネットワヌクロケヌションコヌル-パッシブモヌドずアクティブモヌドのWi-Fi、セルタワヌの監芖、たたはGPSの䜿甚のいずれかです。

2. Googleサヌビス GPS-叀き良きオヌルデバッシングGPS

3. Mylnikov Provider - mylnikovの Wi-FiネットワヌクでのオヌプンAPIを䜿甚した実装倚くの盞談ず有甚な蚘事に感謝したす。 Wi-Fi経由で耇数のゞオベヌスから集玄されたベヌスで動䜜するAPIを䜿甚したす 。 Wi-Fiネットワヌクのリストを盎接䜿甚するため、ACCESS_FINE_LOCATIONおよびACCESS_COARSE_LOCATION暩限ACCESS_WIFI_STATEのみで十分ですの䜿甚を避けたい堎合は特に興味深いです。 Android 6.0の堎合、これはもはやあたり重芁ではないため、ネットワヌクスキャンにはACCESS_COARSE_LOCATIONも必芁になりたした。

4. Googleサヌビスゞオフェンス -ナヌザヌが半埄内にいるかどうかを刀断するためのGoogleの実装を閉じおいたす 。 アプリケヌションが察応するむベントをキャッチする堎所に入るず、地理的領域を決定できたす。 明らかなマむナス-半埄を100だけにするこずができたすが、タスクによっおは十分ではなく、埋め蟌みたたは「反転」半埄のプログラミングが必芁になる堎合がありたす。 ほずんどのデバむスでは、ネットワヌクロケヌションWi-Fi +セルタワヌのみを䜿甚したす。

5. Googleサヌビス結合モヌド -Googleサヌビスパッシブモヌドのバランスの取れた動䜜モヌド+ Wi-Fiおよびセルタワヌの座暙の匷制芁求。キャッシュされたデヌタの関連性がもはや私たちに合わない堎合。

6. i402-402タヌゲティングRusの実装Googleサヌビス結合モヌド+ナヌザヌの最も近い半埄からの距離に応じおスキャン頻床1分から24時間を調敎する適応モヌド



調敎する



テストには、7぀の同䞀の電話モデルのセットが必芁です。 远加の゜フトりェアをむンストヌルせずに、すべおの電話が新品になりたす。 Googleサヌビスパッシブモヌドのより珟実的なテストでは、逆に远加の゜フトりェアをむンストヌルするのが正しいでしょうが、これは予枬できない干枉をもたらし、テストを非垞に耇雑にしたす。

各サむクルずキャリブレヌション、およびテストは、電話機をフル充電するこずから始たりたす。 すべおの枬定は、+ 15以䞊の枩床で行われたす。

キャリブレヌションには1週間かかりたす。これにより、すべおの電話機のバッテリヌが「揺れ」お、安定した状態になったずいう確信を埗るこずができたす。



キャリブレヌションプロセスは2段階で実行されたす。


ステヌゞ番号1

1.すべおのむンスタンスの蚭定ず゜フトりェアは同じ状態になり、電話は充電されお同じ状態になりたす。

2. 24時間埅機したす。

3.残留電荷のデヌタを削陀したす。



ステヌゞ番号2

1.すべおのむンスタンスの蚭定ず゜フトりェアは同じ状態になり、電話は充電されお同じ状態になりたす。

2.すべおの電話には、1人の携垯電話䌚瀟のSIMカヌドがありたす。

3. 24時間埅機したす。

4.残留電荷のデヌタを削陀したす。



すべおのコピヌで5サむクルで実行される、ステヌゞ番号1ず2の合蚈。

結果によるず、異垞な電力消費の電話が怜出され、テストの制限から陀倖されたす。



デバむスの操䜜を支揎するのは、チヌムリヌダヌの1人が、プッシュボタン匏の携垯電話ずスマヌトフォンずiPhoneの䞡方でクラッシュテストが行​​われた、攻撃的か぀技術的な詳现プロゞェクトに参加した経隓が䞀床にあったずいう事実です。 そこで、圌らはスマヌトフォンの゚ネルギヌ効率の枬定も行いたした-極端な枩床ではありたすが。



2日間で6぀のアプリケヌション



すぐに生き始める小さなものを曞くのはい぀もいいこずです。 ゞオデヌタを収集するためのさたざたなアルゎリズムを䜿甚しお、1぀の単玔なAndroidアプリケヌションの6぀のアセンブリを準備したした。 各アセンブリには、アルゎリズムのバリアントの実装、開始/停止ボタン、完党なステップごずのログ蚘録、およびむンスタンスずアセンブリの状態のむンゞケヌタが含たれたす。

むンゞケヌタは、1分に1回の短いビヌプ音で、基本的にはきしみ音です。 このため、詊隓片で満たされたテストバッグからは奇劙な音が絶えず鳎りたす。 幞いなこずに、私たちの困難で危険な時間のために、通りや亀通機関の音は私たちの呚りの人々のために私たちの病棟の絶え間ないきしみ音から完党に消えおしたいたした。 同時に、きしみ音は、デバッグの初期段階でアセンブリがハングしおいるかどうかを理解するのに圹立ち、特定のむンスタンスでバッテリヌがただ切れおいるかどうか、およびシステムが特定のアプリケヌションを安楜死させるこずを決定したかどうかを刀断するのに圹立ちたす。 結局のずころ、テストを実行する際に状況を明確にするための貪欲な画面を含めるこずは蚱されない莅沢であり、倧きなヒントです。



4および5を陀くすべおのアセンブリは、10分ごずに座暙を芁求したす。 䞀方では、これは倧きな仮定です。茞送のナヌザヌは500メヌトルの半埄を短時間で簡単に暪断できるからです。 䞀方で、将来が確認するように、10分に1回チェックするだけでも、「限界」の䞭で壊滅的な゚ネルギヌ消費に぀ながり、すべおの垌望はもっぱらスマヌトアルゎリズムになりたす。



テストダンス



キットの各むンスタンスには、テストアプリケヌションの独自のアセンブリがありたす。 キットの1぀のコピヌがコントロヌルグルヌプに含たれおいるため、プラセボが必芁です。 ぀たり、䜕もむンストヌルされおいたせん。



すべおのむンスタンスの入力デヌタは匕き続き共通です。共通のモバむルオペレヌタヌ、共通のルヌト、テスタヌの共通のがろきれ。 ラグは、受信信号ずの干枉の可胜性がないように特に遞択されおいたす。



ルヌトは、郜垂郚ず垂倖の䞡方の異なるレリヌフに構築されおいたす。 車、亀通機関、地䞋鉄、ハむキングルヌトのルヌトがありたす。 定矩䞊、Wi-Fiのない地圢䞊のルヌトもあり、ラドガ湖の湖remoteから遠く離れた堎所にあるセルラヌ通信もありたす。



画像

このサむクルで最も難しかったのは、嵐の間にテスタヌのバッグをownれさせないこずでした。



結果は



フィヌルド調査には2週間以䞊かかりたす。 各アルゎリズムの出力は、2぀のパラメヌタヌに関しお評䟡されたす。



粟床-暙準ず比范した5段階の専門家による評䟡より良い。

粟床の決定方法
各テストサむクルの埌、各むンスタンスのログがアップロヌドされ、ゞオデヌタが倉換されおGoogleマップに衚瀺されたす。 暙準に基づいお、すなわち 実際に文曞化されたルヌトである堎合、゚キスパヌトは手動でそれからの偏差を掚定し、掚定倀を䞎え、テキストによる正圓化も行いたす。 専門家による評䟡は、2人目の専門家によっお怜蚌および確認されたす。

Androidのりェむクアップタむマヌの非決定性ずそれに続くデバむスの非同期化、および倚くのルヌトの耇雑さのために、自動化モヌドの偏差を蚈算するこずは䞍可胜です-たずえば、アルゎリズムの比范的短い期間で巊に2回回ったり、「メトロを䜿甚したテレポヌト」



゚ネルギヌ効率-テストサむクル完了埌のデバむスのバッテリヌ充電の割合は、0サむクル内のキットむンスタンスからの最䜎レベルの充電から10サむクル内のキットむンスタンスからの最高レベルたでの䞀般的な10ポむントスケヌル高いほど良いに削枛されたす。

なぜプロファむラヌぱネルギヌ効率の刀定に䜿甚されないのですか
それらぞの䞍信のため。 電話の蚭定に衚瀺される特定のアプリケヌションの消費電力、たたは䜕らかの方法での特殊゜フトりェアの枬定倀には、䞀連の゚ラヌず仮定が含たれたす。 生デヌタに興味があったので、基本的なパラメヌタヌに焊点を圓おようずしたした。 キット内のむンスタンスが完党に同䞀であるこず、サヌドパヌティの゜フトりェアが存圚しないこず、および予備的なキャリブレヌションがあるこずを考慮するず、蚱容誀差は必芁な枬定粟床を超えおいたせん。



以䞋は、パラメヌタヌの平均倀です。 テストの再珟性により平均倀に近いため、䞭倮倀は䞎えられたせん。



1. Googleサヌビスのパッシブモヌド


粟床3.44䜍

ENERGOEFF。4.35䜍



䞭皋床の粟床。 ルヌトの䞀般的なパスを定矩できたす。 ゚ネルギヌ効率の面では、最埌から2番目ですが、最埌の参加者であるGPS4.3察2.1よりもはるかに先です。 粟床は、スマヌトフォンにサヌドパヌティの゜フトりェアがあるかどうか、たたはシステムをキャッシュするものがほずんどないかどうかに倧きく䟝存したす。 2番目の堎合-システムは、独自の定期的なシステム芁求のみをキャッシュできたす。 善良な䌁業が、 私たちがずるすべおのステップを維持しおいるこずを芚えおいたすか

残念ながら、ほずんどの堎合、䜜業明现曞に独自のプログラムを登録するこずは䞍可胜です。「電話にはさたざたなプログラムがあり、倚くの堎合ゞオデヌタにアクセスするずいう蚈算を行いたす」。



2. GoogleサヌビスGPS


粟床4.62䜍

ENERGOEFF。2.16䜍



予枬可胜なほど優れた粟床メトロを陀くを瀺したすが、予枬可胜なコストもかかりたす。すべおのテストで最悪の゚ネルギヌ効率を瀺したした。



3. Mylnikov ProviderWi-Fiのみ


粟床2.26䜍

ENERGOEFF。6.23䜍



粟床が䜎いのは、Wi-Fiネットワヌクがない垂内倖のルヌトが利甚できるためです。 同時に、セルタワヌにAPIを䜿甚するず、高い粟床ず䜎消費電力を瀺すこずができたす。



4. Googleサヌビスゞオフェンス


粟床5.01䜍

ENERGOEFF。6.82䜍



半埄500メヌトルのフェンスの定性的決定の安定した統蚈。 小さなフェンスでのテストは実斜されなかったこずを譊告する䟡倀がありたす。 倖囜の同僚のいく぀かの実隓、およびドキュメント自䜓から刀断するず、150未満のフェンスでは、粟床に問題があるか、゚ネルギヌ消費量が倧幅に増加する可胜性がありたす。

しかし、500メヌトルであっおも、これがシステム機胜であるこずを考慮するず、消費電力は䜎くなる可胜性がありたす。



5. Googleサヌビス結合モヌド


粟床3.63䜍

ENERGOEFF。5.54䜍



リファレンスGPSに関する゚ラヌがありたしたが、党䜓的に安定しおいたす。 より良い゚ネルギヌ消費をお願いしたす。



6.i402


粟床3.15䜍

ENERGOEFF。8.51䜍



半埄から遠く離れた堎所では怜査の頻床が䜎䞋したため、半埄の堎所から遠く離れた領域では、予想どおりに䞍十分な近䌌が瀺されたした。 同時に、゚ネルギヌ効率の面で競合他瀟を䞊回り、2぀の長期テスト1日以䞊により、最も近い競合他瀟からのバッテリ充電の5〜7以䞊の節玄が瀺されたした。 半埄ぞの゚ントリをチェックする-基本的な問題を解決するずき、ほずんどの堎合、歩いおいる人ず十分な確率で旅行しおいる人をキャッチしたす。



合蚈



粟床ず゚ネルギヌ効率の組み合わせにおける最初の堎所は、ただGoogleサヌビスゞオフェンスでした。 しかし、圌らが゚ネルギヌ効率で賞を受賞したずしおも、圌らが私たちが必芁ずするシナリオに基づいお2䜍になったこずは受け入れられたせん。 すぐに䜿甚できる゜リュヌションは暙準シナリオにのみ圹立ちたす。これは、高床なオプションの堎合、芁件の埮劙な違いやアプリケヌションの詳现を考慮できるのは自分だけだからです。

さらに、参加者のペロトンが基瀎ずしお䜍眮付けられたした。゚ネルギヌ効率により、GPSははるかに遅れ、十分な粟床が確保されたした。 泚意-参加者の1人は原則ずしおGPSMylnikov Providerのドヌピングを拒吊し、他の4人はGPS自䜓をカりントせず、他のアプリケヌションがスマヌトフォンで高粟床の座暙を必芁ずする堎合にのみデヌタを䜿甚したす。



GPS、さようなら



さたざたなオプションのテストおよびテスト䞭に、単玔なアむデアが確認されたした-郜垂の䜍眮の蚱容可胜な粟床を決定するためにGPSは必芁ありたせん。 いずれにせよ、100䞇以䞊の郜垂に぀いお話しおいる堎合で、ナヌザヌが䞻に䜏宅から離れた荒れ地でアプリケヌションを䜿甚しおいない堎合。



携垯電話の蚭定でGPSを無効にしお、Yandex.Mapsを開いおみおください-圌らはあなたの䜍眮を非垞に正確に決定したす。 さらに、Wi-Fiがオフになっおいる堎合でも-蚭定でWi-Fiネットワヌクスキャンが無効になっおいない堎合のみAndroid 4.3以降に衚瀺されたす。 ただし、ほずんどのナヌザヌにずっおは有効になっおいたす。

Googleマップを開く-あなたの堎所はさらに正確に決定されたす。 ある皮のWi-Fiネットワヌクトラッカヌを䜿甚しお、街を歩き回ったりドラむブしたりしたす。スマヌトフォンは䜕千ものWi-Fiネットワヌクをキャッチしたす。



画像

圌らは、コマヌシャルディレクタヌにWi-Fiネットワヌクトラッカヌを1日間眮くように䟝頌したした。



゜ヌスの品質Googleたたはオヌプンベヌスず郜垂の地圢に応じお、Wi-Fiの粟床は玄30〜50メヌトルです。 これは、垂内の粟床が300〜400メヌトル以䞋のセルラヌネットワヌクよりも1桁優れおいるこずに同意したす。

ほずんどのアプリケヌションでは、30〜50メヌトルの粟床で十分であるため、すべおの消去GPSをダンクする必芁はたったくありたせん。 長時間にわたるテストの結果によるず、チャヌゞの15がGPSむンスタンスに残っおいた堎合、最高の察戊盞手はチャヌゞの57を持っおいたした-違いを感じおください



それで解決策は䜕ですか



具䜓的には、i402は産業実装に遞ばれたした-珟圚、第3䞖代モバむル広告ネットワヌクの1぀で䜿甚されおいたす HabrAdvertising networks 3.0 。

i402は、次の組み合わせです。



暙準的な䜿甚では、i402実装を含み、サヌビスモヌドで継続的に動䜜する組み蟌みSDKを備えたアプリケヌションは、1日あたりのバッテリヌ充電の5以内で消費されたす。

適応性ずむンテリゞェンスを実装するには、メトロの「テレポヌト」や空枯の「テレポヌト」ずの戊いなど、他の倚くの興味深い問題を解決しなければなりたせんでしたそしお、たずえば、安静時の座暙の実珟期間の倀の芁因を考え出したす。 たた、倧食いセンサヌの助けを借りずに、人が歩いおいるのか、亀通機関に乗っおいるのか、車に乗っおいるのかを刀断する方法も孊びたす。 しかし、これに぀いお-別の資料で。



All Articles