Location
Google Play 位置情報サービスを使用してユーザーがパスに沿って移動できるようにしていますが、 で受信したオブジェクトからコンパス方位情報を取得できませんonLocationChanged(Location location)
。私の実装では、常に false の結果が返されhasBearing()
、getBearing()
0.0 が返さLocationListener
れます。
以下は、ノイズコードを取り除いて使用しているコードです。を作成するために使用されるパラメータを示していますLocationRequest
。コードは非常に喜んでLocationListener
実装にジャンプするので、システムのその部分のアーキテクチャが機能しているように見えます。
public class IncrementalNavigator {
private LocationClient locationClient;
private LocationRequest locationRequest;
private float headingBearing = 0.0f;
private LocationListener locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.d(TAG, "The location has changed to " + location.toString());
if (location.hasBearing()) {
// I never see this updated.
headingBearing = location.getBearing();
}
// ...
}
};
public IncrementalNavigator(LocationClient locationClient) {
this.locationRequest = LocationRequest.create();
this.locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
this.locationRequest.setInterval(5000);
this.locationRequest.setFastestInterval(1000);
this.locationClient = locationClient;
this.headingBearing = locationClient
.getLastLocation()
.getBearing();
// ...
}
public void setWalkingDirections(WalkingDirections walkingDirections) {
// ...
if (walkingDirections != null) {
// ...
this.locationClient.requestLocationUpdates(locationRequest, locationListener);
} else {
this.locationClient.removeLocationUpdates(locationListener);
}
}
// ...
}
私の AndroidManifest.xml は、次のアクセス許可を宣言します。
<uses-permission android:name="android.permission.ACCESS_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
Service
Android 4.3 を搭載した Galaxy Nexus の一部としてコードを実行しています。WiFi がオンで、GPS がオンになっています。私の質問は、ベアリングの最新情報を受信していないのはなぜですか?