ジオフェンス内に滞在する時間を測定するアプリケーションを作成しています。エントリ イベントが検出されたときにタイムスタンプが取得され、終了イベントが受信されたときに取得されたタイムスタンプと比較されます。
これは夏の間、Galaxy Nexus で問題なく動作しましたが、11 月 (2013 年) から、奇妙な動作が始まることに気付きました。新しい Nexus 5 をテスト デバイスとして使い始めたばかりで、まだジオフェンスの内側にいる間に終了イベントが送信されていることがわかりました。ジオフェンスは 1500 m で、出口イベントが発生したときの最後の既知の場所をログに記録し、それは出口ゾーンのかなり内側にありました。
イベントと私のデバイスがスリープ状態であり、電源がオンになっていることには相関関係があるようですが、なぜこれが起こっているのかを実際に証明することはできません. 私の理論では、場所の精度が低下して、Play Services が私がゾーン内にいることを確認できなくなり、終了イベントがトリガーされる可能性があります。デバイスの電源が再びオンになり、ネットワーク/wifi/gps を使用してその場所を更新すると、新しいエントリ イベントがトリガーされます。また、特定の会議室にいるときに携帯電話をポケットに入れていると、オフィスで携帯電話の受信が失われることがあることにも注意してください。
最後の既知の場所がジオフェンス内にある場合に終了イベントを無視するというアイデアをテストしましたが、これにより多くの適切な終了イベントが適切に機能しなくなることがわかりました。位置情報更新のリクエストは通常、私が中にいるため失敗し、更新は通常タイムアウトします (約 2 ~ 4 分間試行します)。また、exit イベントが送信されると、後でランダムな時間に新しい entry イベントを取得します。これは、Google Play が私がゾーンの外にいたと判断し、現在はゾーン内に戻っていることが判明したためです。
誰かが同様の動作を見たことがありますか、またはこれが発生する理由について説明がありますか? ジオフェンスが追加され、適切に機能しているため、これについてできることはあまりないように見えますが、終了イベントが常に合法であるとは信じられず、時間測定が疑わしくなります.