百度Android定位SDK3.1使用经验

1   若用户设置GPS优先,则优先使用GPS进行定位,如果GPS定位未打开或者没有可用位置信息,且网络连接正常,定位SDK则会返回网络定位(即Wi-Fi与基站)的最优结果。为了使获得的网络定位结果更加精确,请打开手机的Wi-Fi开关。

/**
   * 如果gps关闭则打开手机gps设置,如果gps已打开则 关闭gps设置
   */
  public void opengps(){
   Intent gpsIntent = new Intent();
   gpsIntent.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
   gpsIntent.addCategory("android.intent.category.ALTERNATIVE");
   gpsIntent.setData(Uri.parse("custom:3"));
   try {
        PendingIntent.getBroadcast(HomeActivity.this, 0, gpsIntent, 0).send();
    } catch (CanceledException e) {
        e.printStackTrace();
    }
  }

  判断是否打开gps代码
   LocationManager locationManager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);                     
       
    if (!locationManager.isProviderEnabled(android.location.LocationManager.GPS_PROVIDER))
    {     
      opengps();
    }  
红色框子中就是软件启动后打开gps的标志
百度Android定位SDK3.1使用经验 - chy2z - 黑暗行动
 

2 如果使用百度定位sdk一定要在中AndroidManifest.xml增加服务(因为这个问题调试了半天都获取不到坐标,也不报错!郁闷啊!!!)
        <service
            android:name="com.baidu.location.f"
            android:enabled="true"
            android:process=":remote" >
        </service>

初始化百度地图定位SDK,获取gps坐标

 // 定位类
  private LocationClient mLocationClient = null; 
  
  private MyReceiveListenner mListenner = null;
  
  private LocationData locData = null;

 /**
   * 初始化百度地图定位SDK获取gps坐标
   */
   public  void startBaiDuGpsLocation() {    
  mLocationClient = new LocationClient( this );    
  mListenner = new MyReceiveListenner();
  mLocationClient.registerLocationListener(mListenner);//注册监听
       LocationClientOption option = new LocationClientOption();
       option.setOpenGps(true);//打开gps
       option.setCoorType("bd09ll");     //设置坐标类型
       option.setScanSpan(10000); //10秒获取一次坐标
       mLocationClient.setLocOption(option);                
  mLocationClient.start();
   }

    // 监听定位得到gps坐标,然后定位
   public class MyReceiveListenner implements BDLocationListener {
   
  double _latitud=0;
  double _longitude=0;
   
           @Override
           public void onReceiveLocation(BDLocation location) {  
                   if (location == null){                      
                      //showMsg("百度获取坐标失败!");                      
                           return;
                   }
                   
                   double latitude = location.getLatitude();
                   double longitude = location.getLongitude();                   
                
                   
                   if(_latitud!=latitude&&_longitude!=longitude){    
                   
                  GeoPoint point = new GeoPoint((int) (latitude * 1E6),(int) (longitude * 1E6));    
                   
                     showMsg("mlatitude:"+point.getLatitudeE6()+"mlongitude:"+point.getLongitudeE6());
                   
                   }
                   
                   _latitud=latitude;
                   
                   _longitude=longitude;
           }

           @Override
           public void onReceivePoi(BDLocation poiLocation) {
          if (poiLocation == null){
                   return ;
               }
           }
   }
  
   项目引用
   百度Android定位SDK3.1使用经验 - chy2z - 黑暗行动
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值