我试图使用android studio获取当前位置但总是变量currentLocation具有空值
和android studio在
下划出红线Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mLocationclient);
并要求检查许可 我尝试了两种检查权限的方法 但是相同的结果返回空值
请问谁可以帮帮我? 这是我用过的代码private GoogleApiClient mLocationclient; mLocationclient=new GoogleApiClient.Builder(this) .addApi(LocationServices.API) .addConnectionCallbacks(this) .addOnConnectionFailedListener(this) .build(); mLocationclient.connect(); Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mLocationclient); if(currentLocation==null) Toast.makeText(this,"could not connect",Toast.LENGTH_SHORT).show(); else { LatLng ll=new LatLng( currentLocation.getLatitude(), currentLocation.getLongitude() ); CameraUpdate update=CameraUpdateFactory.newLatLngZoom(ll,50); mMap.animateCamera(update); }
请帮帮我。
答案 0 :(得分:2)
实际上,回答的答案非常有帮助 所以这就是我对这个问题所做的 问题是因为我已经编写了完整代码,用于转到onCreate()实现方法中的当前位置 在这个位置,getLastLocation为null 我做了什么 我jast写了连接
private GoogleApiClient mLocationclient;
mLocationclient = new GoogleApiClient.Builder(this)
.addApi(LocationServices.API)
.addConnectionCallbacks(this)
.addOnConnectionFailedListener(this)
.build();
mLocationclient.connect();
然后我去当前位置听按钮clickListener 像这段代码我已编码到clickListener
LatLng ll=null;
Location currentLocation= LocationServices.FusedLocationApi.getLastLocation(mlocationclient);
if(currentLocation==null)
Toast.makeText(context,"could not connect",Toast.LENGTH_SHORT).show();
else {
ll=new LatLng(
currentLocation.getLatitude(),
currentLocation.getLongitude()
);
}
CameraUpdate update = CameraUpdateFactory.newLatLngZoom(ll, 17);
mMap.moveCamera(update);
答案 1 :(得分:0)
有几个原因让你变空。最有可能的是,它没有先前的位置。请记住,getLastLocation实际上并没有出去并获得一个新的位置;它只抓住你手机上的最后一个。您的手机将从各种来源/方法中获取位置数据,这是正在使用的数据。根据我的经验,它往往长达几分钟。
我会:
1)检查您是否使用过SIM卡 2)检查您的GPS是否在您的手机上工作(谷歌地图是否正常工作?) 3)尝试强制进行位置更新(LocationManager.requestLocationUpdate(...)为seen here)并从那里进行调试。
我相信只要您还支持SDK< 21,检查权限就是警告。