首先:这是我关于Stackoverflow的第一个问题所以请告诉我,如果我犯了任何错误:)
我希望我的Activity在每次启动时获取用户位置。
我不需要定期更新,因此我尝试使用requestSingleUpdate
。
完成本教程后:
http://androidexperinz.wordpress.com/2012/04/19/current-location-update/
第一天它完全适用于三星Galaxy S2和三星Galaxy Tab 3,但是当我今天尝试时,S2没有加载位置,接收器永远不会被解雇, 虽然我没有更改我的代码,但设置完全相同。 我还重新启动了手机并重新安装了应用程序。 仍然没有区别,但它仍然在平板电脑上工作。
我注意到在不同的论坛中报告了Location API存在许多问题,因此它可能是Google Location API中的一个类似于此的错误: https://code.google.com/p/android/issues/detail?id=57707
或者我的设置或代码(下方发布)有问题:
ProgressBar PBLoad;
@Override
public void onStart()
{
super.onStart();
boolean isGPSEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE);
boolean dataConnection= cm.getActiveNetworkInfo()!=null;
int resultCode =GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (!isGPSEnabled||!dataConnection||ConnectionResult.SUCCESS != resultCode)
{
//Show Dialog and ask user to enable GPS or Internet
}
else
{
registerReceiver(singleUpdateReceiver,new IntentFilter(SINGLE_LOCATION_UPDATE_ACTION));
Intent updateIntent = new Intent(SINGLE_LOCATION_UPDATE_ACTION);
singleUpatePI = PendingIntent.getBroadcast(this, 0, updateIntent, PendingIntent.FLAG_UPDATE_CURRENT);
locationManager.requestSingleUpdate(LocationManager.GPS_PROVIDER, singleUpatePI);
PBLoad.setVisibility(View.VISIBLE);
}
}
这是接收者:
protected BroadcastReceiver singleUpdateReceiver = new BroadcastReceiver()
{
@Override
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(singleUpdateReceiver);
String key = LocationManager.KEY_LOCATION_CHANGED;
Location location = (Location)intent.getExtras().get(key);
if (location != null) {
onLocationReceived(location);
}
locationManager.removeUpdates(singleUpatePI);
}
};
答案 0 :(得分:-1)
是的,事实证明这是google api的问题。我等了几个小时才重新启动设备,然后就可以了。