Adi*_*i K 9 android geolocation locationmanager
我使用简单的位置管理对象来获取lastKnownLocation()装置,但得到的空对象在返回任何一个可以告诉我为什么?
代码:
public Location getLocation() {
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
if (locationManager != null) {
Location lastKnownLocationGPS = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
if (lastKnownLocationGPS != null) {
return lastKnownLocationGPS;
} else {
Location loc = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
System.out.println("1::"+loc);----getting null over here
System.out.println("2::"+loc.getLatitude());
return loc;
}
} else {
return null;
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.location);
getLocation();-----calling service
}
Run Code Online (Sandbox Code Playgroud)
权限给出:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
所以缺少什么设置?我已经检查了我的位置服务在设备中,请提供一些工作示例的链接
小智 5
在获取最后一个位置之前,也许您想获取当前位置,检查是否为空或有。如果没有设置最后一个位置,如果你想使用FusedLocationProviderClient 并且在使用它之前添加这个:
实现 'com.google.android.gms:play-services-location:16.0.0'
在您的 build.gradle(Module: app) 上,并在活动创建时调用方法 zoomMyCuurentLocation()。
private void zoomMyCuurentLocation() {
LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
Criteria criteria = new Criteria();
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION);
}
Location location = locationManager.getLastKnownLocation(locationManager.getBestProvider(criteria, false));
if (location != null) {
double lat = location.getLatitude();
double longi = location.getLongitude();
LatLng latLng = new LatLng(lat,longi);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14.f));
Log.d(TAG, "zoomMyCuurentLocation: location not null");
} else {
setMyLastLocation();
}
}
private void setMyLastLocation() {
Log.d(TAG, "setMyLastLocation: excecute, and get last location");
FusedLocationProviderClient fusedLocationClient = LocationServices.getFusedLocationProviderClient(this);
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
fusedLocationClient.getLastLocation().addOnSuccessListener(this, new OnSuccessListener<Location>() {
@Override
public void onSuccess(Location location) {
if (location != null){
double lat = location.getLatitude();
double longi = location.getLongitude();
LatLng latLng = new LatLng(lat,longi);
Log.d(TAG, "MyLastLocation coordinat :"+latLng);
mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 14.f));
}
}
});
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
36069 次 |
| 最近记录: |