Настройка положения GPS на эмуляторе Android - PullRequest
1 голос
/ 29 ноября 2011

Я пытаюсь установить позицию GPS на моем эмуляторе с помощью telnet и с использованием перспективы DDMS.Кажется, ничего не работает, потому что, если вы думаете, мой код выводит на экран "Не удалось получить местоположение GPS".Приложение работает, когда я запускаю его на телефоне.Код:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    tvLat = (TextView) findViewById(R.id.tvLat);
    tvLongi = (TextView) findViewById(R.id.tvLongi);
    tvLat.setText("test");
    LocationManager lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
    Criteria crit = new Criteria();
    providers = lm.getBestProvider(crit, false);
    Location loc = lm.getLastKnownLocation(providers);
    if (loc != null) {
        x =  loc.getLatitude();
        y =  loc.getLongitude();

        t = "Current latitude: " + x;
        t1 = "Current longitude: " + y;
        tvLat.setText(t);
        tvLongi.setText(t1);
    } else {
        tvLat.setText("Couldn't get a GPS location");
    }

}

@Override
public void onLocationChanged(Location loc) {
    // TODO Auto-generated method stub
    x = loc.getLatitude();
    y = loc.getLongitude();
    t = "Current latitude: " + x;
    t1 = "Current longitude: " + y;

    tvLat.setText(t);
    tvLongi.setText(t1);

}

@Override
public void onProviderDisabled(String arg0) {
    // TODO Auto-generated method stub
    tvLat.setText("GPS disabled");
}

@Override
public void onProviderEnabled(String arg0) {

    tvLat.setText("GPS enabled");
}

@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {


}
Permissions:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>

1 Ответ

3 голосов
/ 29 ноября 2011

Из DDMS Perspective из вкладки Emulator Control, расположенной в нижнем левом углу Eclipse, вы получаете Locations Controls.Оттуда вы можете ввести долготу и широту и нажать кнопку «Отправить», чтобы отправить эти координаты в выбранный эмулятор.

Возможно, вы все равно не сможете найти последнее известное местоположение, но при этом будет запущен метод onLocationChanged().

РЕДАКТИРОВАТЬ: Я вижу, что ваш класс реализует LocationListener.Вы зарегистрировали свой класс для изменения местоположения, используя lm.requestLocationUpdates()?

EDIT2: Я имею в виду:

lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 0, 0,this);
lm.requestLocationUpdates(LocationManager.GPS, 0, 0,this);
...