OnLocationChanged()
wird nicht aufgerufen, obwohl requestLocationUpdates hinzugefügt wird und daher zeigt map nicht den aktuellen Standort an.
Karte zeigt immer ihren Standard-Mock-Standort an. Bitte schlagen Sie vor, das Problem zu lösen. Ich habe alle erforderlichen Berechtigungen in der Manifestdatei hinzugefügt.
Hinweis: Ich möchte nicht den letzten Ort mit getLastKnownLocation, sondern ich möchte den aktuellen Standort. Ich habe gewartet, bis das Gerät den Fehler behoben hat. Manchmal benötigt das GPS mehr Zeit als gewöhnlich, aber immer noch keine Verbesserung. Ich bin mit dem Gerät auch fast 10 Kilometer weit gereist. :-).
Hier ist der Code, den ich verwendet habe.OnLocationChanged wird nicht aufgerufen
public class TestingmapActivity extends MapActivity implements LocationListener {
private MapController myMapController;
private MapView mapView;
private LocationManager myLocationManager;
private double m_dLati = 12.913469, m_dLongi = 77.609761;
String provider;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
mapView = (MapView) findViewById(R.id.mapview);
myMapController = mapView.getController();
provider = LocationManager.GPS_PROVIDER;
mapView.setBuiltInZoomControls(true);
mapView.setStreetView(true);
myMapController.setZoom(14); // Zoon 1 is world view
myLocationManager.requestLocationUpdates(provider, 0, 0,this);
setMockLocation(m_dLati, m_dLongi, 500);
}
@Override
protected void onResume() {
startListening();
super.onResume();
}
@Override
protected void onPause() {
stopListening();
super.onResume();
}
@Override
protected void onStop() {
stopListening();
super.onStop();
}
private void startListening() {
if (myLocationManager != null) {
myLocationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER, 0, 0, this);
}
}
private void stopListening() {
if (myLocationManager != null)
myLocationManager.removeUpdates(this);
}
@Override
protected boolean isRouteDisplayed() {
// TODO Auto-generated method stub
return false;
}
private void setMockLocation(double latitude, double longitude,
float accuracy) {
Log.v("", "provider name= " + provider);
myLocationManager.addTestProvider(provider, "requiresNetwork" == "",
"requiresSatellite" == "", "requiresCell" == "",
"hasMonetaryCost" == "", "supportsAltitude" == "",
"supportsSpeed" == "", "supportsBearing" == "",
android.location.Criteria.POWER_LOW,
android.location.Criteria.ACCURACY_FINE);
Location newLocation = new Location(provider);
newLocation.setLatitude(latitude);
newLocation.setLongitude(longitude);
newLocation.setAccuracy(accuracy);
Toast.makeText(
getApplicationContext(),
"Mock: New Latitude = " + newLocation.getLatitude()
+ " New Longitude = " + newLocation.getLongitude(),
Toast.LENGTH_LONG).show();
myLocationManager.setTestProviderEnabled(provider, true);
myLocationManager.setTestProviderStatus(provider,
LocationProvider.AVAILABLE, null, System.currentTimeMillis());
myLocationManager.setTestProviderLocation(provider, newLocation);
}
@Override
public void onLocationChanged(Location location) {
Log.v("LocationListener", "onLocationChanged " + location.getLatitude()
+ " , " + location.getLongitude());
int lat = (int) (location.getLatitude() * 1E6);
int lng = (int) (location.getLongitude() * 1E6);
GeoPoint point = new GeoPoint(lat, lng);
myMapController.animateTo(point);
}
@Override
public void onProviderDisabled(String provider) {}
@Override
public void onProviderEnabled(String provider) {}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {}
}
Manifest Berechtigungen:
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.LOCATION" />
Danke, Biplab
Wie wäre es, die Antwort auf Ihre letzte Frage zu akzeptieren? – user370305
Entschuldigung, das wusste ich nicht. Ich habe die Antwort-Antwort-Schaltfläche für die letzte Frage markiert. Danke für die Antwort. –
Sie überprüfen es auf dem Gerät ?? Und testen Sie es draußen? –