在Android系统上定位功能实现方法

    最近,在开发斗地主游戏时要求实现可以查询附近玩家信息的功能,所以对在Android系统上如何实现此功能进行了研究。

    目前,对于定位主要有三种实现方式:通过网络、基站和GPS来获取到所有玩家的经纬度,然后传送给服务器计算,以此来实现附近的人信息展示功能。

最开始做的时候,使用了Android自带的定位服务:

LocationManager locationManager=(LocationManager) getSystemService(Context.LOCATION_SERVICE);

locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);

Location  lastKnownLocation =    locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER)

    通过代码获取到GPS或者网络信息,一般总是显示为null。在使用GPS定位需要在信号比较好的地方,最好是户外,而且需要定位很长的时间,所以这个方式基本pass掉了。而使用代码的网络定位,由于国内大部分手机是被阉割过的,导致网络定位也总是显示为null

    然后想到了基站定位,这个实现方式比较复杂,而且给出的数据也不够准确,所以也基本pass掉了。

最后查询资料,发现在国内可以使用百度定位,在网上下载sdk包,将jar包放到lib里面。

Android4.0以上版本的必须在百度上申请秘钥,按照网上地址设置便可,http://lbsyun.baidu.com/apiconsole/key

Androidmainfest写配置信息:

<service

            android:name="com.baidu.location.f"

            android:enabled="true"

            android:process=":remote" >

        </service>

        <meta-data

            android:name="com.baidu.lbsapi.API_KEY"

            android:value="H3bZAgLjN8ViH8YXlZ7BchA6"//在百度申请的秘钥

 />

几个比较重要的内容:

LocationClient locationClient 定位核心类

LocationClientOption option = new LocationClientOption();设置条件:

option.setOpenGps(true);        //是否打开GPS

option.setCoorType("bd09ll");       //设置返回值的坐标类型。

option.setPriority(LocationClientOption.NetWorkFirst);  //设置定位优先级

option.setProdName("*****"); //设置产品线名称。

option.setScanSpan(UPDATE_TIME);//设置定时定位的时间间隔。单位毫秒

option.setAddrType("all");//有地址信息,默认是没有的

locationClient.setLocOption(option);

注册监听:

locationClient.registerLocationListener(new BDLocationListener()

然后继承里面方法:

public void onReceiveLocation(BDLocation location) {}); 

location将会得到所有定位的信息。最后别忘了在Androidmainfest.xml里面添加百度定位所有权限。

 

作者:软酷网周超

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值