Приложения Android не могут найти местоположение после установки на устройстве - PullRequest
2 голосов
/ 19 ноября 2011

У меня проблема.

Я хочу разрабатывать простые приложения LBS с использованием Android SDK, которые могли бы определить мое текущее местоположение.Я уже сделал один, и попробовал его с помощью эмулятора в Eclipse.

Как я знаю, мне нужно использовать DDMS для отправки значений широты и долготы в эмулятор, и да, это работает.Теперь я хотел бы установить его на моем Android-устройстве, чтобы определить, работает ли он на моем мобильном телефоне.Но он не мог получить мое местоположение.

Интересно, что с ним не так.Определяет ли мое местоположение интернет или провайдер сотовой связи (в обмен на использование DDMS в затмении)?Или мне нужно добавить несколько строк кода, чтобы он работал, или другую конфигурацию?

Это мой код:

public class PilihFitur extends Activity implements OnClickListener {

    private double mylat = 0.0;
    private double mylon = 0.0;
    private LocationManager locationManager = null;
    private Location location = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.pilihfitur);

        View goToMapsButton = findViewById(R.id.toMapsButton);
        goToMapsButton.setOnClickListener(this);
        View goToOrderButton = findViewById(R.id.toOrderButton);
        goToOrderButton.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        switch (v.getId()) {
        case R.id.toMapsButton:
            onChangeLocation();
            break;
        default:
            break;
        }
    }

    private void onChangeLocation(){
        locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 10, new myLocationListener());
        location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
        if(location != null){
            mylat = location.getLatitude();
            mylon = location.getLongitude();
            Toast.makeText(PilihFitur.this, "Lokasi Anda: \nLat: "+mylat+" Lon: "+mylon, Toast.LENGTH_LONG).show();
        }
        else
            Toast.makeText(PilihFitur.this, "Lokasi Tidak Ditemukan", Toast.LENGTH_SHORT).show();
    }

    //Location Listener
    private class myLocationListener implements LocationListener{

        @Override
        public void onLocationChanged(Location arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderDisabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onProviderEnabled(String arg0) {
            // TODO Auto-generated method stub

        }

        @Override
        public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
            // TODO Auto-generated method stub

        }
            }
}

Он работает на эмуляторе, интересно, как заставить его работать на моем мобильном телефоне.Спасибо.

1 Ответ

1 голос
/ 19 ноября 2011

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

@Override
    public void onLocationChanged(Location location) {
    mylat = location.getLatitude();
    mylon = location.getLongitude();
    Toast.makeText(PilihFitur.this, "Lokasi Anda: \nLat: "+mylat+" Lon: "+mylon, Toast.LENGTH_LONG).show();


    }
...