2011-01-13 9 views
0

사용자의 위치 (내 위치)를 가져 오는 데 문제가 있습니다. 내 코드Android에서 사용자 위치 표시

double lat; 
double lng; 
LocationManager locationManager; 
String context = Context.LOCATION_SERVICE; 
locationManager = (LocationManager)getSystemService(context); 
String provider = LocationManager.GPS_PROVIDER; 
Location location = locationManager.getLastKnownLocation(provider); 
if(!locationManager.isProviderEnabled(provider)){ 
locationManager.setTestProviderEnabled(provider, true); 
} 
boolean enabled = locationManager.isProviderEnabled(provider); 
if(enabled){ 
     Toast.makeText(LoginActivity.this,"provider enabled",Toast.LENGTH_LONG).show(); 
} 
else{ 
    Toast.makeText(LoginActivity.this,"provider disabled",Toast.LENGTH_LONG).show(); 
} 
if(location!=null){ 
    lat = location.getLatitude(); 
    lng = location.getLongitude(); 
    AlertDialog.Builder ab=new AlertDialog.Builder(LoginActivity.this); 
    ab.setMessage(Html.fromHtml("<b><font color=#ff0000>Location" +"</font></b><br>" 
      +location.toString()+"<br>Latitude: "+lat 
       +"<br>Longitude "+lng)); 
    ab.setPositiveButton("ok",null); 
    Toast.makeText(LoginActivity.this,"You are at  "+location.toString(),Toast.LENGTH_LONG).show(); 
} 
else{ 
    Toast.makeText(LoginActivity.this,"Location not found",Toast.LENGTH_LONG).show(); 
} 

내 문제는 응용 프로그램의 메시지 공급자가 사용하는 동안 내가 null으로 위치를 얻고입니다. 이 코드에서 어떤 문제도 발견하지 못했습니다. 또한 장치에서 테스트 했으므로 공급자가 사용 가능하고 위치를 찾을 수 없음을 보여줍니다.

클래스에 위치 수신기를 구현하지 않았습니다. 내 수업에 위치 수신기를 구현해야합니까?

답변

3

휴대 전화에서 마지막으로 알려진 위치 정보 만 제공됩니다. 이것이 알려진 마지막 위치가없는 경우의 null 인 경우, 다른 방법으로 위치를 수신하려하지 않습니다.

이 안내에 따라 위치 업데이트를 수신하려면 LocationListener를 등록해야합니다. http://developer.android.com/guide/topics/location/obtaining-user-location.html 이렇게하면 전화기가 사용자 위치를 얻고 위치 객체의 형태로 응용 프로그램에 넘겨 줄 수 있습니다.

+0

팁을 주셔서 감사합니다. 코드에 위치 수신기를 추가했는데 위치가 제대로 작동하고 표시되지만 에뮬레이터에서는 작동하지 않습니다. 사용자 위치 알림 기능을 사용할 때 AVD가 종료되지만 장치에서는 정상적으로 작동합니다. –

+0

안녕하십니까. 답변을 수락했음을 표시하는 것을 잊지 마십시오. 그렇지 않으면 질문에 답변을 얻지 못할 것입니다. –

관련 문제