0

我对位置 API 有一些问题。在某些设备中,有时它不会提供任何提供商的位置,但重启手机可以解决问题。另一方面,当没有获得位置时,谷歌地图会立即将您放置在地图中,没有任何问题。

这是代码:

    Intent intent = new Intent(Constants.LOCATION_BROADCAST);
    pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, 0);
    Criteria criteria = new Criteria();
    criteria.setPowerRequirement(Criteria.POWER_HIGH);
    if(android.os.Build.VERSION.SDK_INT > android.os.Build.VERSION_CODES.FROYO){
        criteria.setAccuracy(Criteria.ACCURACY_LOW);
        locationManager.requestSingleUpdate(locationManager.getBestProvider(criteria, true), pendingIntent);
    }
    else {
        criteria.setAccuracy(Criteria.ACCURACY_COARSE);
        locationManager.requestLocationUpdates(locationManager.getBestProvider(criteria, true), 0, 0, pendingIntent);
    }

有什么想法吗?

4

1 回答 1

0

尝试使用所有位置提供程序,看看它是否能解决您的问题,例如

LocationManager lm = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
List<String> allproviders = lm.getAllProviders();
for(String provider : allproviders) {
    myLocationManager.requestLocationUpdates(provider, 5000, 0, this);
}

如果此代码始终有效,那么您只需要弄清楚为什么您的代码忽略了我的代码找到的提供程序。很容易与您的力量或准确性标准有关。

于 2013-04-03T18:20:13.477 回答