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

原创 2014年07月22日 21:00:18

直接上代码。。。嘎嘎

/**
 * 百度基站定位错误返回码
 */
// 61 : GPS定位结果
// 62 : 扫描整合定位依据失败。此时定位结果无效。
// 63 : 网络异常,没有成功向服务器发起请求。此时定位结果无效。
// 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

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用百度定位服务实现 GPS+基站+WI-FI+IP混合定位功能

经过测试,百度定位SDK提供了GPS+基站+WIFI+IP混合定位功能,传感器辅助定位,定位方式可自由切换,自动给出精度最好的定位结果。基站定位根据运营商的覆盖情况,精度达到100米-300米(我测的...
  • OnlyOneCoder
  • OnlyOneCoder
  • 2013年01月05日 18:08
  • 15816

百度地图wifi定位获取地理位置

  • 2012年12月19日 10:53
  • 1.82MB
  • 下载

百度定位API,基站定位,WiFi定位,POST上传

android里面的原生的Location、LocationManager已经无法实现定位,原因是google关闭了API的定位服务器(http://www.google.com/loc/jsonog...
  • cbbing
  • cbbing
  • 2013年06月06日 19:15
  • 4732

利用百度地图实现GPS, 基站,wifi定位,无需注册,绝对可以定位

  • 2016年12月21日 11:08
  • 321KB
  • 下载

GPRS 基站定位 LAC CID 得到经度 纬度及百度地图显示

基站定位免费接口API: http://mpro.sinaapp.com/my/jzdw.php?hex=0&lac=10328&cid=26997&map=1 ...
  • bona020
  • bona020
  • 2015年05月15日 22:24
  • 12180

基站定位的实现(百度)

  • 2013年12月16日 16:43
  • 321KB
  • 下载

百度地图申请KEY,定位和获取周边热点

百度地图申请key 一 打包: 1.先用android studio 生成 key.store 2.点击Build--Generate Signed APK... 3.create new.....
  • biickvtkd
  • biickvtkd
  • 2015年05月08日 14:54
  • 1182

获取wifi和基站定位的基础信息

转自:http://blog.csdn.net/w752325717/article/details/53930241 ===========================简单明了=========...
  • BINGDUCAIJUN
  • BINGDUCAIJUN
  • 2017年01月17日 15:34
  • 1692

wifi位置定位数据接口

支持全国wifi定位,支持平台: IOS 、Android 、Linux 、windows 、Windows Phone ,详情...
  • wutugh
  • wutugh
  • 2016年08月03日 09:00
  • 310

wifi定位查询api

wifi位置定位: 通过wifi可以查询到您所在的地方,以及您附近的公交线路等    详情:http://www.haoservice.com/docs/10     示例:{"location"...
  • yinchengs
  • yinchengs
  • 2015年04月14日 09:41
  • 289
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:使用百度API实现热点(WIFI)、GPS、基站定位
举报原因:
原因补充:

(最多只允许输入30个字)