問題:
Fusion Location Provider API で主張されているように、位置情報の更新が屋内で機能しない。
どうしたの:
LocationClient
Androidアプリで使用して最新のロケーションAPIを実装して、ロケーションの更新を取得しようとしました。- 屋外でテストしている間、私のAndroidアプリは問題なく動作します。
- ただし、屋内 (任意の建物内) でテストすると、位置情報の更新は行われません。
予想される行動:
新しい API によると、屋内にいる間に建物周辺の推定位置を取得できると期待しています (GPS は正確な位置を特定するための衛星信号を見つけられないため)。
最新の Google マップ Android アプリは、推定位置で屋内で正常に動作することがわかりました。
質問:
新しい位置情報 API を使用して屋内で位置情報を更新するには、他に何に注意する必要がありますか (正確な位置情報は必要ありません。精度が低くても問題ありません)。
Android 4.2.2 バージョンの API を使用して Android アプリを実装しています。HTC One X (OS v 4.1.1) でテストしています
以下は、新しい API を使用して位置情報の更新を取得するために適用した Android コードです。
ステップ1:
mLocationClient = new LocationClient(this, this, this);
ステップ2:
// Create the LocationRequest object
mLocationRequest = LocationRequest.create();
// Use high accuracy
mLocationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
// Set the update interval to 5 seconds
mLocationRequest.setInterval(UPDATE_INTERVAL);
// Set the fastest update interval to 1 second
mLocationRequest.setFastestInterval(FASTEST_INTERVAL);
Step3:onStart()
メソッド内 - 以下の行が追加されます:
// Connect the client.
mLocationClient.connect();
Step4:onConnected()
メソッド内 - 以下の行が追加されます:
mLocationClient.requestLocationUpdates(mLocationRequest, this);
Step5:onLocationChanged()
メソッド内 - 位置情報の更新をリッスンします。内部をテストする場合、このメソッドは呼び出されません。このメソッドは、GPS 信号が見つかった場合にのみ呼び出されます。
double lat = location.getLatitude();
double lng = location.getLongitude();
最後に、Android マニフェストに以下のアクセス許可を追加しました。
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />