android百度基站定位服务,用百度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;

}

}

}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
2021年的Android手机在定位方面采用了基站WiFiGPS的集合技术。这些技术的结合旨在提供更准确和可靠的定位服务。 首先是基站定位基站定位是通过手机与周围的基站进行通信来确定手机的位置。每个基站都有一个特定的物理位置,当手机与基站通信时,系统可以计算手机与基站之间的信号传输时间来估计手机的距离,进而确定手机的大致位置。基站定位的优点是可以在手机网络信号覆盖范围内实现定位,但精确度相对较低。 其次是WiFi定位。WiFi定位通过扫描周围的WiFi网络来确定手机的位置。手机会记录附近可用的WiFi网络和其强度信息,并将其与预先收集的WiFi网络数据库进行匹配,从而确定手机所处的位置。WiFi定位的优点是在城市和室内等封闭环境中具有较高的精度,并且消耗较少的电池。 最后是GPS定位。GPS定位通过接收来自全球定位系统卫星的信号来确定手机的位置。手机会接收来自至少4颗卫星的信号,并使用实时的卫星轨道数据进行三角定位计算,从而确定手机的精确位置。GPS定位的优点是精度高、全球覆盖,并且适用于户外和开放空间。 综上所述,2021年的Android手机在定位方面使用了基站WiFiGPS的集合技术。这种组合可以在不同的场景中提供精确和可靠的定位服务,如城市、室内和户外。用户可以根据需要选择合适的定位方式,以满足个人需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值