基于网络定位的问题

shikezhan 2012-07-30 10:49:58
想实现一个定位的功能,用GPS可以实现了,但是使用网络来定位却遇到了一点问题.
先贴代码:

private LocationManager locationManager;
locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
if(!locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER)){
......
}
Location location = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);


运行到isProviderEnabled方法是总是返回false,即使我把gprs,gps,wifi都打开了还是如此.
而且运行后总是会调用LocationListener的public void onProviderDisabled(String provider) 方法,并没有调用public void onLocationChanged(Location location)方法

有人知道原因吗?

非常感谢!
...全文
476 18 打赏 收藏 转发到动态 举报
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
shikezhan 2012-08-08
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 的回复:]

你确定都关了还能定位???都关了可以获得基站信息,但是通过基站信息定位是需要访问网络的,如果你确定百度地图给你的不是上一次的定位信息的话
[/Quote]

确实是可以,我系统的版本是2.3.6的好像。另外我不开gprs的情况下也是可以收彩信的,是否跟这个有关?
谢谢!
hvk687 2012-08-07
  • 打赏
  • 举报
回复
你可以用
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
locationManager.getProviders(true),
去看看返回的list中有没有LocationManager.NETWORK_PROVIDER,
nyjsl 2012-08-07
  • 打赏
  • 举报
回复
你确定都关了还能定位???都关了可以获得基站信息,但是通过基站信息定位是需要访问网络的,如果你确定百度地图给你的不是上一次的定位信息的话
shikezhan 2012-08-06
  • 打赏
  • 举报
回复
[Quote=引用 14 楼 的回复:]

我已经说了那个定位没啥用
[/Quote]

怎么会没用?我感觉应该也是能定位的,只是定位的结果误差会大一点。
另外,我用百度地图的时候我把gprs,gps,wifi全部关闭了,还是能定位,结果还不错,误差100m左右。
nyjsl 2012-08-06
  • 打赏
  • 举报
回复
我已经说了那个定位没啥用
shikezhan 2012-08-06
  • 打赏
  • 举报
回复
我已经说了用GPS定位是可以的,程序可以正常,也能获取数据。
试了下用LocationManager.NETWORK_PROVIDER 就不行。
对于comeoverjava的回复,有两个疑问:
1.LocationManager.NETWORK_PROVIDER和手机GPRS定位是一回事吗?如果不是一回事,那LocationManager.NETWORK_PROVIDER是用来干嘛的?

2.关于public void onLocationChanged(Location location)方法,如果我在注册时:locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);指定了第二个参数的值,应该是无论位置有没有变化,每间隔1000毫秒onLocationChanged方法都会执行一次
深夜深几许 2012-08-02
  • 打赏
  • 举报
回复
在一个网络定位是手机GPRS定位,是从google服务器取得的gson数据,定位包括,gps定位,基站定位,网络定位的
深夜深几许 2012-08-02
  • 打赏
  • 举报
回复

public void onProviderDisabled(String provider)

方法的意思是,定位服务不能用,比如gps定位,network定位,在GPS中有一个方法是可以取得最佳的定位的,方法也是有个provider的,



并没有调用public void onLocationChanged(Location location)方法

这个方法是当用户定位的位置发生改变的时候才会触发的,楼主,你还是去网上多找些例子看看的
jiangyue2780 2012-08-01
  • 打赏
  • 举报
回复
isProviderEnabled(LocationManager.GPS_PROVIDER)
你有没有试过?
nyjsl 2012-08-01
  • 打赏
  • 举报
回复
这个定位没啥用,基站定位是基于基站信息的,可以获得手机信息访问google的解析器来获得基站信息进行定位
hzyidu58 2012-08-01
  • 打赏
  • 举报
回复
网络定位分基站和WIFI,如果在同一个基站的范围,定位数据肯定一样,WIFI也类似
j_f0001 2012-08-01
  • 打赏
  • 举报
回复
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);这块设置成了只使用基站定位,你设置成GPS定位试试
j_f0001 2012-08-01
  • 打赏
  • 举报
回复
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 0, this);
你这块只设置了通过基站定位,把它设置成GPS定位试试,肯定可以了
KPRF2009 2012-07-31
  • 打赏
  • 举报
回复
哈哈,和我当时一样,忘记加限权了
AMinfo 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 的回复:]

引用 3 楼 的回复:

加行这个试试
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />

加了还是不行,郁闷了...
[/Quote]

手机上在设置里面是否开启了模拟地点?

方法:设置 -> 应用程序设置 -> 开发 -> 允许模拟地点
shikezhan 2012-07-31
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 的回复:]

加行这个试试
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
[/Quote]
加了还是不行,郁闷了...
chenzr83 2012-07-31
  • 打赏
  • 举报
回复
加行这个试试
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
shikezhan 2012-07-30
  • 打赏
  • 举报
回复
对了 已经添加了一下权限:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION"></uses-permission>
内容概要:本文围绕“面向高精度电流控制的PMSM多参数PSO辨识模型研究”,系统阐述了基于Simulink的永磁同步电机(PMSM)多参数辨识方法,重点采用粒子群优化算法(PSO)实现对电机关键内部参数的高精度辨识。研究构建了完整的PMSM控制系统仿真模型,结合智能优化算法,解决了传统参数辨识中精度低、收敛慢的问题,有效提升了电流环控制的动态性能与稳态精度。该方法特别适用于对控制精度和响应速度要求较高的工业应用场景,如高性能伺服系统、电动汽车驱动系统等,具有较强的工程实用价值和科研参考意义。文中提供了完整的Simulink仿真模型与配套代码,确保了研究内容的可复现性和实践操作性。; 适合人群:具备电机控制、自动化或电气工程等相关专业背景,熟悉MATLAB/Simulink仿真环境,从事电机驱动系统研发、控制算法设计或相关领域科研工作的工程师及研究生,尤其适合工作1-5年、希望深入理解先进参数辨识技术的研发人员。; 使用场景及目标:①开展高精度PMSM控制系统的设计与参数辨识研究;②学习并掌握PSO等智能优化算法在电机系统参数辨识中的具体实现与调优技巧;③完成学术论文复现、科研项目验证、毕业设计或工程原型开发,提升对现代电机控制核心技术的理解与应用能力。; 阅读建议:建议读者结合提供的Simulink模型与源代码进行动手实践,按照文档逻辑逐步搭建与调试仿真系统,重点关注PSO算法与电机模型的交互机制、目标函数设计及参数收敛过程,通过对比不同工况下的辨识结果,深入理解算法性能与控制精度之间的内在联系。

80,488

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧