我已经完成了这个代码,我要求更新位置。我想知道我是否正确实现了它。一旦页面打开,我请求更新(优先于网络通过gps)...然后我在功能onlocationchanged中显示位置。我想问一下是否有可能在内部onlocationchanged我得到位置null类似当我getlastknownlocation? 我停止使用ghetlastknownlocation,因为它返回nulll有时和错误的值。
boolean isGPSEnabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER); boolean isNetworkEnabled = lm .isProviderEnabled(LocationManager.NETWORK_PROVIDER); if (!isGPSEnabled && !isNetworkEnabled) { ProgressBar progress = (ProgressBar)findViewById(R.id.progress); progress.setVisibility(View.INVISIBLE); Utilities.showAlertDialog2(RegionalStoresMeActivity.this, "", ""+getResources().getString(R.string.nothing_enabled), false); } else if(isNetworkEnabled){ // lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this); lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this); } else if(isGPSEnabled ) { lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this); }
答案 0 :(得分:0)
onLocationChanged()方法仅在具有适当纬度和经度的位置更新时被调用。它可能是零到最轻微的可能性,但我从来没有经历过它。
你做得不错,但我想提出一个建议。 考虑一个场景 -
已启用网络提供商,并且您已请求位置更新。但由于某种原因,它不会返回位置更新(在很多情况下,位置提供程序不会返回位置更新,也不是必须返回位置更新。)
现在根据你的代码,它不会检查GPS提供商cos的“else if(isGPSEnabled)”。所以我建议你只在下面的“if”语句中实现它
if( isNetworkEnabled )
lm.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,0,0, this);
if( isGPSEnabled )
lm.requestLocationUpdates(LocationManager.GPS_PROVIDER,1,0, this);