新しいGoogle Play GeofencingサービスAPIをテストしています。
Androidデベロッパーサイト からサンプルコードをダウンロードしました。次に、Androidデバイス(Galaxy Note 2)でサンプルコードを実行しました。オフィスの位置と半径を10mに設定しましたが、オフィスに歩いても何も起こりませんでした。
サンプルコードの実行中に気づいたことの1つは、既にジオフェンスの範囲内にいて、LocationClient
にジオフェンスを追加しても何も起こらないことです。
すでに LocationClient
クラスのドキュメント を読んでいて、次の段落が見つかりました。
ネットワークロケーションプロバイダーがユーザーによって無効にされた場合、ジオフェンスサービスは更新を停止し、登録されたすべてのジオフェンスが削除され、提供された保留中のインテントによってインテントが生成されます。この場合、
hasError(Intent)
はtrueを返し、getErrorCode(Intent)
はGEOFENCE_NOT_AVAILABLE
を返します。
そこで私はWiFiをオンにして、オフィス(ジオフェンスの内側)に歩いていたところ、「ジオフェンスが入りました」という通知を受け取りました。
次の質問があります。
ジオフェンシングはWiFiが有効な場合にのみ機能しますか?
3Gネットワークが提供する場所が機能しないのはなぜですか?
これはサンプルコードのバグですか?
それともこれは私の間違いですか?
セルラーネットワークのみを使用する場合、位置の精度はwi-fiまたはgpsの精度よりも低くなります(Googleマップを開く場合、青い円は現在の位置の推定です-3GPのみを使用する場合、円は半径を持つことができます数百メートルもあります)。
最近、ジオフェンスを使用してアプリを開発しており、次のことがわかりました。この「位置推定円」がすべてジオフェンスの半径内にある場合にのみ、ジオフェンスエントリがトリガーされます。 。そのため、設定する半径の大きさに依存します。 10メートルしか設定しない場合、おそらくGPSでのみ動作し、3GPでは動作しません。 3GPの場合、半径を1000メートルのように設定する必要があります。
ここで結果を共有すると思いました。私も、Google Play Services Location APIとGeofence APIを実装するラボアプリを開発しました。私の結果は、位置決定コードには間違いを認めることができないような病理学的な能力があることを示しています。 :)
ボタンが押されると、アプリは現在の位置( "curLoc")にジオフェンスを作成し、位置APIから半径30メートルで返されます。画面では、curLoc.distanceTo(fenceLoc)を呼び出して約1秒ごとにジオフェンスセンター( "distToCenter")までの距離を表示しています。
アプリを起動し、精度が安定するまで(通常10.0メートルで)待ち、ボタンを押してフェンスを作成します。 「enter」イベントをすぐに取得します。私はイベントをクリアし、散歩に出かけ、どうやら時空異常に入ります。ブロックを歩いて角を曲がると、distToCenterの値が約4メートルだけ増加しました。 (歩数を数えて判断して)家から約300メートル離れると、dstToCenterが徐々に増加します。ジオフェンス終了イベントは、dstToCenterが30メートルを超えた後、最終的に約20秒で発生します。
距離が安定する場所を確認するのを待ちます。それは約150メートルです。振り向いて家に帰ると、同じ極端な位置ずれが発生します。ワームホールの自己がまだ約90メートル離れている間、私は机に座ります。約40秒後、私のドップレンジャーはフェンス内に入り、さらに約20秒後にエンターイベントを受け取ります。
この時点で、私はまだ正面の歩道(7.4メートル先)のどこかにいて、正面玄関に向かって進んでいます。
注:WiFiに接続できなくなった後、GPSステータスバーのアイコンが数秒間点灯し、点滅するのを確認しましたが、ソースは「融合」しました。さらに、10.0メートルから精度が揺らぐことはありません。
嘘!
:)
ネットワーク条件の場合、半径を少なくとも1000 M増やす必要があります。ネットワークプロバイダーを使用して現在の場所を取得するため、ネットワークタワーの近くから場所を取得します。また)。
Wifiは現在地の追跡に使用されます。 Wifi信号とセル信号を使用して位置を三角測量することは、GPSを常時実行するよりも電力効率の高いソリューションです。さらに、GPSは重いマルチパスエリアや屋内などの状況では機能しません。
サンプルのジオフェンスアプリケーションをテストしましたが、WiFiがオフの場合、Android 4.3。
Android 4.3以降は、WiFiがオフの場合でも機能します。