一、问题描述

LBS位置服务是android应用中重要的功能,应用越来越广泛,下面我们逐步学习和实现lbs相关的应用如定位、地图、导航等,首先我们看如何基于百度地图实现定位功能

二、配置环境

2、下载定位SDK,并导入SDK如图所示:

三、编写MyApplication类

编写MyApplication类,为了使用方便我们可以将实现定位的方法封装的Application组件中

封装下列方法

1、  获取定位信息——requestLocationInfo()

2、  通过广播发送位置信息——sendBroadCast()

3、  停止定位——stopLocationClient()

public class MyApplication extends Application{

public LocationClient mLocationClient = null;

public GeofenceClient mGeofenceClient;

public MyLocationListenner myListener = new MyLocationListenner();

public static String TAG = "MyApplication";

private static MyApplication mInstance = null;

@Override

public void onCreate(){

mInstance = this;

mLocationClient = new LocationClient(this);

/**

* 项目的key,自己到官网申请 http://lbsyun.baidu.com/apiconsole/key

*/

mLocationClient.setAK("你的应用Key");

mLocationClient.registerLocationListener(myListener);

mGeofenceClient = new GeofenceClient(this);

super.onCreate();

Log.d(TAG, "... Application onCreate... pid=" + Process.myPid());

}

public static MyApplication getInstance(){

return mInstance;

}

/**

* 停止定位

*/

public void stopLocationClient(){

if (mLocationClient != null && mLocationClient.isStarted()){

mLocationClient.stop();

}

}

/**

* 发起定位

*/

public void requestLocationInfo(){

setLocationOption();

if (mLocationClient != null && !mLocationClient.isStarted()){

mLocationClient.start();

}

if (mLocationClient != null && mLocationClient.isStarted()){

mLocationClient.requestLocation();

}

}

/**

* 设置百度地图的相关参数

*/

private void setLocationOption(){

LocationClientOption option = new LocationClientOption();

option.setOpenGps(true); // 打开gps

option.setCoorType("bd09ll"); // 设置坐标类型

option.setServiceName("com.baidu.location.service_v2.9");

option.setPoiExtraInfo(true);

option.setAddrType("all");

option.setPoiNumber(10);

option.disableCache(true);

mLocationClient.setLocOption(option);

}

/**

* 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中

*/

public class MyLocationListenner implements BDLocationListener

{

@Override

public void onReceiveLocation(BDLocation location){

if (location == null){

sendBroadCast("定位失败!");

return;

}

sendBroadCast(location.getAddrStr());

}

public void onReceivePoi(BDLocation poiLocation){

if (poiLocation == null){

sendBroadCast("定位失败!");

return;

}

sendBroadCast(poiLocation.getAddrStr());

}

}

/**

* 得到发送广播

* @param address

*/

public void sendBroadCast(String address){

stopLocationClient();

Intent intent = new Intent(MainActivity.LOCATION_BCR);

intent.putExtra("address", address);

sendBroadcast(intent);

}

}

三、 主程序MainActivity

public class MainActivity extends Activity{

public static String TAG = "LocTestDemo";

private BroadcastReceiver broadcastReceiver;

public static String LOCATION_BCR = "location_bcr";

private Button locBtn;

private TextView locInfo;

private MyApplication application;

@Override

protected void onCreate(Bundle savedInstanceState){

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

application=(MyApplication)super.getApplication();

initialize();

initializeViews();

initializeListeners();

}

private void initialize(){

registerBroadCastReceiver();//注册广播

}

private void initializeViews()

{

locBtn = (Button) findViewById(R.id.location);

locInfo = (TextView) findViewById(R.id.location_info);

}

private void initializeListeners()

{

locBtn.setOnClickListener(new OnClickListener(){

@Override

public void onClick(View v){

locInfo.setText("定位中...");

//调用请求定位信息

application.requestLocationInfo();

}

});

}

/**

* 注册一个广播,监听定位结果,接受广播获得地址信息

*/

private void registerBroadCastReceiver()

{

broadcastReceiver = new BroadcastReceiver(){

public void onReceive(Context context, Intent intent){

String address = intent.getStringExtra("address");

locInfo.setText(address);

}

};

IntentFilter intentToReceiveFilter = new IntentFilter();

intentToReceiveFilter.addAction(LOCATION_BCR);

registerReceiver(broadcastReceiver, intentToReceiveFilter);

}

@Override

protected void onDestroy(){

super.onDestroy();

unregisterReceiver(broadcastReceiver);

}

}

四、 AndroidManifest.xml配置信息

package="com.jereh.baidulocation"

android:versionCode="1"

android:versionName="1.0" >

android:minSdkVersion="8"

android:targetSdkVersion="17" />

android:name="com.jereh.baidulocation.MyApplication"

android:allowBackup="true"

android:icon="@drawable/ic_launcher"

android:label="@string/app_name"

android:theme="@style/AppTheme" >

android:name="com.jereh.baidulocation.MainActivity"

android:label="@string/app_name" >

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

android:enabled="true"

android:process=":remote" >

android使用地图编程,基于Android实现百度地图定位过程详解相关推荐

  1. android 蓝牙hf编程,基于Android蓝牙Inband ring功能实现.doc

    基于Android蓝牙Inband ring功能实现 基于Android蓝牙Inband ring功能实现 [摘要] 蓝牙作为一种短距无线数据与语音传输的开放性全球规范,目前在整个世界范围内都得到了很 ...

  2. Android APK文件结构 完整打包编译的流程 APK安装过程 详解

    Android apk文件结构 打包编译的流程 Android官网 配置构建 流程 Configure your build The build process APK文件结构 assets res ...

  3. python爬百度翻译-Python爬虫实现百度翻译功能过程详解

    首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码 ...

  4. python实现翻译功能_Python爬虫实现百度翻译功能过程详解

    首先,需要简单的了解一下爬虫,尽可能简单快速的上手,其次,需要了解的是百度的API的接口,搞定这个之后,最后,按照官方给出的demo,然后写自己的一个小程序 打开浏览器 F12 打开百度翻译网页源代码 ...

  5. 多功能复合机基于用户认证功能的实现过程详解

    多功能复合机基于用户认证功能的实现方法                                          -----网络设备共享案例分析 公司需求:***是一家租售写字楼的服务性企业, ...

  6. python做一副54扑克牌发牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  7. python随机输出52张牌_基于Python制作一副扑克牌过程详解

    整理一下通过本文分享给大家, 该案例是通过 Python 类属性创建一幅除去大王.小王之后的 52 张扑克牌,并实现随机抽牌.排序.洗牌等功能: 创建一个纸牌类 一副扑克除去大王小王之外,剩下的 52 ...

  8. vscode 调试html页面,基于VSCode调试网页JavaScript代码过程详解

    一.调试准备 Windows10 64bits IDE:Visual Studio Code1.28.2 安装插件:Chrome(安装方法:Debug -> Install Additional ...

  9. lc filter在matlab哪,基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...

  10. matlab filter函数原理,基于python实现matlab filter函数过程详解

    matlab中的filter函数: y = filter(b,a,x) python实现matlab中的filter函数 def filter_matlab(b,a,x): y = [] y.appe ...

最新文章

  1. 用composer安装laravel-bjyblog
  2. 异步爬虫框架与协程浅析
  3. 为什么要学习响应式设计
  4. 求数组的最大子数组和最大子数组的和
  5. python如何实现多进程_Python实现多进程的四种方式
  6. 国内程序员最容易发音错误的单词集合
  7. 利用阿里云自定义镜像实现服务器数据/网站快速迁移
  8. 韵乐x5最佳参数手动_4种超参数调整技术及其局限性
  9. php根据id查找条件怎么写_thinkphp where()条件查询
  10. OpenShift 4 - 安装 OpenShift 集群后如何删除节点或增加新节点
  11. hadoop中的序列化和反序列化
  12. 华为海思智能手机处理器及其参数对比
  13. 开学必备宿舍神器,续航好的蓝牙耳机推荐
  14. 程序员的自我修养(收藏)
  15. 小学生学计算机步骤,小学生计算机入门“五步走”
  16. 硬盘损坏的解决方法(MBR主引导记录的恢复)
  17. #442 不叁不肆:独居,阳了,没事,快好了
  18. flink的基础介绍
  19. linux xdm服务无法关闭,Linux远程操控XDM认识和配置
  20. python自动下载酷狗音乐_Python下载酷狗音乐

热门文章

  1. 拓端tecdat|R语言参数检验 :需要多少样本?如何选择样本数量
  2. linux下MySQL密码修改过程记录
  3. 【深度学习】论文导读:GoogLeNet模型,Inception结构网络简化(Going deeper with convolutions)
  4. DeepLearning tutorial(7)深度学习框架Keras的使用-进阶
  5. Keras中的时间分布层TimeDistributed Layer使用教程
  6. 淘沙潜行,数一数英雄的多姿,王者荣耀英雄、皮肤、武器展览
  7. Python命令行程序项目自动化GUI显示操作神器Gooey实践
  8. python实践winrm,实现远程连接Windows服务器,并执行指定命令
  9. opencv 滑动条创建
  10. linux docker位置查找,linux – 如何在Docker中获取依赖子图像列表?