锁定老帖子 主题:GPS的那点儿事儿~!so easy~
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-10-28
最近发现微信等应用都有找附近的人 的新功能。 遍开始想看看gps
于是找了些网上的代码,自己试了试:
public class GPS_testActivity extends Activity { /** Called when the activity is first created. */ private LinearLayout mainView=null; private TextView infoView=null; private TextView locationView=null; private LocationManager locationManager=null; private LocationListener locationListener=null; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mainView=new LinearLayout(this); mainView.setOrientation(LinearLayout.VERTICAL); infoView=new TextView(this); mainView.addView(infoView); locationView=new TextView(this); mainView.addView(locationView); setContentView(mainView); locationManager_init(); } /*locationManager初始化*/ void locationManager_init(){ locationManager =(LocationManager)this.getSystemService(GPS_testActivity.LOCATION_SERVICE); locationListener_init(); locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,1000,0, locationListener); } /*locatonListener初始化*/ void locationListener_init(){ locationListener=new LocationListener(){ //位置变化时触发 public void onLocationChanged(Location location) { System.out.println("onLocationChanged"); locationView.setText("时间:"+location.getTime()+"\n"); locationView.append("经度:"+location.getLongitude()+"\n"); locationView.append("纬度:"+location.getLatitude()+"\n"); locationView.append("海拔:"+location.getAltitude()+"\n"); } //gps禁用时触发 public void onProviderDisabled(String provider) { System.out.println("onProviderDisabled"); Toast.makeText(GPS_testActivity.this, "请开启GPS!", Toast.LENGTH_SHORT).show(); Intent intent = new Intent(Settings.ACTION_SECURITY_SETTINGS); startActivityForResult(intent, 0); // 此为设置完成后返回到获取界面 } //gps开启时触发 public void onProviderEnabled(String provider) { Toast.makeText(GPS_testActivity.this, "GPS正常", Toast.LENGTH_SHORT).show(); } //gps状态变化时触发 public void onStatusChanged(String provider, int status,Bundle extras) { System.out.println("onStatusChanged"); if(status==LocationProvider.AVAILABLE){ infoView.setText("当前GPS状态:可见的\n"); }else if(status==LocationProvider.OUT_OF_SERVICE){ infoView.setText("当前GPS状态:服务区外\n"); }else if(status==LocationProvider.TEMPORARILY_UNAVAILABLE){ infoView.setText("当前GPS状态:暂停服务\n"); } } }; } } 布局很简单几个textView显示而已,就不上了
客户端得到gps数据传给服务处理。。最后显示出服务返回的数据 搞定!用户看起来很神奇的功能,在代码里并不复杂。 不过服务器端处理数据稍微麻烦写,需要根据经纬度找出你附近的人儿~
好了,希望对朋友们有用~dada参上~ 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-10-28
根据经纬度找出你附近的人
不就是点和圆的位置关系吗。。。 |
|
返回顶楼 | |
发表时间:2011-10-28
可惜腾讯没有开放微信的API啊。
|
|
返回顶楼 | |
发表时间:2011-10-29
su1216 写道 根据经纬度找出你附近的人
不就是点和圆的位置关系吗。。。 应该服务器端有套简单的算法,根据经纬度算出 周围某个范围内其他用户的位置 |
|
返回顶楼 | |
发表时间:2011-10-29
GPS并不是唯一获得位置的方法,
微信更多的应该是通过信号基站的位置获得位置信息,而不是GPS, |
|
返回顶楼 | |
发表时间:2011-10-29
libo19881179 写道 su1216 写道 根据经纬度找出你附近的人
不就是点和圆的位置关系吗。。。 应该服务器端有套简单的算法,根据经纬度算出 周围某个范围内其他用户的位置 我觉得点和圆的位置关系就已经够简单的了。。。 |
|
返回顶楼 | |
发表时间:2011-10-29
hellojinjie 写道 GPS并不是唯一获得位置的方法,
微信更多的应该是通过信号基站的位置获得位置信息,而不是GPS, 方式很多可以通过wifi,基站等。。 |
|
返回顶楼 | |
发表时间:2011-10-29
那个功能其实很简单,同一时刻上传经纬度进行比对。。经纬度之间求距离有算法的。。
|
|
返回顶楼 | |
发表时间:2011-10-29
hellojinjie 写道
GPS并不是唯一获得位置的方法,
微信更多的应该是通过信号基站的位置获得位置信息,而不是GPS,
正解,GPS是辅助,更多是根据基站位置来定位的,可以通过手机上显示的GPS标志可以验证。 |
|
返回顶楼 | |
发表时间:2011-10-29
GPS在室内的失败率是很高的,主要还是基站
|
|
返回顶楼 | |