10

ジオフェンスを使用した機能を実装しようとしていますが、本格的な作業を行う前に、最初の移行後にジオフェンスがアクティブなままかどうかを確認する必要があります。

機能のコアは次のとおりです。

ポイント P (これをエリア Aと呼びます)から x メートル以内にいるたびに、アクション Bが発生するようにします。

私が知る必要があるのは

  • ジオフェンスを追加するだけで、経過時間や再起動などに関係なく、指定されたエリアに入るたびGeofence.NEVER_EXPIREに PendingIntent を取得するので安心できますか?

また

  • 次にエリア Aに入ったときに通知を受け取るには、エリア A を出たら、このジオフェンスを再登録する必要がありますか?

前者であることを願う

4

4 に答える 4

10

良い提案は最初のものです。フラグ NEVER_EXPIRE を有効期限として使用してジオフェンスを作成すると、(出入りによって) トリガーされたときに再登録する必要がなくなります。私はこれについて 100% 確信しています。ちょうど今、ジオフェンスに関する POC のコーディングとテストを終えたところです。

ドキュメントから、ジオフェンスを削除する唯一の方法は、有効期限に達するか、デバイス自体によって削除されることです。

有効期限

ジオフェンスがアクティブである期間。有効期限に達すると、位置情報サービスはジオフェンスを削除します。ほとんどの場合、有効期限を指定する必要がありますが、ユーザーの自宅や勤務先に永続的なジオフェンスを保持したい場合があります。

ジオフェンスの監視を停止するには、ジオフェンス自体を削除します

于 2013-07-24T09:36:28.680 に答える
4

アプリがアプリをアンインストールしない場合に備えて、ユーザーがアプリをアンインストールした後でも、NEVER_EXPIRE によってジオフェンスが登録されることに注意してください。これらを削除する方法はありません。これまで。そのため、バッテリーを消耗し続けます。したがって、有効期限を設定することをお勧めします。希望する前に有効期限が切れた場合に備えて、ジオフェンスを再度設定することをお勧めします。

于 2013-07-31T08:28:35.643 に答える
1

ジオフェンスに出入りする回数に関係なく保留中のインテント (遷移) を取得しますが、問題は、デバイスを再起動するとすべてのジオフェンスが削除されることです。そのため、デバイスを再起動する場合は、ブロードキャスト レシーバーを使用してすべてのジオフェンス (共有設定で保存したもの) を再登録し、インテント フィルター アクションを設定する必要があります。

android.intent.action.BOOT_COMPLETED

と許可:

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

AndroidManifest.xml で。

また、システムは、Google Play Services が強制終了されて再起動/アップグレードされた場合でもジオフェンスを復元しますが、データを消去した場合は復元しないことに注意してください。同じことは、「必要な場合にのみジオフェンスを再登録する」セクションの下の開発者ドキュメントにも記載されています

また、ユーザーが場所/GPS 設定を切り替えたりオフにしたりすると、すべてのジオフェンスが削除され、提供された保留中のインテントによってインテントが生成されることに注意してください。この場合、hasError() API は true を返し、getErrorCode() API は GEOFENCE_NOT_AVAILABLE を返します。

于 2016-02-23T06:27:13.260 に答える