2014-04-05 3 views
0

GPS를 사용하여 현재 위치를 얻으려고합니다.GPS를 사용하여 안드로이드에서 내 현재 위치 얻기

LocationManager manager = (LocationManager)this. 
      getSystemService(Context.LOCATION_SERVICE); 

    Location loc = manager.getLastKnownLocation(
      LocationManager.GPS_PROVIDER); 

    loc=manager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

    double la=loc.getLatitude(); 
    double lon=loc.getLongitude(); 

하는 정의 수정 좌표, 또는 내 안드로이드 스마트 폰에서 테스트 할 때, 그것은 작동하지 않습니다와 AVD 에뮬레이터를 사용하여 :

다음 코드를 감안할 때.

Android Studios에서 에뮬레이터로 디버깅하려고 시도하는 동안 loc.getLatitude에서 멈추는 경우가 있습니다. 아래 그림과 같이 전반적으로, 말에, 나는 자바 RuntimeException을 가지고 :

java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.social.gps/com.example.social.gps.MainActivity}: java.lang.NullPointerException 
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195) 
     . 
     . 
     . 

내가 loc 참조가 null 그 때문에 같아요.

나는이 : 매니페스트

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

합니다.

어떻게 작동시킬 수 있습니까?

+0

게시하여 스택 트레이스의 나머지 부분을하시기 바랍니다 검색하지 않습니다. 여기에 'NullPointerException'은 의미가있을 수 있습니다 - 전달 된 컨텍스트가 null 인 경우 ... – ChuongPham

답변

0

유무 DDMS의 prespective과 emulator.Because 에뮬레이터에 수동으로 위도와 경도를 보내는 위치 상태

0

loc 변수가 null이기 때문입니다. 이는 캐시에 마지막 위치가 없을 때 발생합니다.

getLastKnownLocation() 현재 위치를 반환하지 않으며, 이전에 귀하 또는 다른 응용 프로그램에서 얻은 위치를 반환합니다. 현재 위치를 받으려면 locationManager.requestLocationUpdates()을 사용하여 위치 업데이트를 구독해야합니다. 사용자가 활성화하고 콜백을 통해 위치 업데이트를 보내면 언급 된 공급자 (GPS, 네트워크 또는 수동)가 시작됩니다.

+0

하지만 지오 픽스 명령을 사용하여 에뮬레이터에 위치를 추가했으며 android manuall에 따르면이 위치를 얻는 방법은 – user2162550

+0

입니다. 'getLastKnownLocation()'이 작동하면 일부 응용 프로그램은 이전에 위치를 가져와야합니다. 지오 픽스가 마지막 위치를 직접 설정하지 않고 LocationManager update 명령을 사용하지 않는다고 가정합니다. 이러한 업데이트를 받고 마지막 위치 캐시에 저장하려면 구독해야합니다. –

+0

@ user2162550 위치 정보를 사용하여 위치를 보내면 위치 관리자는 아무도 업데이트를 구독하지 못하고 캐시를 업데이트하지 않고 삭제한다는 것을 알게됩니다. –

관련 문제