3

フラグ NEVER_EXPIRE を使用してジオフェンスを正常に追加しました。そして、すべてがうまくいっているようです。

しかし、テスト中に、位置情報サービスを停止すると、ジオフェンスが期待どおりに機能しなくなることがわかりました。さらに、位置情報サービスを再度開始すると、以前に追加したジオフェンスが再び機能し始めますが、通知は生成されず、位置情報サービスが無効になるとジオフェンスが自動的に削除されるようです。そして、ジオフェンスを動作状態に戻すには、すべての場所を再度設定する必要があります。

なぜこのように動作するのか、何か提案やアイデアはありますか??

編集::

同様の問題は、デバイスがオフ/再起動された場合などにも見られます。そのため、位置情報サービスが無効になっている/デバイスが再起動されている場合、基本的に登録されているすべてのジオフェンスは期限切れになります。セッションで処理しようとしたものはほとんどありませんが、位置情報サービスが有効になっているときにジオフェンスを元に戻すことができるソリューションを探しています。

4

4 に答える 4

1

この回答を見つけました::: http://developer.android.com/reference/com/google/android/gms/location/LocationClient.html

ネットワーク ロケーション プロバイダーがユーザーによって無効にされた場合、ジオフェンス サービスは更新を停止し、登録されているすべてのジオフェンスが削除され、指定された保留中のインテントによってインテントが生成されます。この場合、hasError(Intent) は true を返し、getErrorCode(Intent) は GEOFENCE_NOT_AVAILABLE を返します。

現在:::: 位置情報サービスが戻ってきたときにジオフェンスを登録するにはどうすればよいでしょうか.. (バックグラウンドで)

于 2013-09-14T10:17:11.440 に答える
0

@rns.ravi - ドキュメントの内容を見てください - すべてのジオフェンスを再追加できるインテントを登録する必要があります

public void requestLocationUpdates (LocationRequest request, PendingIntent callbackIntent)

Requests location updates with a callback on the specified PendingIntent.

This method is suited for the background use cases, more specifically for receiving location updates, even when the app has been killed by the system. In order to do so, use a PendingIntent for a started service. For foreground use cases, the LocationListener version of the method is recommended, see requestLocationUpdates(LocationRequest, LocationListener).

Any previous LocationRequests registered on this PendingIntent will be replaced.

Location updates are sent with a key of KEY_LOCATION_CHANGED and a Location value on the intent.

Parameters
request The location request for the updates.
callbackIntent  A pending intent to be sent for each location update.
于 2013-11-13T17:58:37.930 に答える