2014-04-25 5 views
2

다음 코드를 시도한 안드로이드 응용 프로그램을 개발 중입니다. 또한 내 XML 파일에 모든 persmission을 추가했습니다.getLastKnownLocation은 Null 값을 반환합니다.

public class LbsGeocodingActivity extends Activity { 

private static final long MINIMUM_DISTANCE_CHANGE_FOR_UPDATES = 1; // in Meters 
private static final long MINIMUM_TIME_BETWEEN_UPDATES = 1000; // in Milliseconds 

protected LocationManager locationManager; 

protected Button retrieveLocationButton; 

@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    retrieveLocationButton = (Button) findViewById(R.id.retrieve_location_button); 

    locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

    locationManager.requestLocationUpdates(
      LocationManager.GPS_PROVIDER, 
      MINIMUM_TIME_BETWEEN_UPDATES, 
      MINIMUM_DISTANCE_CHANGE_FOR_UPDATES, 
      new MyLocationListener() 
    ); 

    retrieveLocationButton.setOnClickListener(new OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      showCurrentLocation(); 
     } 
    });   

}  

protected void showCurrentLocation() { 

    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 
    if (location != null) { 
     String message = String.format(
       "Current Location \n Longitude: %1$s \n Latitude: %2$s", 
       location.getLongitude(), location.getLatitude() 
     ); 
     Toast.makeText(LbsGeocodingActivity.this, message, 
       Toast.LENGTH_LONG).show(); 
    } 

} 

private class MyLocationListener implements LocationListener { 

    public void onLocationChanged(Location location) { 
     String message = String.format(
       "New Location \n Longitude: %1$s \n Latitude: %2$s", 
       location.getLongitude(), location.getLatitude() 
     ); 
     Toast.makeText(LbsGeocodingActivity.this, message, Toast.LENGTH_LONG).show(); 
    } 

    public void onStatusChanged(String s, int i, Bundle b) { 
     Toast.makeText(LbsGeocodingActivity.this, "Provider status changed", 
       Toast.LENGTH_LONG).show(); 
    } 

    public void onProviderDisabled(String s) { 
     Toast.makeText(LbsGeocodingActivity.this, 
       "Provider disabled by the user. GPS turned off", 
       Toast.LENGTH_LONG).show(); 
    } 

    public void onProviderEnabled(String s) { 
     Toast.makeText(LbsGeocodingActivity.this, 
       "Provider enabled by the user. GPS turned on", 
       Toast.LENGTH_LONG).show(); 
    } 

} 

} 

그러나 getLastKnownLocation에서 null 값을 얻고 있습니다. 삼성 갤럭시 그랜드에서 프로젝트를 진행하고 있습니다. 내가 실수를하고있는 곳을 알려주십시오.

미리 감사드립니다.

+0

감사합니다. –

답변

1

코드가 완벽 해 보입니다. 이전 GPS 값이 기기에 없기 때문에 Null이 표시된다고 가정합니다. 이렇게하십시오. 장치에 응용 프로그램을로드하고, 하늘로 이동하고, 응용 프로그램을 실행하고, 2 분 동안 기다립니다. 내부 사무실로 돌아온 다음 위의 코드를 실행하십시오.

관련 문제