0

Google Play 위치 서비스를 사용하여 사용자가 경로를 따라 이동하는 데 도움이되지만 Location 객체에서 나침반 보유 정보를 얻지 못하고 있습니다. onLocationChanged(Location location)에 있습니다. 항상 hasBearing()getBearing()에서 거짓 결과가 발생하면 LocationListener 구현에서 0.0이 반환됩니다.위치 없음 Google Play 위치 서비스를 사용할 때 부담이 있습니까?

다음은 잡음 코드를 제거한 코드입니다. 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"/> 

내가 안드로이드 4.3과 갤럭시 넥서스에 Service의 일환으로 코드를 실행하고 있습니다. Wi-Fi가 켜져 있고 GPS가 켜져 있습니다. 제 질문은 : 베어링 업데이트를받지 못하는 이유는 무엇입니까?

답변

1

이 코드는 실제로 나침반 베어링 데이터를 가져 오는 올바른 방법이 아닙니다. 앱을 옥외에서 가져 와서 GPS를 수정 한 후에는 새로운 수치를 얻을 수있었습니다. 나는 그 후 documentation을 다시 읽었으며 위치 베어링이 나침반 베어링이 아니라는 것을 깨달았습니다. 즉, 북쪽은 이 아니고 0.0입니다. 그러나 수평 방향입니다.