使用百度sdk简单定位

原创 2016年05月30日 11:34:07

参考 http://wiki.lbsyun.baidu.com/cms/locsdkrelease/20160427/locsdkDemo6.2.3.zip 最新demo


首先申请密匙 http://lbsyun.baidu.com/apiconsole/key

最简便获取SHA1的方法,到

http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=106461

下载MCodeCheck.zip

用这软件即可测试key是否正确,然后进项目在

AndroidManifest.xml中添加权限

<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" />

application
<!--不写
android:name=".LocationApplication"
会报NoClassDefFoundError-->
<application
    android:name=".LocationApplication"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme.Dark"
    >
    <service
        android:name="com.baidu.location.f"
        android:enabled="true"
        android:process=":remote" >
        <intent-filter>
            <action android:name="com.baidu.location.service_v2.2" >
            </action>
        </intent-filter>
    </service>
    <meta-data
        android:name="com.baidu.lbsapi.API_KEY"
        android:value="开发者申请的key" />   <!-- //key:开发者申请的key-->


然后创建类LocationApplication

import android.app.Application;
import android.app.Service;
import android.os.Vibrator;

import com.baidu.mapapi.SDKInitializer;
import com.hhxx.www.hhusercheck.LocationService.LocationService;

/**
 * 主Application,所有百度定位SDK的接口说明请参考线上文档:http://developer.baidu.com/map/loc_refer/index.html
 *
 * 百度定位SDK官方网站:http://developer.baidu.com/map/index.php?title=android-locsdk
 *
 * 直接拷贝com.baidu.location.service包到自己的工程下,简单配置即可获取定位结果,也可以根据demo内容自行封装
 */
public class LocationApplication extends Application {
    public LocationService locationService;
    public Vibrator mVibrator;
    @Override
    public void onCreate() {
        super.onCreate();
        /***
         * 初始化定位sdk,建议在Application中创建
         */
        locationService = new LocationService(getApplicationContext());
        mVibrator =(Vibrator)getApplicationContext().getSystemService(Service.VIBRATOR_SERVICE);
        SDKInitializer.initialize(getApplicationContext());

    }
}



写服务类 
LocationService
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import android.content.Context;

/**
 *
 * @author baidu
 *
 */
public class LocationService {
    private LocationClient client = null;
    private LocationClientOption mOption,DIYoption;
    private Object  objLock = new Object();

    /***
     *
     * @param locationContext
     */
    public LocationService(Context locationContext){
        synchronized (objLock) {
            if(client == null){
                client = new LocationClient(locationContext);
                client.setLocOption(getDefaultLocationClientOption());
            }
        }
    }

    /***
     *
     * @param listener
     * @return
     */

    public boolean registerListener(BDLocationListener listener){
        boolean isSuccess = false;
        if(listener != null){
            client.registerLocationListener(listener);
            isSuccess = true;
        }
        return  isSuccess;
    }

    public void unregisterListener(BDLocationListener listener){
        if(listener != null){
            client.unRegisterLocationListener(listener);
        }
    }

    /***
     *
     * @param option
     * @return isSuccessSetOption
     */
    public boolean setLocationOption(LocationClientOption option){
        boolean isSuccess = false;
        if(option != null){
            if(client.isStarted())
                client.stop();
            DIYoption = option;
            client.setLocOption(option);
            isSuccess = true;
        }
        return isSuccess;
    }

    public LocationClientOption getOption(){
        return DIYoption;
    }
    /***
     *
     * @return DefaultLocationClientOption
     */
    public LocationClientOption getDefaultLocationClientOption(){
        if(mOption == null){
            mOption = new LocationClientOption();
            mOption.setLocationMode(LocationMode.Hight_Accuracy);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
            mOption.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系,如果配合百度地图使用,建议设置为bd09ll;
            mOption.setScanSpan(3000);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
            mOption.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
            mOption.setIsNeedLocationDescribe(true);//可选,设置是否需要地址描述
            mOption.setNeedDeviceDirect(false);//可选,设置是否需要设备方向结果
            mOption.setLocationNotify(false);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
            mOption.setIgnoreKillProcess(true);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
            mOption.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
            mOption.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
            mOption.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
        }
        return mOption;
    }

    public void start(){
        synchronized (objLock) {
            if(client != null && !client.isStarted()){
                client.start();
            }
        }
    }
    public void stop(){
        synchronized (objLock) {
            if(client != null && client.isStarted()){
                client.stop();
            }
        }
    }

}



最后只需在需要调动定位的地方
初始化、注册服务、启动定位服务、以及结束时候解绑服务与停止服务就好了,代码在demo里,就能实现简单定位了

C++ articles:Guru of the Week #2 --临时对象

作者:Hub Sutter译者:plpliuly/*此文是译者出于自娱翻译的GotW(Guru of the Week)系列文章第二篇,原文的版权是属于Hub Sutter(著名的C++专家,"Exc...
  • plpliuly
  • plpliuly
  • 2001-03-12 23:13:00
  • 702

百度定位API使用方法

导入库文件 在下载页面下载最新的库文件。将liblocSDK2.4.so文件拷贝到libs/armeabi目录下。将locSDK2.4.jar文件拷贝到工程根目录下,并在工程属性->Java Bui...
  • Jarlen
  • Jarlen
  • 2015-03-22 19:52:34
  • 3991

利用百度定位Sdk获取Gps位置

  • 2013年11月19日 20:41
  • 1.95MB
  • 下载

百度SDK定位

LocationActivity: package com.baidu.location.demo; import com.baidu.baidulocationdemo.R; import co...
  • u010002184
  • u010002184
  • 2016-02-23 20:07:26
  • 1751

【Android开发小记--11】调用百度地图定位功能

调用百度地图SDK来进行定位, 参考了百度地图的官方Demo   注意点: http://lbsyun.baidu.com/index.php?title=androidsdk/guide/hel...
  • u014252406
  • u014252406
  • 2016-02-07 01:13:24
  • 5381

百度地图及定位的简单使用

本篇demo GitHub地址:https://github.com/Ablexq/MyBaiduMap 参考: Android百度地图开发(一)之初体验 一、地图 申请AK(API Ke...
  • sinat_31057219
  • sinat_31057219
  • 2018-02-24 17:05:26
  • 403

百度地图SDK和百度定位SDK的使用(笔记)

百度地图SDK官方使用概要:http://lbsyun.baidu.com/index.php?title=androidsdk 百度定位SDK官方使用概要:http://lbsyun.baidu.c...
  • nzz1994
  • nzz1994
  • 2016-07-18 15:41:17
  • 1193

百度定位SDK Android v7.0 使用方法

徐州艾克峰网络科技  最近在徐州开发APP的时候遇到需要使用定位的情况。考虑到该APP的使用范围还是在国内GOOGLE的定位服务由于众所周知的原因不能使用。所以还是使用百度的吧。 目前百度定位SD...
  • aicfeng_liuy
  • aicfeng_liuy
  • 2016-08-15 17:22:43
  • 3813

配置、使用百度定位android sdk

导入库文件 在相关下载里下载最新的库文件。将so文件的压缩文件解压出来,把对应架构下的so文件放入开发者自己APP的对应架构下的文件夹中(建议全部放入以提高程序兼容性),将locSDK_6.X....
  • mr_orange_klj
  • mr_orange_klj
  • 2016-09-21 09:38:18
  • 2009

Android开发之百度SDK的使用--基础定位

最近百度的lbs做的很火,他的开放
  • smbroe
  • smbroe
  • 2014-11-24 10:47:58
  • 1623
收藏助手
不良信息举报
您举报文章:使用百度sdk简单定位
举报原因:
原因补充:

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