Android 百度定位SDKv4.2及6.0_百度定位实例_安卓定位实例

转载 2015年11月19日 18:02:37

介绍

由于项目需要、前几天一直在研究百度定位的功能、通过不断的实践终于有结果了、不愿意独享

现在我把我的研究成果和大家分享一下、其实百度的 API 已经相当不错了

这之所以要写出来、一是自己做一个笔记、二是以方便一起朋友少走弯路

导入库文件

在相关下载最新的库文件、将liblocSDK4d.so文件拷贝到libs/armeabi目录下

将locSDK4.2.jar文件拷贝到工程的libs目录下、并在工程属性->Java Build Path->Libraries中选择“Add JARs”

选定locSDK4.2.jar、确定后返回、这样您就可以在程序中使用百度定位SDK了

设置AndroidManifest.xml
在application标签中声明service组件、每个app拥有自己单独的定位service

<service 
    android:name="com.baidu.location.f" 
    android:enabled="true" 
    android:process=":remote">
</service>

声明使用权限

<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.READ_PHONE_STATE" >
</uses-permission>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" >
</uses-permission>
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" >
</uses-permission>
<uses-permission android:name="android.permission.READ_LOGS" >
</uses-permission>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

使用基本定位功能
基本定位功能指的根据用户实际需求、返回用户当前位置的基础定位服务

包含GPS和网络定位(Wi-Fi和基站定位)功能、基本定位功能同时还支持结合定位结果的反地理编码功能

离线定位、位置提醒功能和地理围栏功能

package com.baidu.baidulocationdemo;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;

public class LocationActivity extends Activity{
    private LocationClient mLocationClient;
    private TextView LocationResult;
    private Button startLocation;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.location);
        mLocationClient = new LocationClient(this.getApplicationContext());
        mLocationClient.registerLocationListener(new MyLocationListener());

        LocationResult = (TextView)findViewById(R.id.textView1);
        startLocation = (Button)findViewById(R.id.addfence);
        startLocation.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                InitLocation();

                if(startLocation.getText().equals(getString(R.string.startlocation))){
                    mLocationClient.start();
                    startLocation.setText(getString(R.string.stoplocation));
                }else{
                    mLocationClient.stop();
                    startLocation.setText(getString(R.string.startlocation));
                }


            }
        });

    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        mLocationClient.stop();
        super.onStop();
    }

    private void InitLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);//设置定位模式
        //option.setCoorType(tempcoor);//返回的定位结果是百度经纬度,默认值gcj02
        int span=1000;
        option.setScanSpan(span);//设置发起定位请求的间隔时间为5000ms
        option.setIsNeedAddress(true);
        mLocationClient.setLocOption(option);
    }

    /**
     * 实现实位回调监听
     */
    public class MyLocationListener implements BDLocationListener {

        @Override
        public void onReceiveLocation(BDLocation location) {
            //Receive Location 
            StringBuffer sb = new StringBuffer(256);
            sb.append("time : ");
            sb.append(location.getTime());
            sb.append("error code : ");
            sb.append(location.getLocType());
            sb.append("latitude : ");
            sb.append(location.getLatitude());
            sb.append("lontitude : ");
            sb.append(location.getLongitude());
            sb.append("radius : ");
            sb.append(location.getRadius());
            if (location.getLocType() == BDLocation.TypeGpsLocation){
                sb.append("speed : ");
                sb.append(location.getSpeed());
                sb.append("satellite : ");
                sb.append(location.getSatelliteNumber());
                sb.append("direction : ");
                sb.append("addr : ");
                sb.append(location.getAddrStr());
                sb.append(location.getDirection());
            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
                sb.append("addr : ");
                sb.append(location.getAddrStr());
                //运营商信息
                sb.append("operationers : ");
                sb.append(location.getOperators());
            }
            LocationResult.setText(sb.toString());
            Log.i("dwtedx", sb.toString());
        }
    }
}

到这里一个简单的百度定位demo就可以实现了、那么需要注意的是一定要在 libs 下面引入 armeabi/liblocSDK4d.so

若资源对你有帮助、扫描下方的二维码、关注DD博客微信公众号(ddblogs)吧

最后给贴上Demo的源代码、希望对大家有用、有兴趣的哥们可以下载看看
源代码下载链接:http://dwtedx.com/download.html?bdkey=s/1o689PBO密码: m65a

原文:http://dwtedx.com/itshare_158.html

Android集成百度定位,超详细,拒绝坑,附demo!!!

众所周知,百度地图作为定位,地图,导航界的大佬之一,我们的项目中有这方面的需求,百度地图集成也是个不错的选择。 百度地图集成成本极低,首先,它免费,官网文档清晰,demo明确,但还是有很多人要才坑,...
  • zjb12316
  • zjb12316
  • 2017年03月06日 13:32
  • 1018

Android之百度地图定位最详细使用总结

Android之百度定位                         如果项目里面有定位功能的话,一般还是觉得蛮高大上的,我们项目用的百度定位,到网上找了很多资料,很多都不全面,很多博客都没有小伙...
  • u011068702
  • u011068702
  • 2015年10月16日 17:12
  • 13919

android studio上的百度定位的初始化

记录一下自己引入百度地图API的结果,调用了百度地图的定位,下面开始讲解: 1.下载官方百度地图SDK,详细的我就不说了,自己查就能查到了,然后根据自己的选择进行下载,别忘了申请密钥。 ...
  • Anny_Lin
  • Anny_Lin
  • 2015年07月07日 10:09
  • 1265

Android 百度定位SDK(v6.1.3)结合方向传感器

概述这是第二篇关于百度地图SDK的博客。推荐阅读: Android 百度地图周边雷达(v6.1.3)Android 百度鹰眼轨迹SDK(v2.1.6)今天主要写百度地图定位和方向传感器结合这么一个中...
  • qq_17250009
  • qq_17250009
  • 2016年03月22日 11:06
  • 3803

Android把百度定位放到service里面

//百度 public abstract class Location extends Service  implements BDLocationListener{     private ...
  • u011072398
  • u011072398
  • 2014年06月13日 08:43
  • 2311

Android 百度定位sdkv61.3获取位置信息

最近在弄混合定位,使用Android自带的network定位经常会定位不到,也就是location经常为空,而gps只能在室外定位,室内收不到星。使用很不方便。那就用了一下百度定位sdk,感觉很不错。...
  • VNanyesheshou
  • VNanyesheshou
  • 2015年11月19日 10:36
  • 13044

百度定位Sdk 162错误解决方法之Android Studio

前言 此方法只针对开发环境是Android Studio  查看百度开发文档 官方对162错误解释是: 162: 请求串密文解析失败。  只是简单的说了一句, 完全不知道是什么错误 ...
  • hu285279904
  • hu285279904
  • 2015年08月25日 15:46
  • 3610

Android 百度地图定位(手动+自动)

最近由于项目需要,研究了下百度地图定位,他们提供的实例基本都是用监听器实现自动定位的。我想实现一种效果:当用户进入UI时,不定位,用户需要定位的时候,自己手动点击按钮,再去定位当前位置。  经过2天研...
  • binyao02123202
  • binyao02123202
  • 2012年05月19日 17:14
  • 9673

百度定位官方Demo

百度定位官方Demo本工程主要是对百度定位官方demo的一些配置。下载Demo代码地址:http://lbsyun.baidu.com/index.php?title=android-locsdk/g...
  • Next_Second
  • Next_Second
  • 2017年08月24日 19:31
  • 786

Android百度定位SDK,返回error code:162 latitude:4.9E-32

百度定位SDK,返回error code:162 latitude:4.9E-32问题的解决方法
  • xiaonadiandian
  • xiaonadiandian
  • 2016年01月13日 16:29
  • 1905
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android 百度定位SDKv4.2及6.0_百度定位实例_安卓定位实例
举报原因:
原因补充:

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