2012-06-06 4 views
4

내가 그러나, LocationListener의 onLocationChanged 메소드가 호출되지 않습니다 http://developer.android.com/guide/topics/location/obtaining-user-location.html을 locationManager requestLocationUpdates는

에 설명 된대로 안드로이드 사용을 locationManager 및 LocationListener에서 현재 위치를 얻으려고 작동하지 않습니다. 나는 실제 안드로이드 폰을 사용했다./또한 에뮬레이터를 사용했고 위의 링크에서 설명한대로 telnet을 사용하여 가상 위치를 변경했다.

public class MyActivity extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     /* Use the LocationManager class to obtain GPS locations */ 
     LocationManager mlocManager = (LocationManager) 
       getSystemService(Context.LOCATION_SERVICE); 
     LocationListener mlocListener = new CustomLocationListener(
       getApplicationContext()); 
     // Location Providers 
     String locationProvider = LocationManager.NETWORK_PROVIDER; 
     // LocationProvider locationProvider = LocationManager.GPS_PROVIDER; 
     mlocManager 
       .requestLocationUpdates(locationProvider, 0, 0, mlocListener); 
    } 
} 

내 LocationListener : 그래서 onLocationChanged가

public class CustomLocationListener implements LocationListener { 

    private Context m_context; 

    public CustomLocationListener(Context context) { 
     m_context = context; 
    } 

    @Override 
    public void onLocationChanged(Location location) { 
     double latitude = location.getLatitude(); 
     double longitude = location.getLongitude(); 
     String Text = latitude + " " + longitude; 
     Toast.makeText(m_context, Text, Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onProviderDisabled(String provider) { 
     // TODO 
    } 

    @Override 
    public void onProviderEnabled(String provider) { 
     // TODO 
    } 

    @Override 
    public void onStatusChanged(String arg0, int arg1, Bundle arg2) {} 
} 

를 호출되지 않습니다

여기 내 코드입니다. 누구든지 문제를 볼 수 있습니까 ?? 고맙습니다.

+0

휴대 전화에서 GPS 서비스를 사용하도록 설정했는데 위치 정보가 있어야한다고 확인 했습니까? (잠깐 기다리는 것은 확인되지 않습니다. 빈약 한 서비스 지역에있는 경우 30 분이면 충분하지 않을 수도 있습니다 ...) – Sam

+0

질문 : 매니페스트에 지정된 위치 권한을 갖고 있습니까? – dymmeh

+0

@dymmeh 예, 매니페스트에 허가를 추가했습니다. –

답변

1

설정에서 올바른 위치 서비스가 사용 설정되어 있는지 확인하십시오. isProviderEnabled()을 사용하여 선택한 특정 제공 업체가 작동하는지 확인할 수도 있습니다. 또한 매니페스트에 COARSE 또는 FINE 위치 권한이 있는지 확인하십시오.

또한 기기에서 테스트하고 있는지 확인하십시오. 에뮬레이터에서는 네트워크 위치가 전혀 작동하지 않으며 시뮬레이션 도구를 사용하여 새 데이터 포인트를 주입하는 경우에만 GPS가 작동합니다.

+0

불행히도,'isProviderEnabled()'는 광고 된대로 작동하지 않습니다. 참조 : http://stackoverflow.com/questions/10154937/isproviderenabledlocationmanager-network-provider-return-false 및 http://stackoverflow.com/questions/16748300/locationmanager-isproviderenabledlocationmanager-network-provider-is-not-relia – Jules

3

당신이 대신 시도도 휴대 전화가 최고의 공급 업체를 결정하도록하는 대신 단지

String locationProvider = LocationManager.NETWORK_PROVIDER; 

을 설정 할 수 있습니다

또한
Criteria criteria = new Criteria(); 
criteria.setAccuracy(Criteria.ACCURACY_FINE); 
criteria.setAltitudeRequired(false); 
criteria.setBearingRequired(false); 
criteria.setCostAllowed(true); 
criteria.setPowerRequirement(Criteria.POWER_LOW); 
String locationProvider = mlocManager.getBestProvider(criteria, true); 

, 새 위치로 장치를 이동하여 테스트 한? 그렇지 않으면 "onlocationchanged"이벤트가 실행되지 않을 수 있습니다. 몇 년 전에이 물건을 알아 냈을 때 사건을 확인하기 위해 블록을 걸어 다니면서 위도/경도 좌표를 알려주는 "토스트"를 넣었습니다.

+1

에뮬레이터를 "새로운 위치로 이동"하려면 어떻게해야합니까? –

+1

@MathiasLykkegaardLorenzen : 저는 항상 장치로 개발합니다. 그러나 위의 Dan Dinu의 원래 질문에서 링크를 따라 가면 에뮬레이터에서 위치를 시뮬레이션 할 수있는 것처럼 보입니다. 이 기사의 맨 아래로 이동하여 "에뮬레이터 콘솔에서"geo "명령 사용"을 참조하십시오. – CircuitBreaker716

3

내 모습은 Android Bug 57707입니다.

그렇다면 최소한 잠시 동안 장치를 다시 부팅하면 도움이됩니다.

또는 Google Play Services Location API을 사용할 수 있습니다.

Wi-Fi, GPS 및 네트워크 위치 지정을 모두 사용하면 Google Play 서비스 위치 API가 네트워크 위치가 깨졌습니다. GPS 나 Wi-Fi를 사용할 수없는 경우에만 분명합니다.

0

나는 비슷한 문제에 직면 해있다. Try replacing getApplication() with MainAvtivity.this

또한 FINE 및 COARSE 위치에 대한 권한을 유지해야합니다. 타겟 API가 23보다 큰 경우 java 코드의 권한도 처리해야합니다.

관련 문제