2012-02-16 4 views
2

나는 이상한 문제가있어 이것을 알아 내려고 많은 시간을 보냈습니다. Android 마켓의 내 NFC Checkin 앱의 경우 사용자의 위치에 액세스하여 Foursquare 검색을 수행하고 있습니다. 그래서,안드로이드 LocationListener.onLocationChanged는 절대로 호출되지 않습니다

  Criteria criteria = new Criteria(); 
     criteria.setAccuracy(Criteria.ACCURACY_MEDIUM); 

     String providerName = locationManager.getBestProvider(criteria, true); 


     Location loc = locationManager.getLastKnownLocation(providerName); 

     showSearchUI(); 
     if (loc.getTime() > (new Date().getTime() - 1000*2*60)) //2Minutes back 
     { 
      Log.d("demo", "LastKnownLocation is good enough, using this location!"); 
      startVenueSearch(loc); 
     } 
     else 
     { 
      Log.d("demo", "Requesting network location updates..."); 
      locationManager.requestLocationUpdates(providerName, 0, 0, this); 
     } 

활동 LocationListener 인터페이스를 구현 : -

그래서, 여기에 내가 (하지만 지금은 내가 AA 갤럭시 넥서스에 여전히 안드로이드 4.0.2에 유사한 코드가 이전에 근무하고) 무슨 약이다 다음은 onLocationChanged 메소드입니다.

@Override 
public void onLocationChanged(Location location) { 
    locationManager.removeUpdates(this); 
    Log.d("demo", "Got fresh location, beginning... " + location.getLatitude() + "/" + location.getLongitude()); 
    //fake hybris 
    //location.setLatitude(48.150098d); 
    //location.setLongitude(11.546026d); 

    startVenueSearch(location); 

} 

문제점 : 위치 업데이트를 얻지 못했습니다. 방금 해킹 한 코드를 NetworkProvider에 대한 직접 호출에서 공급자에 대한 기준 기반 검색으로 변경했지만 여전히 작동하지 않습니다. 누군가?

+0

해결책을 찾았습니까? – 4gus71n

답변

0

requestLocationUpdates를 호출하지 않을 때마다 첫 번째 조건을 치는 경우. 이것은 리스너를 등록하고 위치 업데이트를 가져 오는 것입니다. 두 가지 방법 모두에서 업데이트를 등록하거나 해당 조건에 관계없이 호출되도록 추출하십시오.

2

@Override은 이제 LocationListener이 인터페이스가되어 문제가 될 수 있습니다. 사용해보기

public class MyLocationListener implements LocationListener{ 
    public void onLocationChanged(Location location) { 
     Toast("onLocationChanged"); 
    } 

    public void onProviderDisabled(String provider) { 
     Toast("onProviderDisabled"); 
    } 

    public void onProviderEnabled(String provider) { 
     Toast("onProviderEnabled");   
    } 

    public void onStatusChanged(String provider, int status, Bundle extras) { 
     Toast("onStatusChanged"); 
    }  
} 
관련 문제