このコードは他の携帯電話でも正常に機能し、Android4.0.3を搭載したSamsungGalaxy S3でも正常に機能しますが、Android4.1.1を搭載したSamsungGalaxyS3では機能しません。
問題は、onLocationChangedメソッドが決して呼び出されないことです。
返されるプロバイダーは「ネットワーク」です
/**
* @see android.app.Application#onCreate()
*/
@Override
public void onCreate() {
locationManager = (LocationManager) this.getSystemService(getApplicationContext().LOCATION_SERVICE);
String provider = getLocationProvider();
locationManager.requestLocationUpdates(provider, 0, 20, locationListener);
}
/**
* @see android.location.LocationListener
*/
LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
currentLocationUser = location;
if (onLocationListener != null) {
onLocationListener.onLocationChanged(location);
}
}
public void onStatusChanged(String provider, int status, Bundle extras) {
}
public void onProviderEnabled(String provider) {
}
public void onProviderDisabled(String provider) {
}
};
public String getLocationProvider() {
Criteria locationCriteria = new Criteria();
locationCriteria.setAccuracy();
return locationManager.getBestProvider(locationCriteria, true);
}