Location は、このコードから常に null を返します。私のコードをチェックして、何が悪いのか教えてください。デバッグ モードでプロジェクトを実行すると、provider="network" ですが、場所は常に null です。DDMS を使用して緯度と経度の値を送信しましたが、変化しません。何が問題なのかわからない
onCreate メソッドのこの部分
lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE);
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW);
provider = lm.getBestProvider(criteria, true);
location = lm.getLastKnownLocation(provider);
updateLocation(location);
onResume メソッドのこの部分
@Override
protected void onResume() {
super.onResume();
lm.requestLocationUpdates(provider, 5000, 10, this);
}
私は LocationListener を使用しています (MapActivity は LocationListener を実装しています)。これは onLocationChanged 部分です
public void onLocationChanged(Location location) {
updateLocation(location);
}
最後に、これは私の updateLocation() です
private void updateLocation(Location location){
if (location != null) {
Double lat = location.getLatitude()*1E6;
Double lng = location.getLongitude()*1E6;
point = new GeoPoint(lat.intValue(), lng.intValue());
mapView = (MapView) findViewById(R.id.mapView);
mc = mapView.getController();
mapView.setBuiltInZoomControls(true);
//List<Overlay> overlays = mapView.getOverlays();
myLocOverlay = new MyLocationOverlay(this, mapView);
//overlays.add(myLocOverlay);
mapView.getOverlays().add(myLocOverlay);
myLocOverlay.enableMyLocation();
myLocOverlay.runOnFirstFix(new Runnable() {
public void run() {
mc.animateTo(myLocOverlay.getMyLocation());
}
});
mc.setZoom(15);
mapView.invalidate();
}
}
必須の権限を付与し、Google マップ ライブラリを使用しています
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-library
android:name="com.google.android.maps"
android:required="true" >
</uses-library>