Yves B.
Danke, werde ich gleich mal ausprobieren. Nur finde ich es leider ein wenig schade, dass es keine einfachere Möglichkeit gibt, denn ich möchte bloss die aktuelle Position zur Zeit wo der Button geklickt wurde auslesen. Listener werden eigentlich verwendet, um über einen Zeitraum hinweg ein Objekt zu überwachen.
Das ist richtig, der LocationListener überwacht deine GPS-Hardware und meldet sich zurück, wenn die Position ermittelt bzw. geändert wurde.
Schließlich hat deine GPS-Hardware nicht zum Zeitpunkt des Buttonklicks direkt schon deinen Standort ermittelt, sondern muss erst einen Fix abwarten.
Hier ein Snippet aus einer meiner Anwendungen:
in onCreate():1locManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
2 if (!locManager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
3 AlertDialog.Builder noGPS = new AlertDialog.Builder(this);
4 noGPS.setTitle("GPS nicht eingeschaltet");
5 noGPS.setCancelable(false);
6 noGPS.setMessage("GPS ist nicht eingeschaltet, die Anwendung wird nun beendet!");
7 noGPS.setPositiveButton("Schließen", new DialogInterface.OnClickListener() {
8
9 public void onClick(DialogInterface dialog, int which) {
10 finish();
11 }
12 });
13 noGPS.show();
14 } else {
15 startTime = new Date();
16 locManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 5000, 0, this);
17 userWait = ProgressDialog.show(this, "", "Position wird bestimmt...", true, true, new DialogInterface.OnCancelListener() {
18
19 public void onCancel(DialogInterface dialog) {
20 onPause();
21 }
22 });
23 }
1@Override
2 public void onPause() {
3 super.onPause();
4 locManager.removeUpdates(this);
5 finish();
6 }
7
8public void onLocationChanged(Location location) {
9 if (location != null) {
10 SimpleDateFormat dateFormat = new SimpleDateFormat("dd.MM.yyyy|HH:mm:ss");
11 Date endTime = new Date();
12 String dateTimeString = dateFormat.format(endTime);
13 Double dLatitude = location.getLatitude();
14 Double dLongitude = location.getLongitude();
15 et_latitude.setText(dLatitude.toString());
16 et_longitude.setText(dLongitude.toString());
17 et_datetime.setText(dateTimeString);
18 btn_savePosition.setEnabled(true);
19 locManager.removeUpdates(this);
20 Integer secsTillFix = Math.round((endTime.getTime() - startTime.getTime()) / 1000);
21 et_secsTillFix.setText(secsTillFix.toString() + " s");
22 userWait.dismiss();
23 }
24 }
Gruß Oli - Diese Nachricht wurde mit einer Taschenlampe in das offenliegende Ende eines Glasfaserkabels gemorst! - Follow me on Twitter - AndroitPIT-Regeln
Empfohlener redaktioneller Inhalt
Mit Deiner Zustimmung wird hier ein externer Inhalt geladen.
Mit Klick auf den oben stehenden Button erklärst Du Dich damit einverstanden, dass Dir externe Inhalte angezeigt werden dürfen. Dabei können personenbezogene Daten an Drittanbieter übermittelt werden. Mehr Infos dazu findest Du in unserer Datenschutzerklärung.