그래서 연습을위한 날씨 앱을 만들려고 노력 중이며 위치를 얻으려는 문제에 부딪 혔습니다. 사람들이 융합 된 위치 API를 통해 getLastLocation을 사용하도록 제안하는 것을 읽었습니다. 문제는 해당 장치에 등록 된 위치가 아직 없으면 null입니다. 나는 에뮬레이터 시간을 사용하는 것이 드문 것으로 나타 났지만, 여전히 내 애플 리케이션이 제대로 처리하는 것을 원할 것이다. GPS를 끄고 켰을 때 또는 전화가 방금 켜져있는 경우에 실행할 수 있습니다. 내가 한 일은 getLastLocation이 null을 반환하고 업데이트를 요청하는 것입니다. 그렇지만 기기가 업데이트 된 위치를 등록 할 때까지 기다려야합니다. 날씨 앱에서 모든 데이터가 기반이되며, 같은 종류의 문제가 계속 발생하고 있습니다. 다른 앱에서도 문제가되지 않는 것으로 나타났습니다. 때로는 실제로 위치를 등록하기 위해 Google지도를로드해야하는 경우가 있습니다. Google지도는 위치 업데이트를 어떻게 강제합니까? 여기 내 getLocation 메소드의 예는 다음과 같습니다장치 위치를 얻는 방법
public void getLocation() throws SecurityException {
boolean gps_enabled;
LocationManager lm = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (gps_enabled) {
Location location = LocationServices.FusedLocationApi.getLastLocation(mGoogleApiClient);
if (location != null) {
startGetForecast(location);
} else {
LocationRequest request = LocationRequest.create();
request.setNumUpdates(1);
request.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient, request, this);
}
}
else {
AlertDialogFragment alertDialogFragment = new AlertDialogFragment();
alertDialogFragment.setErrorTexts("Location Unavailable", "Could not retrieve location information.", "Exit");
alertDialogFragment.show(getSupportFragmentManager(), "Location Unavailable");
}
}
플레이 그냥 사이드 노트, 퓨즈 된 위치 제공자 API를 사용하면 안전 할 것입니다. –
융합 위치 API를 사용하고 있습니까? 내 문제는 융합 된 위치 API를 사용하는 마지막 위치가없는 경우입니다. – jBob
내가 잘못하지 않으면 마지막 위치는 gps, wifi 또는 휴대 전화 네트워크와 같은 위치 제공 업체에서 가져올 수 있습니다. 코드에 if gps를 설정할지 묻는 메시지가 표시되지만, GPS가 켜져 있는지 여부는 묻지 않지만 GPS를 켜고 켜기 만하면됩니다. 다음 위치가 없다? if 문 temproray를 사용하지 않도록 설정하고 어떤 것이 있는지보십시오. 전화 네트워크 및 Wi-Fi에 대한 신호 커버리지가 있는지 확인하십시오. –