我通过GPS用locationmanager根本获取不到位置 不会回调onLocationChanged,室内室外都不行,移动了也不行,用的真机测试
private LocationListener listener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
LogUtil.e("onLocationChanged");
if (location == null) {
return;
}
ToastUtil.showShortToast(MyApplication.getInstance().getApplicationContext(),"获取位置"+location.getLatitude() + "");
//纬度
LogUtil.e(location.getLatitude() + "");
//经度
LogUtil.e(location.getLongitude() + "");
sendLocation(location.getLatitude() + "", location.getLongitude() + "");
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
/*即使某个供应商是enable,也不表示可以从他处监听位置信息,例如GPS是enable的,但是搜索不到卫星,
状态包括有:OUT_OF_SERVICE,TEMPORARILY_UNAVAILABLE和AVAILABLE*/
}
@Override
public void onProviderEnabled(String provider) {
/* 当用户在系统设置中,开启某个位置供应商*/
}
@Override
public void onProviderDisabled(String provider) {
/*当用户在系统设置中,关闭某个供应商。如果某个供应商是disabled,当通过requestLocationUpdate()
向系统注册监听位置,马上就会触发onProviderDisabled()。*/
}
};
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, listener);
一般gps在国内很多都开不了,用自带的话,用网络定位吧....
locationProvider = LocationManager.NETWORK_PROVIDER;
locationManager.requestLocationUpdates( locationProvider, 0, 0, locationListener );
1:你用的的是GPS定位,先确定手机是否支持GPS定位。
//获取所有可用的位置提供器
List providers = locationManager.getProviders(true);
if(providers.contains(LocationManager.GPS_PROVIDER)){
}else if(providers.contains(LocationManager.NETWORK_PROVIDER)){
}else{
Toast.makeText(this, "没有可用的位置提供器", Toast.LENGTH_SHORT).show();
return ;
}
2:支持GPS后,第一次定位需要长达五分钟之久,后面定位就快了。
3:GPS定位需要在空旷的地方。
我手机也不行,然后切换了下系统语言。就可以了,不知道为啥