用百度API实现热(WIFI)、GPS、基站定位
直接在代码。。
。嘎嘎
/**
* 百度基站定位错误返回码
*/
// 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、基站定位的更多相关文章
- Android studio 百度地图开发(2)地图定位
Android studio 百度地图开发(2)地图定位 email:chentravelling@163.com 开发环境:win7 64位,Android Studio,请注意是Android S ...
- Gps定位和wifi定位和基站定位的比较
现在手机定位的方式是:Gps定位,wifi定位,基站定位 Gps定位的前提,手机开启Gps定位模块,在室外,定位的精度一般是几米的范围 wifi定位的前提,手机要开启wifi,连不连上wifi热点都可 ...
- Android Service获取当前位置(GPS+基站)
需求详情:1).Service中每隔1秒执行一次定位操作(GPS+基站)2).定位的结果实时显示在界面上(要求得到经度.纬度)技术支持:1).获取经纬度通过GPS+基站获取经纬度,先通过GPS来获取, ...
- 【转】百度API获取城市名地名(附源码)
在做一个软件时,用到了定位功能.网上有很多关于google 的GPS定位,但网上关于google定位都没有用, 搜索下原因:(这里建议大家在中国就尽量不使用系统自带的定位) 因为Google的服务器不 ...
- 百度api:根据经纬度获取地理位置信息
调用百度api,根据经度和纬度获取地理位置信息,返回Json. C#代码: using Newtonsoft.Json; using Newtonsoft.Json.Linq; using Syste ...
- .net根据经纬度获取地址(百度api)
private string GetAddress(string lng, string lat) { try { string url = @"http://api.map.baidu.c ...
- 调用百度API返回经纬度
后台调用百度API接口生成: import java.io.BufferedReader; import java.io.IOException;import java.io.InputStreamR ...
- 百度API之路线规划
近期参加一个课题,聊到路线规划问题,需要搜索两地点的最短线路距离以及最短用时等情况,然后就想着用借用百度API,做个参考 环境: python 3.6 主要问题: 1. 分析百度官方路线规划API了解 ...
- 百度API ; 很多有用的接口及公用 数据
百度API : http://apistore.baidu.com/ . 比如手机号码:
随机推荐
- AES SHA-1 SM3 MD5
AES是美国国家标准技术研究所NIST旨在代替DES的21世纪的加密标准. 输入:128bit 的消息分组 输出:128bit 的密文分组 密钥长度及圈数 128 10 192 12 256 14 消 ...
- java 发送邮件 email相关操作代码测试,生成复杂格式邮件,发送邮件相关操作
项目源码下载:http://download.csdn.net/detail/liangrui1988/6720047 效果图: 相关代码: test1 package com.mail; impor ...
- HDOJ 1272 并查集 不相同父节点
判断两点:1.任何2点的父节点不能相同->否则会导致2点间有多条通路2.所有点只有1个集合 存在一个小坑,就是第一次输入 0 0 的时候,应该输出 Yes , 否则会WA MY AC Code ...
- js中exec、test、match、search、replace、split、indesOf()用法
exec:对string进行正则处理,并返回匹配结果.array[0]为原字符串,array[i]为匹配在整个被搜索字符串中的位置. test:测试string是否包含有匹配结果,包含返回true,不 ...
- QLineEdit 仿QQ签名框
今天鼓捣了半天,终于实现了自定义Qt中的QlineEdit控件的大致效果. 这个问题对于新手而言,主要有以下几个难点: 1.继承QLineEdit控件 2.QSS设置QLineEdit的相关样式,可以 ...
- Python:渗透测试开源项目
Python:渗透测试开源项目[源码值得精读] sql注入工具:sqlmap DNS安全监测:DNSRecon 暴力破解测试工具:patator XSS漏洞利用工具:XSSer Web服务器压力测试工 ...
- 有关oppo蝴蝶解锁的三D技术
oppo手机的界面设计也是很漂亮的.在很多界面中使用了3D技术塑造出了大量华丽的效果.在蝴蝶解锁中使用了两个对称的三D变幻,宛如蝴蝶翅膀上美丽的花纹.在受到用户点击后,随风缓慢上下扇动,充满浪漫的动感 ...
- 调试出不来 断点不起作用 调试技巧 MyEclipse进不了调试
1:今天遇到了web项目调试总是不起作用,后来经人指点才知,当调试的断点仅仅是一个小圆圈时断点是不起作用的,这是可以重启下tomcat服务器再重新访问断点才会起作用,这是你会发现断点的小圆点左下角有个 ...
- Struts2+Spring+Hibernate step by step 03 整合Spring之中的一个(在DAO层验证username和password)
注:该系列文章部分内容来自王健老师编写SSH整合开发教程 目的:通过Spring创建数据库的连接,并通过Spring进行事务管理. 第一步:将Spring的包拷贝至当前项目的lib文件夹下,例如以下图 ...
- asp.net 中将汉字转换成拼音
/// <summary> /// 获取汉字的全拼音 /// </summary> /// <param name="x">传汉字的字符串< ...