用百度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/ . 比如手机号码:
随机推荐
- 什么是C# Lambda表达式?形如:p=>p.abc
这里介绍C# Lambda表达式,它实际上和匿名方法没有什么不同.Lambda的输入参数就对应着delegate括号里面的参数,由于C# Lambda表达式可以推断参数的类型,所以这里的参数无需声明. ...
- 高级UIKit-06(UIImagePickerController)
[day07-1-getSystemImage]:获取系统相册 UIImagePickerController图片采集控制器 picker采集者,采摘者 该方法继承自:UINavigationCont ...
- Python中__init__方法介绍
本文介绍Python中__init__方法的意义. __init__方法在类的一个对象被建立时,马上运行.这个方法可以用来对你的对象做一些你希望的 初始化 .注意,这个名称的开始和结尾 ...
- 几种能在O(n*log(n))时间排序
线性时间排序 各种排序算法总结已经介绍了几种能在O(n*log(n))时间内培训n个数的算法.归并排序和堆排序达到了最坏情况下的上界:快速排序在平均情况下达到该上界.这些算法都有一个有趣的性质:在 ...
- docker学习笔记6:利用dockerfile创建镜像介绍(生成简单web服务器镜像)
本文介绍如何利用dockerfile来创建镜像.下面介绍具体的操作过程: 一.创建构建环境 操作示例如下: xxx@ubuntu:~$ pwd /home/xxx xxx@ubuntu:~$ mkdi ...
- 基于visual Studio2013解决C语言竞赛题之0613递归求积
题目
- RTSP调试代码
#ifdef _WIN32_WCE #include "stdafx.h" #endif #ifndef _WIN32_WCE #define WIN32_LEAN_AND_MEA ...
- [置顶] Android中使用sqlite3操作SQLite
SQLite库包含一个名字叫做sqlite3的命令行,它可以让用户手工输入并执行面向SQLite数据库的SQL命令.本文档提供一个样使用sqlite3的简要说明. 一.创建数据库: 1.将sqlit ...
- 在MySql中实现MemberShip的权限管理
步骤: 1.在MySql种创建一个数据库,名称任意取,我们只是要得到一个空的数据库,我们假设这个数据库的名称为authentication. 2.在VS种创建一个Web应用程序,File——new—— ...
- 基于visual Studio2013解决面试题之0907大数乘法
题目