在Android Studio中使用BaiduMap SDK实时获取当地位置信息_Android

配置BaiduMap 环境

1.在百度API中新建自己的一个APP包名和APP名需要注意和自己Android Studio 中的包名和APP名保持一致;

2.百度地图中还需要填写一个SHA1 数字签名:

a、输入keytool -list -v -keystore debug.keystore,会得到三种指纹证书,选取SHA1类型的证书(密钥口令是android),这个获取到的SHA1的值和ecplise中获取的值是一样的,是作为debug用的。

b、输入keytool -list -v -keystore XXX.keystore,(这个地方xxx.keystore是你生成app签名时的keystore),密钥库口令:为给APP签名时生成xxx.keystore期间所输入的密码,此时获取的SHA1是release版的。

(以上主要是为了得到AppKey,没有AppKey读取的值会有问题)

3.根据需要在(http://lbsyun.baidu.com/sdk/download?selected=location)下载自己需要的SDK包,因为只实现定位所以我这里只下载了定位功能的包;

4.解压下载好的包,为了让app兼容性更好,我把libs下的所有文件及文件夹复制到了app中libs中;

5.配置Manifest文件,首先在Application中添加你获得的AppKey:

<meta-data
android:name="com.baidu.lbsapi.API_KEY"
android:value="这里是你申请的AppKey" /> 

然后紧接著需要注册一个专门供BaiDuMap使用的service(自己不用实现):

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

最后再配置权限,定位所需要用到的一系列权限(这一块在官方文档上也是有的):

<!-- 这个权限用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!-- 这个权限用于访问GPS定位-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- 用于访问wifi网络信息,wifi信息会用于进行网络定位-->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<!-- 获取运营商信息,用于支持提供运营商信息相关的接口-->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- 这个权限用于获取wifi的获取权限,wifi信息会用来进行网络定位-->
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<!-- 用于读取手机当前的状态-->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<!-- 写入扩展存储,向扩展卡写入数据,用于写入离线定位数据-->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 访问网络,网络定位需要上网-->
<uses-permission android:name="android.permission.INTERNET" />
<!-- SD卡读取权限,用户写入离线定位数据-->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 

至此环境配置完成。

实现功能代码

1.在layout写一个TextView用来存放自己定位的信息:

<TextView
android:id="@+id/mytext"
android:layout_width="match_parent"
android:layout_height="wrap_content"
/> 

2.在定位中需要用到一个定位回调接口BDLocationListener和类LocationClient:

① BDLocationListener中一个定位回调函数onReceiveLocation(BDLocation location)返回一个BDLocation定位结果;

② LocationClient类实例化并实现一个定位监听函数(registerLocationListener(BDLocationListener listener));

定义TextView控件和其他方法类:

private TextView textView = null;
private Button button = null;
private LocationClient locationClient = null;
public BDLocationListener myListener = new MyBdlocationListener(); 

实现BDLocationListener(里面的一些判断可以自己去考虑和添加或者需要什么定位信息自行去尝试,这里只是得到了当前地址):

public class MyBdlocationListener implements BDLocationListener{
@Override
public void onReceiveLocation(BDLocation location) {
textView.setText(location.getAddrStr()); } } 

分别得到所有控件和实例:

textView = (TextView) findViewById(R.id.mytext);
button = (Button) findViewById(R.id.mybtn);
locationClient = new LocationClient(getApplicationContext());
locationClient.registerLocationListener(myListener);
initLocation();//初始化LocationgClient
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (locationClient.isStarted()){
locationClient.stop();
}
locationClient.start();
}
}); 

初始化LocationgClient:

private void initLocation(){
LocationClientOption option = new LocationClientOption();
option.setLocationMode(LocationClientOption.LocationMode.Hight_Accuracy
);//可选,默认高精度,设置定位模式,高精度,低功耗,仅设备
option.setCoorType("bd09ll");//可选,默认gcj02,设置返回的定位结果坐标系
int span=1000;
option.setScanSpan(span);//可选,默认0,即仅定位一次,设置发起定位请求的间隔需要大于等于1000ms才是有效的
option.setIsNeedAddress(true);//可选,设置是否需要地址信息,默认不需要
option.setOpenGps(true);//可选,默认false,设置是否使用gps
option.setLocationNotify(true);//可选,默认false,设置是否当gps有效时按照1S1次频率输出GPS结果
option.setIsNeedLocationDescribe(true);//可选,默认false,设置是否需要位置语义化结果,可以在BDLocation.getLocationDescribe里得到,结果类似于“在北京天安门附近”
option.setIsNeedLocationPoiList(true);//可选,默认false,设置是否需要POI结果,可以在BDLocation.getPoiList里得到
option.setIgnoreKillProcess(false);//可选,默认true,定位SDK内部是一个SERVICE,并放到了独立进程,设置是否在stop的时候杀死这个进程,默认不杀死
option.SetIgnoreCacheException(false);//可选,默认false,设置是否收集CRASH信息,默认收集
option.setEnableSimulateGps(false);//可选,默认false,设置是否需要过滤gps仿真结果,默认需要
locationClient.setLocOption(option);
} 

至此所有步骤完成,可以尝试运行一下!

在Android Studio中使用BaiduMap SDK实时获取当地位置信息的相关知识就给大家介绍到这里,希望对大家有所帮助!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索android_studio_sdk
baidumapsdk
baidumapsdk、baidumapsdknew、libbaidumapsdk、baidumapsdk文件夹、baidumapsdk.demo key,以便于您获取更多的相关知识。

时间: 2024-09-11 03:35:40

在Android Studio中使用BaiduMap SDK实时获取当地位置信息_Android的相关文章

Android Studio中SDK Location没有了,不能设置sdk的路径

问题描述 Android Studio中SDK Location没有了,不能设置sdk的路径 今天脑子迷迷糊糊的,不知道点了什么东西,自己项目就出问题,然后自己重新重新配置sdk路径也找不到,将IDE卸载重新安装还是老样子,真的很蛋疼. 求求大家们帮帮我,谢谢大家了! 解决方案 Android Studio 怎么设置JDK和SDK的路径Android studio 没有SDK location设置选项Android Studio设置代理更新下载SDK

图片-android studio 中布局无法预览 ,总是出现无法找到SDK

问题描述 android studio 中布局无法预览 ,总是出现无法找到SDK 解决方案 关于Android Studio 中布局无法预览的问题 解决方案二: SDK路径设置了没,SDK下载了没. 解决方案三: 一般是用View->ToolWindow->preview,这个预览方便,能和代码一起看 解决方案四: 楼上说的方法就能解决了 解决方案五: 你的机器人那是是"null",说明没有API呀!你将SDK 配置好,在预览一下布局文件. 解决方案六: File/Proj

Android Studio中如何打JAR包

 Android Studio中对于library类型的Moudle,默认打出来的是AAR包,  但有时候我们的SDK还需要共享给一些其他eclipse的项目使用,这样我们就需要输出JAR包,  可以通过在Moudle中的build.gradle加入task来实现   1 2 3 4 5 6 7 8 9 task makeJar(type: Copy) {     delete 'build/libs/mysdk.jar'     from('build/intermediates/bundle

Android Studio中配置OpenCV库开发环境的教程_Android

1.下载进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,在

在 android studio中如何查看android源码

问题描述 在 android studio中如何查看android源码 比如要看 Activity.class源码 比如要看 Activity.class源码 比如要看 Activity.class源码 比如要看 Activity.class源码 解决方案 声明一个Activity变量,按住ctrl,鼠标点击Activity字样 解决方案二: Android Studio 作为Google的亲儿子,Nexus手机系列所收到的待遇大家有目共睹.Android5.0出来之后,Nexus5第一时间就升

android studio中的preview显示空白

问题描述 android studio中的preview显示空白 刚刚接触android studio,今天新建项目的时候,出现了preview中rendering problems,我进行更新后没有再报错,但是现在显示一片空白,请教各位大神这是什么情况 解决方案 这个sdk version更改一下其他值 解决方案二: 而且我已经在style文件里加了Base.,还是没用 解决方案三: 右上方 sdk 版本可能选的不对

如何在Android Studio中指定NDK位置?

如何在Android Studio中指定NDK位置? 问题描述 NDK已经手工下载解包在本地: D:\Portable\android-ndk-r13b 每次创建支持C++项目时,都提示NDK没配置,都要手工指定一次NDK位置. Error:NDK not configured. Download it with SDK manager.) 如何在Android Studio中指定NDK位置,以避免每次创建都手工指定? 截图 系统信息: Android Studio 2.2.2 Windows

Android Studio中配置OpenCV库开发环境的教程

1.下载 进入官网(http://opencv.org/)下载OpenCV4Android并解压.目录结构如下图所示. 其中,sdk目录即是我们开发opencv所需要的类库:samples目录中存放着若干opencv应用示例(包括人脸检测等),可为我们进行android下的opencv开发提供参考:doc目录为opencv类库的使用说明及api文档等:而apk目录则存放着对应于各内核版本的OpenCV_2.4.3.2_Manager_2.4应用安装包.此应用用来管理手机设备中的opencv类库,

详解Android studio中正确引入so文件的方法

相信很多朋友在使用Android studio开发中,遇到过如何引入第三方so文件的问题,然而第三方官方仅仅给出了ADT环境下的集成方式. Android studio中默认使用的是gradle编译方式,与ADT编辑方式不一样,那么so文件应当如何引入呢? 其实很简单.这里以集成JPUSH为例,看一下so文件如何引入到编译环境,最终到JNI直接可以调用该so文件. 首先,在我们的Module的根目录中建立libs目录,将jpush集成SDK中的so文件分别拷入,截图如下: 然后就是编写我们的bu