热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

android百度sdk,android百度SDK定位

android使用百度定位SDK定位主要有以下几步:2.导入jar包及SO文件3.配置androidManifest权限及服务加入权限:在application标签下

android使用百度定位SDK 定位主要有以下几步:

2.导入jar包及SO文件

3.配置androidManifest权限及服务

加入权限 :

在application标签下加入授权码:(每个授权码对应一个应用,需要自己申请)

android:name="com.baidu.lbsapi.API_KEY"

android:value="4ff8I8uXAuHPtpgyVw0GfUvY" />

部署定位服务

android:name="com.baidu.location.f"

android:enabled="true"

android:process=":remote" >

4.调用提供的接口

package com.util.location;

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;

import android.content.Context;

import android.widget.Toast;

public class MyLocationManager {

private static MyLocationManager mInstance;

private Context mContext;

private LocationClient mLocationClient;

private BDLocationListener mListener = null;

private LocationEntry mCurrLocEntry;

private boolean hasResult = false;

public static final int LOCATION_OK = 161;

private int mRefreshTime = 5000;

private LocationClientOption mOption;

public static synchronized MyLocationManager getInstance(Context ctx) {

if (mInstance == null) {

mInstance = new MyLocationManager(ctx);

}

return mInstance;

}

private MyLocationManager(Context ctx) {

mContext = ctx;

init();

}

private void init() {

// 初始化定位客户端

mLocationClient = new LocationClient(mContext);

// 初始化定位参数

mOption = new LocationClientOption();

initLocationOption();

mListener = new BDLocationListener() {

@Override

public void onReceivePoi(BDLocation location) {

}

@Override

public void onReceiveLocation(BDLocation location) {

if (location == null) {

hasResult = false;

if (mResultListener != null) {

mResultListener.onLocationResult(hasResult, null);

}

return;

}

LocationEntry entry = new LocationEntry();

entry.locType = location.getLocType();

loadLocMsg(entry);

entry.city = location.getCity();

entry.longitude = location.getLongitude();

entry.latitude = location.getLatitude();

mCurrLocEntry = entry;

hasResult = true;

if (mResultListener != null) {

mResultListener.onLocationResult(hasResult, mCurrLocEntry);

}

}

};

// 注册定位广播

mLocationClient.registerLocationListener(mListener);

}

private void loadLocMsg(LocationEntry entry) {

String locMsg = "";

switch (entry.locType) {

case 61:

locMsg = "GPS定位结果";

break;

case 62:

locMsg = "扫描整合定位依据失败。此时定位结果无效";

break;

case 63:

locMsg = "网络异常,没有成功向服务器发起请求。此时定位结果无效";

break;

case 65:

locMsg = "定位缓存的结果";

break;

case 66:

locMsg = "离线定位结果。通过requestOfflineLocaiton调用时对应的返回结果";

break;

case 67:

locMsg = "离线定位失败。通过requestOfflineLocaiton调用时对应的返回结果";

break;

case 68:

locMsg = "网络连接失败时,查找本地离线定位时对应的返回结果";

break;

case LOCATION_OK:

locMsg = "定位正常";

break;

case 162:

case 163:

case 164:

case 165:

case 166:

case 167:

locMsg = "服务端定位失败";

break;

case 502:

locMsg = "key参数错误";

break;

case 505:

locMsg = "key不存在或者非法";

break;

case 601:

locMsg = "key服务被开发者自己禁用";

break;

case 602:

locMsg = "key mcode不匹配";

break;

default:

if (entry.locType > 501 && entry.locType <700) {

locMsg &#61; "key验证失败";

}

break;

}

entry.locMsg &#61; locMsg;

}

public boolean isStart() {

return mLocationClient.isStarted();

}

public boolean hasResult() {

return hasResult;

}

/**

* 初始化定位参数

*/

public void initLocationOption() {

mOption.setOpenGps(false);

mOption.setLocationMode(LocationMode.Hight_Accuracy);// 设置定位模式

mOption.setCoorType("bd09ll");// 返回的定位结果是百度经纬度&#xff0c;默认值gcj02

mOption.setScanSpan(mRefreshTime);// 设置发起定位请求的间隔时间为5000ms

mOption.setIsNeedAddress(true);// 返回的定位结果包含地址信息

mOption.setAddrType("all");

mOption.setNeedDeviceDirect(false);// 返回的定位结果包含手机机头的方向

}

/**

* 设置产品名&#xff0c;功能未知

*

* &#64;param name

*/

public void setProdName(String name) {

mOption.setProdName(name);

}

/**

* 设置刷新时间

*

* &#64;param time

*/

public void setRefreshTime(int time) {

mRefreshTime &#61; time;

}

public int getRefreshTime() {

return mRefreshTime;

}

/**

* 开始定位

*/

public void start() {

if (mLocationClient !&#61; null) {

mLocationClient.setLocOption(mOption);

mLocationClient.start();

} else {

Toast.makeText(mContext, "locClient is null ", Toast.LENGTH_SHORT)

.show();

}

}

/**

* 停止定位

*/

public void stop() {

if (mLocationClient !&#61; null && mLocationClient.isStarted()) {

mLocationClient.stop();

}

}

public void destory() {

stop();

mLocationClient &#61; null;

mListener &#61; null;

mCurrLocEntry &#61; null;

mInstance &#61; null;

}

public LocationEntry getLocationEntry() {

return mCurrLocEntry;

}

private OnLocationResultListener mResultListener;

public void setOnLocationResultListener(OnLocationResultListener l) {

mResultListener &#61; l;

}

public class LocationEntry {

int locType;

String locMsg;

String city;

double longitude;

double latitude;

}

public interface OnLocationResultListener {

void onLocationResult(boolean hasResult, LocationEntry entry);

}

}



推荐阅读
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文介绍了如何使用Express App提供静态文件,同时提到了一些不需要使用的文件,如package.json和/.ssh/known_hosts,并解释了为什么app.get('*')无法捕获所有请求以及为什么app.use(express.static(__dirname))可能会提供不需要的文件。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • 如何自行分析定位SAP BSP错误
    The“BSPtag”Imentionedintheblogtitlemeansforexamplethetagchtmlb:configCelleratorbelowwhichi ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Android Studio Bumblebee | 2021.1.1(大黄蜂版本使用介绍)
    本文介绍了Android Studio Bumblebee | 2021.1.1(大黄蜂版本)的使用方法和相关知识,包括Gradle的介绍、设备管理器的配置、无线调试、新版本问题等内容。同时还提供了更新版本的下载地址和启动页面截图。 ... [详细]
  • JavaSE笔试题-接口、抽象类、多态等问题解答
    本文解答了JavaSE笔试题中关于接口、抽象类、多态等问题。包括Math类的取整数方法、接口是否可继承、抽象类是否可实现接口、抽象类是否可继承具体类、抽象类中是否可以有静态main方法等问题。同时介绍了面向对象的特征,以及Java中实现多态的机制。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 本文详细介绍了Spring的JdbcTemplate的使用方法,包括执行存储过程、存储函数的call()方法,执行任何SQL语句的execute()方法,单个更新和批量更新的update()和batchUpdate()方法,以及单查和列表查询的query()和queryForXXX()方法。提供了经过测试的API供使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了Android 7的学习笔记总结,包括最新的移动架构视频、大厂安卓面试真题和项目实战源码讲义。同时还分享了开源的完整内容,并提醒读者在使用FileProvider适配时要注意不同模块的AndroidManfiest.xml中配置的xml文件名必须不同,否则会出现问题。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • Imtryingtofigureoutawaytogeneratetorrentfilesfromabucket,usingtheAWSSDKforGo.我正 ... [详细]
author-avatar
longning817
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有