2011-10-15 5 views
0

나는 어떤 제공자라도 업데이트 할 공급자를 말하지 않고도 어떤 공급자의 마지막 GPS 위치가 필요합니다.
.리스너 또는 requestLocationUpdates없이 GPS 좌표를 얻는 방법

리스너 또는 requestLocationUpdates를 추가하지 않고도이 작업을 수행 할 수 있습니까?

것은 내가 ActivityonCreate에서이 코드를 시도 임 지연

을 차단하지 않고 단지 대략적인 위치를 필요로하지만 providers.size()은 항상 0

LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
List<String> providers = lm.getProviders(true); 

    Location l = null; 

    for (int i=providers.size()-1; i>=0; i--) { 
     l = lm.getLastKnownLocation(providers.get(i)); 
     if (l != null) 
     break; 
    } 

<uses-permission android:name="android.permission.ACCESS_GPS" /> 
    <uses-permission android:name="android.permisssion.ACCESS_FINE_LOCATION"></uses-permission> 
    <uses-permission android:name="android.permisssion.ACCESS_COARSE_LOCATION"></uses-permission> 

답변

1

입니다 this 코드를 사용해보십시오.

+0

메신저 실제로 시험을보다 정확하게 할 수 있도록 대부분의 현재 위치를 확인 그 provider.size() = 0을 계속 가져라. 나는 내 매니페스트와 gps에서 uses-permission을 가지고 있지만 여전히 제공자는 반환되지 않습니다. – Erik

+0

괜찮습니다. 사용자가 뉴욕에서 기기를 구입 한 다음 일본에서 켜고 앱을 설치한다고 가정 해 보겠습니다. 거기에 기회가 이전에 값을 바로 얻을 이후 내 애플 리케이션은 지금 뉴욕 좌표를 얻을 것이라고? – Erik

2

당신이 위치 관리자에서 마지막으로 알려진 위치를 얻을 수 있지만 그 오래된 할 수 있도록 자사의 더 나은 모든 공급자의 목록을 얻을하고

LocationManager manager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
     List<String> providers = manager.getAllProviders(); 
     Location loc; 

     for (int i = 0; i < providers.size(); i++) { 

      loc = manager.getLastKnownLocation(providers.get(i)); 
      loc.getTime(); 
      /* 
      * put your code here 
      * compare loc from providers to get the most 
      * recent location 
      */ 
     } 
} 
+0

좋은 IDE가 그렇게 할 것입니다. – Erik

관련 문제