2011-12-15 7 views
1

위치를 찾기 위해 내 응용 프로그램을 사용했지만 일부 코드가 변경되어 현재 위치가 항상 null을 반환합니다. 부끄러 웠지만 어떤 코드를 변경했는지 확신 할 수는 없지만 단지 작동하지 않을 수 있습니다.안드로이드 위치는 항상 null

왜 이것이 null을 반환하는지 볼 수 있습니까? 나는 기쁨으로 하루 종일 일하고 있습니다. 아래 코드 : 당신은 모두 무슨 일이 일어나고 있는지 볼 수 있도록 나는 모든 권한을 추가하고 내 코드를 단순화

....imports.... 

public class Clue extends Activity { 

public static double latitude; 
public static double longitude; 
Criteria criteria; 
LocationManager lm; 
LocationListener ll; 
Location location; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
    setContentView(R.layout.questions); 

    criteria = new Criteria(); 
    criteria.setAccuracy(Criteria.ACCURACY_FINE); 
    lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE); 
    ll = new MyLocationListener(); 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 

areWeThereYet(); 
} 

    private void areWeThereYet() 
    { 
     if(weAreThere()) 
     { 
     showMsgBox("There"); 
    } 
    else if(location!=null) 
     toastMsg("not there"); 
     } 

    private boolean weAreThere() { 

location = getLocation(); 
if (location!=null) 
{ 
longitude = location.getLongitude(); 
latitude = location.getLatitude(); 
return inCorrectPlace(question); 
} 
else 
{ 
    toastMsg("Location not ready yet"); 
    return false; 
} 
} 

private Location getLocation() { 
    lm.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, ll); 
     return lm.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
} 

} 

public class MyLocationListener implements LocationListener 
{ 
    public void onLocationChanged(Location loc) 
    {   
     Clue.longitude = loc.getLongitude(); 
     Clue.latitude = loc.getLatitude(); 
    } 
} 

.

감사합니다,

+0

미래를위한 제안 : 버전 관리에 코드 삽입! –

+0

나는 보통한다, 이것은 조금 옆의 프로젝트이었다. 그래서 나는 성가 시게하지 않았다. S는 내가 지금했다라고해도 좋겠다고 생각한다! –

+1

장치 또는 에뮬레이터에서이 작업을 수행하고 있습니까? 장치 인 경우 GPS가 꺼져 있지 않은지 확인하십시오. 에뮬레이터가 있다면 locationManager가 반환 할 위치를 가질 수 있도록 위치를 적어도 한 번 보내려면 DDMS를 사용해야한다고 생각합니까? – Kaediil

답변

1

처음에서 onCreate에서 활동을 시작할 때 아직 준비가되지 때문에이 null입니다. 결국 onLocationChanged를 통해 위치 업데이트를 가져 오면 Clue 클래스에 위도/경도를 설정하지만 그게 전부입니다 ... areWeThereYet 메서드를 다시 호출하지 않습니다. 위치를 업데이트 한 후에 해당 메소드를 호출해야합니다.

+0

버튼을 클릭 할 때까지 기다렸다가 잠시 기다렸다가 null이 반환됩니다. 어떤 아이디어? –

+0

위치가 여전히 null로 표시되는 이유는 무엇입니까? –