2013-04-02 2 views
0

저는 Android 개발을 처음 접했고 Android 애플리케이션에서 버튼을 누르고 좌표 (경도 및 위도)를 가져 오는 메소드를 만들려고했습니다. 그러나 버튼을 누르면 프로그램이 에뮬레이터에서 작동하지 않습니다.버튼에서 좌표 가져 오기 누르기가 작동하지 않습니다.

나는 아마 여기 뭔가 잘못하고 있습니다. Callstack을 살펴보면 도움이되지 않았습니다. 그것은 단순히 쓸데없는 정보가 많았습니다.

어떻게 수정합니까?

public void onLocateByGMapButtonClick() { 
    LocationManager mloc = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 
    List<String> providers = mloc.getAllProviders(); 
    Location loc = new Location(providers.get(0)); 
    double loTude = loc.getLongitude(); 
    double laTude = loc.getLatitude(); 

    String newCoords = loTude + "," + laTude; 
    location.setText(newCoords); 
    Toast.makeText(this.getBaseContext(),"Location have been updated!",5); 
} 

답변

0

응용 프로그램이 손상되는 이유는 아마도 null pointer exception이 수신 되었기 때문일 수 있습니다.

GPS 수정 프로그램이 즉각적인 과정이 아니라는 것을 이해해야합니다. getLaskKnownLocation 메서드 (null도 반환 할 수 있음)를 사용하지 않으면 작업에 시간이 걸릴 수 있습니다. .

Location loc = lm.getLastKnownLocation(provider); 

또는 즉시 새 위치 업데이트가 도착하는대로 발사하는 LocationListener을 구현 :

그래서 당신은 또는 사용하기 위해 필요.

자습서 :http://www.vogella.com/articles/AndroidLocationAPI/article.html

+0

하지만 때마다 사용자에게 위치 변경 사항을 추적하지 않습니다. 버튼을 누를 때 현재 위치에 대한 좌표 집합을 얻고 싶습니다. – OmniOwl

+0

그래서 LocationListener를 만들고, 새 업데이트가 도착할 때까지 기다렸다가 시작한 후 업데이트를 수신 대기합니다. locationManager.removeUpdates (locationListener); –

+0

음 .. 좋아. 현재 좌표계를 얻는 데 너무 복잡해 보입니다. 감사. – OmniOwl

관련 문제