用百度API实现热(WIFI)、GPS、基站定位

时间:2023-02-26 22:59:50

直接在代码。。

。嘎嘎

/**
* 百度基站定位错误返回码
*/
// 61 : GPS所在地结果
// 62 : 扫描整合的基础上有针对性的失败。在这一点上的定位结果无效。
// 63 : 网络异常,没有成功向server发起请求。此时定位结果无效。 // 65 : 定位缓存的结果。
// 66 : 离线定位结果。通过requestOfflineLocaiton调用时相应的返回结果
// 67 : 离线定位失败。通过requestOfflineLocaiton调用时相应的返回结果
// 68 : 网络连接失败时。查找本地离线定位时相应的返回结果
// 161: 表示网络定位结果
// 162~167: 服务端定位失败
// 502:KEY參数错误
// 505:KEY不存在或者非法
// 601:KEY服务被开发人员自己禁用
// 602: KEY Mcode不匹配,意思就是您的ak配置过程中安全码设置有问题。请确保: sha1正确,“;”分号是英文状态。且包名是您当前执行应用的包名
// 501-700:KEY验证失败 public class BaiduActivity extends Activity implements OnClickListener { private static final String TAG = "BaiduActivity";
private TextView mText;
private TextView mTextPoi;
private LocationClient mLocationClient = null;
private BDLocationListener myListener = new MyLocationListener(); @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_weather);
mLocationClient = new LocationClient(getApplicationContext()); // 声明LocationClient类
// mLocationClient.setAccessKey("8mrnaFzKu3DoduLnWuB5Lt2w"); //V4.1
// mLocationClient.setAK("8mrnaFzKu3DoduLnWuB5Lt2w"); //V4.0
mLocationClient.registerLocationListener(myListener); // 注冊监听函数
setLocationOption();
mLocationClient.start();// 開始定位
initWidgets();
} private void initWidgets() {
mText = (TextView) findViewById(R.id.tv_text);
mTextPoi = (TextView) findViewById(R.id.tv_text_poi);
Button btn = (Button) findViewById(R.id.btn_request);
btn.setOnClickListener(this);
btn = (Button) findViewById(R.id.btn_request_poi);
btn.setOnClickListener(this);
} @Override
protected void onDestroy() {
super.onDestroy();
mLocationClient.stop();// 停止定位
} /**
* 设置相关參数
*/
private void setLocationOption() {
LocationClientOption option = new LocationClientOption();
option.setOpenGps(true);
option.setIsNeedAddress(true);// 返回的定位结果包括地址信息
option.setAddrType("all");// 返回的定位结果包括地址信息
option.setCoorType("bd09ll");// 返回的定位结果是百度经纬度,默认值gcj02
option.setScanSpan(5000);// 设置发起定位请求的间隔时间为5000ms
option.disableCache(true);// 禁止启用缓存定位
option.setPoiNumber(5); // 最多返回POI个数
option.setPoiDistance(1000); // poi查询距离
option.setPoiExtraInfo(true); // 是否须要POI的电话和地址等具体信息
option.setPriority(LocationClientOption.NetWorkFirst); // 优先网络定位
// option.setLocationMode(LocationMode.Battery_Saving);//设置定位模式
mLocationClient.setLocOption(option);
} public class MyLocationListener implements BDLocationListener {
@Override
public void onReceiveLocation(BDLocation location) {
if (location == null)
return;
StringBuffer sb = new StringBuffer(256);
sb.append("当前时间 : ");
sb.append(location.getTime());
sb.append("\n错误码 : ");
sb.append(location.getLocType());
sb.append("\n纬度 : ");
sb.append(location.getLatitude());
sb.append("\n经度 : ");
sb.append(location.getLongitude());
sb.append("\n半径 : ");
sb.append(location.getRadius());
if (location.getLocType() == BDLocation.TypeGpsLocation) {
sb.append("\n速度 : ");
sb.append(location.getSpeed());
sb.append("\n卫星数 : ");
sb.append(location.getSatelliteNumber());
} else if (location.getLocType() == BDLocation.TypeNetWorkLocation) {
sb.append("\n地址 : ");
sb.append(location.getAddrStr());
}
mText.setText(sb.toString());
Log.d(TAG, "onReceiveLocation " + sb.toString());
} public void onReceivePoi(BDLocation poiLocation) {
// 将在下个版本号中去除poi功能
if (poiLocation == null) {
return;
}
StringBuffer sb = new StringBuffer(256);
sb.append("Poi time : ");
sb.append(poiLocation.getTime());
sb.append("\nerror code : ");
sb.append(poiLocation.getLocType());
sb.append("\nlatitude : ");
sb.append(poiLocation.getLatitude());
sb.append("\nlontitude : ");
sb.append(poiLocation.getLongitude());
sb.append("\nradius : ");
sb.append(poiLocation.getRadius());
if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation) {
sb.append("\naddr : ");
sb.append(poiLocation.getAddrStr());
}
if (poiLocation.hasPoi()) {
sb.append("\nPoi:");
sb.append(poiLocation.getPoi());
} else {
sb.append("noPoi information");
}
mTextPoi.setText(sb.toString());
Log.d(TAG, "onReceivePoi " + sb.toString());
}
} @Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btn_request:
if (mLocationClient != null && mLocationClient.isStarted())
mLocationClient.requestLocation();
else
Log.d(TAG, "locClient is null or not started");
break;
case R.id.btn_request_poi:
// 请求POI数据
if (mLocationClient != null && mLocationClient.isStarted())
mLocationClient.requestPoi();
break;
default:
break;
}
}
}

代码下载:BaiduLocation

版权声明:本文博客原创文章,博客,未经同意,不得转载。

用百度API实现热(WIFI)、GPS、基站定位的更多相关文章

  1. Android studio 百度地图开发(2)地图定位

    Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...

  2. Gps定位和wifi定位和基站定位的比较

    现在手机定位的方式是:Gps定位,wifi定位,基站定位 Gps定位的前提,手机开启Gps定位模块,在室外,定位的精度一般是几米的范围 wifi定位的前提,手机要开启wifi,连不连上wifi热点都可 ...

  3. Android Service获取当前位置(GPS+基站)

    需求详情:1).Service中每隔1秒执行一次定位操作(GPS+基站)2).定位的结果实时显示在界面上(要求得到经度.纬度)技术支持:1).获取经纬度通过GPS+基站获取经纬度,先通过GPS来获取, ...

  4. 【转】百度API获取城市名地名(附源码)

    在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...

  5. 百度api:根据经纬度获取地理位置信息

    调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...

  6. .net根据经纬度获取地址(百度api)

    private string GetAddress(string lng, string lat) { try { string url = @"http://api.map.baidu.c ...

  7. 调用百度API返回经纬度

    后台调用百度API接口生成: import java.io.BufferedReader; import java.io.IOException;import java.io.InputStreamR ...

  8. 百度API之路线规划

    近期参加一个课题,聊到路线规划问题,需要搜索两地点的最短线路距离以及最短用时等情况,然后就想着用借用百度API,做个参考 环境: python 3.6 主要问题: 1. 分析百度官方路线规划API了解 ...

  9. 百度API ; 很多有用的接口及公用 数据

    百度API : http://apistore.baidu.com/ . 比如手机号码:

随机推荐

  1. Java第八周学习总结

    20145113第八周学习总结 第十五章学习内容 第15章比较琐碎,相对于之前章节也比较枯燥无味看了一部分,也动手敲了些 Logger logger = Logger.getLogger(" ...

  2. sublime text3 之snippet编写代码片段

    sublime text 3 中有个强大的功能就是可以编写各种文件类型的snippet代码片段,可以节省大量的时间. 文件名为:jekyll-top.sublime-snippet(.sublime- ...

  3. poj2796 维护区间栈//单调栈

    http://poj.org/problem?id=2796 题意:给你一段区间,需要你求出(在这段区间之类的最小值*这段区间所有元素之和)的最大值...... 例如: 6 3 1 6 4 5 2 以 ...

  4. 利用backtrace和objdump进行分析挂掉的程序

    转自:http://blog.csdn.net/hanchaoman/article/details/5583457 汇编不懂,先把方法记下来. glibc为我们提供了此类能够dump栈内容的函数簇, ...

  5. 13.KVM安装之网桥

    安装必须的几个库和软件(最好下载一个163的yum源,速度快点) $ yum -y install kvm python-virtinst libvirt tunctl bridge-utils vi ...

  6. MySQL中SQL语句的分类

    1:数据定义语言(DDL) :创建和删除数据库(CREATE DATABASE || DROP  DATABASE):2:创建.修改.重命名.删除表(CREATE  TABLE || ALTER TA ...

  7. 330. Patching Array

    Given a sorted positive integer array nums and an integer n, add/patch elements to the array such th ...

  8. 【NOIP2016提高组】 Day2 T1 组合数问题

    题目传送门:https://www.luogu.org/problemnew/show/P2822                 ↓题目大意↓ 数据的极限范围:n,m≤2000,k≤21,数据组数≤ ...

  9. poj3270 && poj 1026(置换问题)

    | 1 2 3 4 5 6 | | 3 6 5 1 4 2 | 在一个置换下,x1->x2,x2->x3,...,xn->x1, 每一个置换都可以唯一的分解为若干个不交的循环 如上面 ...

  10. Python实现im2col和col2im函数

    今天来说说im2col和col2im函数,这是MATLAB中两个内置函数,经常用于数字图像处理中.其中im2col函数在<MATLAB中的im2col函数>一文中已经进行了简单的介绍. 一 ...