2012-04-17 3 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() и проверьте, является ли объект местоположения нулевым или нет, как показано ниже.

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

вы правы, это показывают «расположение нуля», где есть probm то, GPS не работает я думаю –

+0

на эмуляторе GPS не будет работать, но у вас есть контроль над эмулятором где вы можете нажать латинский длинный вручную для целей тестирования. –

+0

добавлена ​​ссылка для управления эмулятором. –

0

При первых попытках использования датчиков местоположения у нас были подобные проблемы. Две вещи помогают больше всего, чтобы получить наилучшие результаты от GPS.

На эмуляторе Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); вызывает много сил закрытия.

И самое главное. Он гораздо более стабилен для ввода данных gps через telnet. telnet localhost 5554 (Вы можете увидеть порт в окне эмуляторов заголовка). Команда для нового ГСПА является: geo fix lat lng

Смежные вопросы