全网整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:400-708-3566

Android GPS室内定位问题的解决方法(location为null)

为什么室内没有location呢?

       因为我们开发的时候几乎肯定都是在室内的,这个时候卫星你是搜索不到的,所以必然是定位不了的,所以系统如何将位置信息通知给你的程序。所以要从根本上解决这个问题,就要解决位置信息获取问题。
        那么我来告诉大家,只有NETWORK_PROVIDER这种模式才是室内定位可靠的方式,就是当location为null的时候只要用这个,NETWORK_PROVIDER。
        不过直接用大家也是用不了的,为啥呢,因为大部分厂商也不会用google的服务,这种定位方式默认是没法用的。那怎么办?好办,找个替代的服务商就可以了,百度或者高德的位置信息sdk就可以解决这个问题。它的基本原理在上面已经提到过了,就是搜集你的wifi节点信息和你的手机基站信息来定位。 

        本篇文章我们来用百度解决。

用百度位置定位SDK

SDK下载:http://lbsyun.baidu.com/sdk/download
SDK使用:

1.  申请百度的服务密钥,具体操作步骤见官网:http://api.map.baidu.com/lbsapi/cloud/geosdk.htm
2.将上面下载的sdk文件locSDK_4.1.jar拷贝到你项目的libs下
3.  修改AndroidManifest文件,在该文件里添加如下配置       

<service
 android:name="com.baidu.location.f"
 android:enabled="true"
 android:process=":remote" >
</service>
<meta-data android:name="com.baidu.lbsapi.API_KEY" android:value="xxxxx " />
 <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

上面meta-data中value的值改为你自己的密钥

  代码里调用sdk:

public class LocationUtil {
 private final static boolean DEBUG = true;
 private final static String TAG = "LocationUtil";
 private static LocationUtil mInstance;
 private BDLocation mLocation = null;
 private MLocation mBaseLocation = new MLocation();

 public static LocationUtil getInstance(Context context) {
 if (mInstance == null) {
 mInstance = new LocationUtil(context);
 }
 return mInstance;
 }

 Context mContext;
 String mProvider;
 public BDLocationListener myListener = new MyLocationListener();
 private LocationClient mLocationClient;
 
 public LocationUtil(Context context) {
 mLocationClient = new LocationClient(context.getApplicationContext());
 initParams();
 mLocationClient.registerLocationListener(myListener);
 }

 public void startMonitor() {
 if (DEBUG) Log.d(TAG, "start monitor location");
 if (!mLocationClient.isStarted()) {
 mLocationClient.start();
 }
 if (mLocationClient != null && mLocationClient.isStarted()) {
 mLocationClient.requestLocation();
 } else {
 Log.d("LocSDK3", "locClient is null or not started");
 }
 }

 public void stopMonitor() {
 if (DEBUG) Log.d(TAG, "stop monitor location");
 if (mLocationClient != null && mLocationClient.isStarted()) {
 mLocationClient.stop();
 }
 }
 
 public BDLocation getLocation() {
 if (DEBUG) Log.d(TAG, "get location");
 return mLocation;
 }
 
 public MLocation getBaseLocation() {
 if (DEBUG) Log.d(TAG, "get location");
 return mBaseLocation;
 }
 
 private void initParams() {
 LocationClientOption option = new LocationClientOption();
 option.setOpenGps(true);
 //option.setPriority(LocationClientOption.NetWorkFirst);
 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的电话和地址等详细信息 
 mLocationClient.setLocOption(option);
 }


 public class MyLocationListener implements BDLocationListener {
 @Override
 public void onReceiveLocation(BDLocation location) {
 if (location == null) {
 return ;
 }
 mLocation = location;
 mBaseLocation.latitude = mLocation.getLatitude();
 mBaseLocation.longitude = mLocation.getLongitude();
 
 StringBuffer sb = new StringBuffer(256);
 sb.append("time : ");
 sb.append(location.getTime());
 sb.append("\nerror code : ");
 sb.append(location.getLocType());
 sb.append("\nlatitude : ");
 sb.append(location.getLatitude());
 sb.append("\nlontitude : ");
 sb.append(location.getLongitude());
 sb.append("\nradius : ");
 sb.append(location.getRadius());
 sb.append("\ncity : ");
 sb.append(location.getCity());
 if (location.getLocType() == BDLocation.TypeGpsLocation){
 sb.append("\nspeed : ");
 sb.append(location.getSpeed());
 sb.append("\nsatellite : ");
 sb.append(location.getSatelliteNumber());
 } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
 sb.append("\naddr : ");
 sb.append(location.getAddrStr());
 }
 if (DEBUG) Log.d(TAG, "" + sb);
 }

 public void onReceivePoi(BDLocation poiLocation) {
 }
 }
 
 public class MLocation {
 public double latitude;
 public double longitude;
 }
}

当然别忘了在setting里将gps定位打开。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。


# Android  # GPS  # 室内定位  # android studio 使用Mocklocation虚拟定位  # Android编程之PopupWindow隐藏及显示方法示例(showAtLocation  # showAsDropDown)  # Android开发之Location用法实例分析  # 用Android Location获取当前地理位置的方法  # Android Location服务之LocationManager案例详解  # 室内  # 解决这个问题  # 就可以  # 都是  # 也不  # 你是  # 过了  # 才是  # 最多  # 我来  # 你自己  # 找个  # 到你  # 这个时候  # 时间为  # 在上面  # 会用  # 别忘了  # 从根本上  # 该文件 


相关文章: 建站之星导航如何优化提升用户体验?  婚礼视频制作网站,学习*后期制作的网站有哪些?  太平洋网站制作公司,网络用语太平洋是什么意思?  建站之星后台搭建步骤解析:模板选择与产品管理实操指南  上海制作企业网站有哪些,上海有哪些网站可以让企业免费发布招聘信息?  建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析  GML (Geography Markup Language)是什么,它如何用XML来表示地理空间信息?  教学网站制作软件,学习*后期制作的网站有哪些?  如何用PHP工具快速搭建高效网站?  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  如何在建站之星网店版论坛获取技术支持?  建站主机CVM配置优化、SEO策略与性能提升指南  IOS倒计时设置UIButton标题title的抖动问题  小捣蛋自助建站系统:数据分析与安全设置双核驱动网站优化  岳西云建站教程与模板下载_一站式快速建站系统操作指南  建站之星CMS五站合一模板配置与SEO优化指南  网站建设设计制作营销公司南阳,如何策划设计和建设网站?  Thinkphp 中 distinct 的用法解析  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  建站主机服务器选购指南:轻量应用与VPS配置解析  完全自定义免费建站平台:主题模板在线生成一站式服务  制作网站的软件免费下载,免费制作app哪个平台好?  香港服务器网站搭建教程-电商部署、配置优化与安全稳定指南  网站制作企业,网站的banner和导航栏是指什么?  深圳网站制作费用多少钱,读秀,深圳文献港这样的网站很多只提供网上试读,但有些人只要提供试读的文章就能全篇下载,这个是怎么弄的?  云南网站制作公司有哪些,云南最好的招聘网站是哪个?  建站之星如何取消后台验证码生成?  已有域名和空间如何快速搭建网站?  建站之星如何助力企业快速打造五合一网站?  名字制作网站免费,所有小说网站的名字?  一键制作网站软件下载安装,一键自动采集网页文档制作步骤?  网站制作价目表怎么做,珍爱网婚介费用多少?  建站168自助建站系统:快速模板定制与SEO优化指南  C++如何使用std::optional?(处理可选值)  小建面朝正北,A点实际方位是否存在偏差?  网站按钮制作软件,如何实现网页中按钮的自动点击?  潍坊网站制作公司有哪些,潍坊哪家招聘网站好?  Python路径拼接规范_跨平台处理说明【指导】  建站一年半SEO优化实战指南:核心词挖掘与长尾流量提升策略  高端网站建设与定制开发一站式解决方案 中企动力  中山网站推广排名,中山信息港登录入口?  建设网站制作价格,怎样建立自己的公司网站?  深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?  家庭建站与云服务器建站,如何选择更优?  ui设计制作网站有哪些,手机UI设计网址吗?  如何高效生成建站之星成品网站源码?  贸易公司网站制作流程,出口贸易网站设计怎么做?  矢量图网站制作软件,用千图网的一张矢量图做公司app首页,该网站并未说明版权等问题,这样做算不算侵权?应该如何解决?  湖南网站制作公司,湖南上善若水科技有限公司做什么的?  官网自助建站平台指南:在线制作、快速建站与模板选择全解析 

您的项目需求

*请认真填写需求信息,我们会在24小时内与您取得联系。