2016-08-16 2 views
4

그래서 연습을위한 날씨 앱을 만들려고 노력 중이며 위치를 얻으려는 문제에 부딪 혔습니다. 사람들이 융합 된 위치 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"); 
    } 
} 
+0

플레이 그냥 사이드 노트, 퓨즈 된 위치 제공자 API를 사용하면 안전 할 것입니다. –

+0

융합 위치 API를 사용하고 있습니까? 내 문제는 융합 된 위치 API를 사용하는 마지막 위치가없는 경우입니다. – jBob

+0

내가 잘못하지 않으면 마지막 위치는 gps, wifi 또는 휴대 전화 네트워크와 같은 위치 제공 업체에서 가져올 수 있습니다. 코드에 if gps를 설정할지 묻는 메시지가 표시되지만, GPS가 켜져 있는지 여부는 묻지 않지만 GPS를 켜고 켜기 만하면됩니다. 다음 위치가 없다? if 문 temproray를 사용하지 않도록 설정하고 어떤 것이 있는지보십시오. 전화 네트워크 및 Wi-Fi에 대한 신호 커버리지가 있는지 확인하십시오. –

답변

1

참고 :이 답변은 직접 질문에 대답하지처럼하지만 그의 코드는 일반적으로하지만, 상태 확인했다으로 영업 이익 (질문에 주석을) 채팅 후 소리 수 문제를 둘러싼이 대답은 OP를 만족 시켰습니다.

다행히도 표준 라이브러리는 Google이 코드를 손에 넣을 수있는 유일한 방법은 아닙니다. 표준 라이브러리 외에도 Google 제공 업체 Play 서비스 Google Play 스토어 애플리케이션 옆에 이라는 공통 서비스 세트가 설치되어 있습니다. 이 위치 혼란을 고치기 위해 Google은 Play에 새로운 위치 서비스를 제공했습니다 서비스는 통합 위치 제공 업체라고합니다.

이러한 라이브러리 은 다른 응용 프로그램에 있기 때문에 실제로 응용 프로그램을 설치해야합니다 ( ). 즉, Play 스토어 앱 이 설치된 기기 만 최신 버전으로 애플리케이션을 사용할 수 있습니다.

그래서 결론은 다음과 같습니다

  1. 당신은 위에서 언급 한 바와 같이 귀하의 장치에 응용 프로그램을 테스트해야합니다. 셀 타워
  2. 와이파이 연결에서

    1. GPS 라디오
    2. 거친 점 :
    3. 당신이 융합 위치 공급자 API를 사용하고 있기 때문에, 그 API가 자동으로 다음 소스 중 하나에서 마지막 위치를 결정하는 것을 의미합니다

  3. 그래서 당신은 쉽게 당신의 코드에서 조건 경우 GPS를 제거 할 수

  4. GPS 신호를 사용해야하는 경우 건물, 연구실, 집 또는 사무실 외부에 있어야합니다.

더 많은 정보를 얻으려면 위에서 언급 한 자료를 참조하십시오. 많은 온라인 자료가 있습니다.

안드로이드 프로그래밍 :

자료 :에서 대답의 첫 번째 부분은, 그것의 소스는 구글에서 큰 얼간이 목장 가이드
2 판
장 31 페이지 (552)는 서비스

+0

@DanielNugent 의견에 동의하지만 의견을 읽었습니다. 입력 사항이 있으면 귀하의 의견을 듣게되어 기쁘게 생각합니다. –