百度Android 定位SDK v4.0示例
来源:互联网 发布:店铺推广淘宝客亏死了 编辑:程序博客网 时间:2024/05/07 03:40
之前项目中用到了百度定位SDK v3.4,现需要升级到v4.0版本,于是乎去百度开放平台看了Android 定位SDKv4.0文档
链接地址:http://developer.baidu.com/map/geosdk-android.htm
百度Android平台定位 SDK自v4.0版本开始引用了Key验证体系。因此,当您选择使用v4.0及之后版本的定位SDK时,需要先申请且配置Key,并在程序相应位置填写您的Key。(选择使用v3.3及之前版本SDK的开发者,不需要使用Key)
Key机制:每个Key仅且唯一对于1个应用验证有效,即对该Key配置环节中使用的包名匹配的应用有效。因此,多个应用【包括多个包名】需申请多个Key,或者对1个Key进行多次配置。
具体可参考 申请密钥 http://developer.baidu.com/map/geosdk-android-key.htm
PS:百度Android平台定位SDK 文档的确要比高德的文档写的详细完整一些,后面会介绍高德Android平台定位SDK
申请完Key之后就简单很多啦,这里以最新的V4.0版本为例。
1、导入库文件
将liblocSDK4.so文件拷贝到libs/armeabi目录下。将locSDK4.0.jar文件拷贝到工程的libs目录下,并在工程属性->Java Build Path->Libraries中选择“Add JARs”,选定locSDK4.0.jar,确定后返回。
2、设置AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.baiduloc.test" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="18" /> <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> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="com.baiduloc.test.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <service android:name="com.baidu.location.f" android:enabled="true" android:process=":remote" > </service> </application></manifest>
3、使用LocationClient定位
package com.baiduloc.test;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;public class MainActivity extends Activity implements OnClickListener {private static final String TAG = MainActivity.class.getSimpleName();private TextView tv_address;private LocationClient mLocationClient;private MyLocationListenner myListener;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);mLocationClient = new LocationClient(getApplicationContext());/**—————————————————————————————————————————————————————————————————— * 这里的AK和应用签名包名绑定,如果使用在自己的工程中需要替换为自己申请的Key * —————————————————————————————————————————————————————————————————— */mLocationClient.setAK("dMGlsmpHOollXfGZ8jKfMpjQ");myListener = new MyLocationListenner();mLocationClient.registerLocationListener(myListener);findView();}private void findView() {Button bt_start = (Button) findViewById(R.id.bt_start);tv_address = (TextView) findViewById(R.id.tv_address);bt_start.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.bt_start:if (mLocationClient != null){//if (mLocationClient != null && mLocationClient.isStarted()){Log.i(TAG, "start position");setLocationOption();mLocationClient.start();mLocationClient.requestLocation();}else{Log.d(TAG, "locClient is null or not started");}break;default:break;}}//设置相关参数private void setLocationOption(){LocationClientOption option = new LocationClientOption();option.setOpenGps(true);//打开gpsoption.setCoorType("bd09ll");//设置坐标类型option.setServiceName("com.baidu.location.service_v2.9");option.setAddrType("all");option.setScanSpan(2000);//设置定位模式,小于1秒则一次定位;大于等于1秒则定时定位//option.setPriority(LocationClientOption.NetWorkFirst); //设置网络优先option.setPriority(LocationClientOption.GpsFirst); //不设置,默认是gps优先//option.setPoiNumber(5);//最多返回POI个数//option.setPoiDistance(1000); //poi查询距离//option.setPoiExtraInfo(true); //是否需要POI的电话和地址等详细信息option.disableCache(true);mLocationClient.setLocOption(option);}/** * 监听函数,有更新位置的时候,格式化成字符串,输出到屏幕中 */public class MyLocationListenner implements BDLocationListener {@Overridepublic void onReceiveLocation(BDLocation location) {if (location == null)return ;StringBuffer sb = new StringBuffer(256);sb.append("time : ");sb.append(location.getTime());sb.append("\nerror code : ");sb.append(location.getLocType());sb.append("\nlatitude : ");sb.append(location.getLatitude());sb.append("\nlontitude : ");sb.append(location.getLongitude());sb.append("\nradius : ");sb.append(location.getRadius());if (location.getLocType() == BDLocation.TypeGpsLocation){sb.append("\nspeed : ");sb.append(location.getSpeed());sb.append("\nsatellite : ");sb.append(location.getSatelliteNumber());} else if (location.getLocType() == BDLocation.TypeNetWorkLocation){/** * 格式化显示地址信息 */sb.append("\n省:");sb.append(location.getProvince());sb.append("\n市:");sb.append(location.getCity());sb.append("\n区/县:");sb.append(location.getDistrict());sb.append("\naddr : ");sb.append(location.getAddrStr());}sb.append("\nsdk version : ");sb.append(mLocationClient.getVersion());sb.append("\nisCellChangeFlag : ");sb.append(location.isCellChangeFlag());Log.i(TAG, sb.toString());tv_address.setText(sb.toString());}public void onReceivePoi(BDLocation poiLocation) {if (poiLocation == null){return ; }StringBuffer sb = new StringBuffer(256);sb.append("Poi time : ");sb.append(poiLocation.getTime());sb.append("\nerror code : "); sb.append(poiLocation.getLocType());sb.append("\nlatitude : ");sb.append(poiLocation.getLatitude());sb.append("\nlontitude : ");sb.append(poiLocation.getLongitude());sb.append("\nradius : ");sb.append(poiLocation.getRadius());if (poiLocation.getLocType() == BDLocation.TypeNetWorkLocation){sb.append("\naddr : ");sb.append(poiLocation.getAddrStr());} if(poiLocation.hasPoi()){sb.append("\nPoi:");sb.append(poiLocation.getPoi());}else{sb.append("noPoi information");}Log.i(TAG, sb.toString());}}@Overridepublic void onStop() {if(mLocationClient!=null){mLocationClient.stop();mLocationClient = null;}super.onStop();}}
Demo下载:http://download.csdn.net/detail/fx_sky/6877595
- 百度Android 定位SDK v4.0示例
- 百度Android 定位SDK示例
- 百度定位SDK使用V4.0
- 百度定位SDK使用V4.0
- 百度定位SDK使用V4.0
- Android基于百度定位SDK v4.1(LBS)实现定位功能
- android 百度SDK定位
- 百度定位SDK Android v7.0 使用方法
- 百度地图SDK V3.2 和百度定位SDK V4.2 完成定位功能
- Android 百度地图SDK定位
- android定位二(百度定位SDK)
- [android]百度定位sdk报错
- 百度地图SDK for Android【定位】
- 百度地图Android定位SDK的API
- Android使用GSP和百度SDK定位
- Android学习之百度定位SDK
- Android--定位 基于百度地图SDK
- android 百度地图定位SDK使用方法
- makefile之一
- Oracle 分页存储过程
- HDU3639--Hawk-and-Chicken(强连通+缩点+反向图)
- BeanUtils.copyProperties与PropertyUtils.copyProperties用法及区别
- xstream fromxml时,处理NumberFormatException及忽略多余xml节点的问题
- 百度Android 定位SDK v4.0示例
- Ubuntu 更新glibc
- POJ2186 Popular Cows 强联通求出度为零
- ie下获得跳转来源修复
- ios7无导航条状态栏显示异常
- Youtube 视频下载,字幕提取方法
- Spring3 MVC详解三
- sdffhkjhkjlklkjl;kjlj
- 软考小结