[英]How to use gps in android with locationManager?
我看了很多关于它的讨论,但是我仍然无法在带有位置管理器的android应用中显示gps坐标:
如果我理解得很好,我必须先做:
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
向位置经理收取费用,之后
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, (LocationListener) this);
更新位置,最后
Location position = locationManager.getLastKnownLocation( LocationManager.GPS_PROVIDER);
问题是这不起作用。 所以我想我不太了解。 请告诉我什么是好的语法。
在此先感谢您的帮助 !
编辑:
我在清单中添加了这些权限
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature android:name="android.hardware.location.network" />
<uses-feature android:name="android.hardware.location.gps" />
<uses-feature android:name="android.hardware.wifi" />
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txtLat = (TextView) findViewById(R.id.textview1);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
}
@Override
public void onLocationChanged(Location location) {
txtLat = (TextView) findViewById(R.id.textview1);
txtLat.setText("Latitude:" + location.getLatitude() + ", Longitude:" + location.getLongitude());
}
@Override
public void onProviderDisabled(String provider) {
Log.d("Latitude","disable");
}
@Override
public void onProviderEnabled(String provider) {
Log.d("Latitude","enable");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.d("Latitude","status");
}
用于获取位置的代码段。
LocationManager locationManager;
locationManager = (LocationManager) getSystemService(context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;// and ask for run time permission
}
Location currentLocation = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (currentLocation != null) {
mypoint = new GeoPoint(currentLocation.getLatitude(), currentLocation.getLongitude());
}
markerForCurrentLocation.setPosition(mypoint);
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 500, 1, this);
@Override
public void onLocationChanged(Location location) {
//Here you will get the current location of your GPS device
mypoint = new GeoPoint(location.getLatitude(), location.getLongitude());
markerForCurrentLocation.setPosition(mypoint);
mapController.animateTo(mypoint);
}
要求运行时位置许可的方法
private void requestLocationPermission() {
//method asking for runtime location permission
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, LOCATION_PERMISSION_CODE);
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.