2012-04-17 4 views
0

다음은 현재 위치를 찾는 코드입니다. 그러나 검색 버튼을 누른 후에는 아무 것도 화면에 표시되지 않습니다.
adb를 재설정하고 에뮬레이터 제어에서 수동으로 데이터를 보내려고했습니다. 그러나 에뮬레이터 컨트롤을 사용하여 데이터를 보내면 에뮬레이터가 다시 시작되지만 홈 화면이 표시되지 않습니다.
도와주세요. 미리 감사드립니다. 당신이 코드에서에뮬레이터 화면에 메시지가 표시되지 않습니다.

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; 

    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() { 

      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(); 
     } 

    } 
} 

답변

1

당신은 현재 위치를 (이것은 당신이 emulator control를 통해 수동으로 위치를 밀어 필요로하기 때문이다) 수신되지 않을 수 있습니다.

showCurrentLocation()에서도 대소 문자를 구분하고 위치 객체가 null인지 아닌지 확인하십시오.

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(); 
    }else{ 
     Toast.makeText(LbsGeocodingActivity.this, "location is null", 
       Toast.LENGTH_LONG).show(); 
    } 
} 
+0

하면, 그것은 "위치가 null"여기서 다음 probm는 GPS 내가 에뮬레이터 –

+0

실 거예요 작업을 GPS를 생각 작동하지 않습니다,하지만 당신은 에뮬레이터 제어 할 수있는 권리를 보여주고있다 어디 수동으로 테스트 목적을 위해 당신의 lat ans 오래 수동으로 밀어 넣을 수 –

+0

에뮬레이터 컨트롤에 대한 링크를 추가했습니다 –

0

우리가 처음으로 위치 센서를 사용하려고 시도했을 때 비슷한 문제가있었습니다. GPS에서 최상의 결과를 얻으려면 두 가지가 가장 도움이됩니다.

에뮬레이터에서 Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);으로 인해 강제 종료됩니다.

그리고 가장 중요합니다. 텔넷을 통해 GPS 데이터를 입력하는 것이 훨씬 안정적입니다. telnet localhost 5554 (포트는 에뮬레이터 창 제목에서 볼 수 있습니다. 새로운 GPS 수정에 대한 명령은 다음과 같습니다 geo fix lat lng

관련 문제