大家好!最近在做一个android的应用里面用到GPS的内容,过程中遇到问题!
贴个代码: LocationManager locationManager;
String serviceName = Context.LOCATION_SERVICE;
locationManager = (LocationManager) this.getSystemService(serviceName);
// 查找到服务信息
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗
String provider = locationManager.getBestProvider(criteria, true); // 获取GPS信息
Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
if(location==null){
location = locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
}
if (location != null) {
double latitude = location.getLatitude();
double longitude= location.getLongitude();
Address = ConvertUtil.getAddress(longitude, latitude);
}else{
Address =" ";
}
// 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
locationManager.requestLocationUpdates(provider, 100 * 1000, 500, new LocationListener(){
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
});
我们Criteria 去获取最佳的Provider,然后去用实现监听位置的改变。
但是在真机上面,我们直接这么去获取的话,获取到的Location会是一个Null,权限注册什么的都没有问题,现在我就非常不解,我们应该怎么去获取一个Location,或者说是获取一个不为NULL的Location,还是我上面这个方法本身就不对?有没有更好的方法,
贴个代码: LocationManager locationManager;
String serviceName = Context.LOCATION_SERVICE;
locationManager = (LocationManager) this.getSystemService(serviceName);
// 查找到服务信息
Criteria criteria = new Criteria();
criteria.setAccuracy(Criteria.ACCURACY_FINE); // 高精度
criteria.setAltitudeRequired(false);
criteria.setBearingRequired(false);
criteria.setCostAllowed(true);
criteria.setPowerRequirement(Criteria.POWER_LOW); // 低功耗
String provider = locationManager.getBestProvider(criteria, true); // 获取GPS信息
Location location = locationManager.getLastKnownLocation(provider); // 通过GPS获取位置
if(location==null){
location = locationManager.getLastKnownLocation(locationManager.NETWORK_PROVIDER);
}
if (location != null) {
double latitude = location.getLatitude();
double longitude= location.getLongitude();
Address = ConvertUtil.getAddress(longitude, latitude);
}else{
Address =" ";
}
// 设置监听器,自动更新的最小时间为间隔N秒(1秒为1*1000,这样写主要为了方便)或最小位移变化超过N米
locationManager.requestLocationUpdates(provider, 100 * 1000, 500, new LocationListener(){
@Override
public void onLocationChanged(Location arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
});
我们Criteria 去获取最佳的Provider,然后去用实现监听位置的改变。
但是在真机上面,我们直接这么去获取的话,获取到的Location会是一个Null,权限注册什么的都没有问题,现在我就非常不解,我们应该怎么去获取一个Location,或者说是获取一个不为NULL的Location,还是我上面这个方法本身就不对?有没有更好的方法,
解决方案 »
- 求解:android 4.0读写HID设备
- "美丽说"应用程序图片错位效果如何实现的
- 关于User-Agent ,关于XML解析!在线等~~~
- ArcGIS api for android
- ANDroid游戏中小球不会移动,求指点啊!
- Ophone上如何建立自定义分辨率的模拟器
- android 登录界面 键盘弹出问题
- android 学习书籍推荐 求指导
- 关于LruCache的小疑惑
- Android Studio使用okhttp时出错,显示错误信息:无法访问ByteString,找不到okio.ByteString的类文件
- 重写ArrayAdapter问题
- 关于textview里的网络地址,请教一下
相应速度快的话也可采用基站定位(缺点:偏差比gps能大点).
if (status.isProviderEnabled(LocationManager.GPS_PROVIDER)|| status.isProviderEnabled(LocationManager.NETWORK_PROVIDER)) {
// 如果GPS或網路定位開啟
}2.當你的app啟動的時候,一開始用LocationManager,除了getLastKnownLocation,通常一開始式要佈道位置的,因為一開始的初始定位沒有那麼快,所以真正取得位置都會是在 onLocationChanged() 這個方法裡面。locationManager.requestLocationUpdates(provider, 100 * 1000, 500, new LocationListener(){
@Override
public void onLocationChanged(Location arg0) {
// 等到確認有定位資訊或是定位資訊改變會呼叫這個方法
}
@Override
public void onProviderDisabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onProviderEnabled(String arg0) {
// TODO Auto-generated method stub
}
@Override
public void onStatusChanged(String arg0, int arg1, Bundle arg2) {
// TODO Auto-generated method stub
}
});