查找位置:Google Play位置服务或Android平台位置API
我正在尝试获取新导航应用程序的用户位置。 我想经常检查用户的位置,而且必须准确。 我使用示例中的以下代码来获取位置查找位置:Google Play位置服务或Android平台位置API,android,geolocation,gps,location,Android,Geolocation,Gps,Location,我正在尝试获取新导航应用程序的用户位置。 我想经常检查用户的位置,而且必须准确。 我使用示例中的以下代码来获取位置 public class MainActivity extends Activity implements LocationListener { private LocationManager locationManager; private String provider; private TextView a; private TextView b; @Override pu
public class MainActivity extends Activity implements LocationListener {
private LocationManager locationManager;
private String provider;
private TextView a;
private TextView b;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
a = (TextView) findViewById(R.id.a);
b = (TextView) findViewById(R.id.b);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
Location location = locationManager.getLastKnownLocation(provider);
if (location != null) {
System.out.println("Provider " + provider + " has been selected.");
onLocationChanged(location);
} else {
a.setText("Location not available");
b.setText("Location not available");
}
}
@Override
protected void onResume() {
super.onResume();
locationManager.requestLocationUpdates(provider,0, 1, this);
}
@Override
protected void onPause() {
super.onPause();
locationManager.removeUpdates(this);
}
@Override
public void onLocationChanged(Location location) {
Double lat = location.getLatitude();
Double lng = location.getLongitude();
a.setText(String.valueOf(lat));
b.setText(String.valueOf(lng));
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String provider) {
Toast.makeText(this, "Enabled new provider " + provider,
Toast.LENGTH_SHORT).show();
}
@Override
public void onProviderDisabled(String provider) {
Toast.makeText(this, "Disabled provider " + provider,
Toast.LENGTH_SHORT).show();
}
}
但位置坐标不会随着我的移动而更新,我总是得到一个常量值。。。
有没有更好的方法来确定位置?根据android文档,我可以使用Google Play定位服务或android平台定位API来实现这一点。
我检查了这两个示例代码,它实现了LocationListener界面来获取用户位置。那么它们之间的实际区别是什么呢?绝对要使用新的google play位置服务。他们在室内工作比以前的场地经理好得多。我创建了一个使用新的google play定位服务的示例,并定期在后台工作。请查看:
当我使用它时,我发现了两个很好的来源:
- 首先,获取一个
实例,如:GoogleClientApi
GoogleClientApi googleApiClient = new GoogleApiClient.Builder(locationActivity) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build();
- 然后对其调用
,如下所示:.connect()
googleApiClient.connect();
- 然后在回调
,获取最后一个位置,甚至可以根据需要请求位置更新,例如:onConnected
如果您需要请求位置更新,则可以使用呼叫LocationServices.FusedLocationApi.getLastLocation(googleApiClient);
希望有帮助。设置标准。设置精度(标准。精度\u粗略);还有,Gps提供商在室内不能正常工作……它在室外也能正常工作……记住,如果你使用谷歌定位,你的应用程序现在依赖于谷歌自己的封闭源代码的谷歌播放服务。因此,你的应用程序无法与AOSP Android设备配合使用。嘿,伙计,你可以问我一个关于你在GitHub上的项目的问题吗?它只会在您打开应用程序的那一刻发送,甚至在不打开应用程序的情况下,当单元启动时,它也会发送位置?Google play location API是否需要网络连接?如果定期更新GPS位置会怎么样?如果我已将设置设置间隔设置为2000 ms,我应如何进行测试?室内办公室还是室外庭院?