LocationManager를 사용하여 로그인 한 사용자의 lat 및 long을 가져 오려고합니다. Permissions 화면을 볼 수있게 된 후 텍스트보기에서 위도와 경도를보고 싶습니다. 하지만 텍스트보기에서 아무 것도 볼 수 없습니다.LocationManager에서 Lat Long을 가져올 수 없습니다.
protected void getLocation() {
Log.v(TAG, "GetLocation");
int LOCATION_REFRESH_TIME = 1000;
int LOCATION_REFRESH_DISTANCE = 5;
if (!(checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED)) {
Log.v("WEAVER_", "Has permission");
mLocationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
mLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, LOCATION_REFRESH_TIME,
LOCATION_REFRESH_DISTANCE, mLocationListener);
} else {
Log.v("WEAVER_", "Does not have permission");
}
}
이제는 mLocationListener를 호출하지만 어떤 결과도 얻지 못했습니다. OnLocationChanged() 메서드가 호출되지 않습니다.
private final LocationListener mLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.v("WEAVER_", "Location Change");
double latitude = location.getLatitude();
textView.setText(String.valueOf(latitude) + "latitude");
textView.setText(String.valueOf(updates) + " updates");
}
여기서 textView는 아무 것도 표시하지 않으며 로그는 위치 변경 이벤트로 업데이트되지 않습니다.
로그 결과는 다음과 같습니다
08-21 14:35:29.336 3390-3390/daveytree.geo2 V/WEAVER_: GetLocation
08-21 14:35:29.337 3390-3390/daveytree.geo2 V/WEAVER_: Has permission
08-21 14:35:29.362 3390-3526/daveytree.geo2 D/OpenGLRenderer: Use EGL_SWAP_BEHAVIOR_PRESERVED: true
이를 캡처하는 다른 이벤트가 있습니다. 도와주세요
확인 장치가 비행기에있는 경우 모드 및/또는 포 장치에서 위치 검출기가 비활성화되어 있습니다. – Vyacheslav
LocationManager는 이전 Android 위치 프레임 워크의 일부이므로 Google Play 위치 서비스로 이전하는 것이 좋습니다 (앱에서 사용 중이며 모든 것이 잘 작동 함). 자세한 내용은 https://developer.android.com/training/location/index.html을 참조하십시오. – Krzysiek