百度地图sdk使用中遇到的问题总结

来源:互联网 发布:angularjs 数组 push 编辑:程序博客网 时间:2024/05/22 07:09

1. 添加liblocSDK4d.so/BaiduLBS_Android.jar

在libs/armeabi/下添加liblocSDK4d.so

在libs/下添加BaiduLBS_Android.jar

另外如果是使用Android Studio的同学要在build.gradle中加上以下的内容:

<span style="font-family:Microsoft YaHei;font-size:14px;">    sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }</span>

这样你的build.gradle会看起来像这个样子:

<span style="font-family:Microsoft YaHei;font-size:14px;">apply plugin: 'com.android.application'android {    compileSdkVersion 21    buildToolsVersion "21.1.2"    defaultConfig {        applicationId "com.xxx"        minSdkVersion 14        targetSdkVersion 21        versionCode 1        versionName "1.0"    }    buildTypes {        release {            minifyEnabled false            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'        }    }    compileOptions {        sourceCompatibility JavaVersion.VERSION_1_7        targetCompatibility JavaVersion.VERSION_1_7    }    packagingOptions {        exclude 'META-INF/DEPENDENCIES'        exclude 'META-INF/NOTICE'        exclude 'META-INF/LICENSE'        exclude 'META-INF/LICENSE.txt'        exclude 'META-INF/NOTICE.txt'    }    sourceSets {        main {            jniLibs.srcDirs = ['libs']        }    }}dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    compile 'com.android.support:appcompat-v7:21.0.3'    compile 'com.koushikdutta.ion:ion:2.+'    compile 'de.hdodenhof:circleimageview:1.3.0'    compile project(':unicorn')    //    compile files('libs/ion.jar')    //    compile files('libs/ksoap2-android.jar')    //    compile files('libs/pull_library.jar')    //    compile files('libs/imageloader.jar')    //    compile files('libs/cropper.jar')    compile files('libs/sun.misc.BASE64Decoder.jar')    compile files('libs/BaiduLBS_Android.jar')}</span>



2.在AndroidManifest.xml中加入API_KEY和com.baidu.location.f以及相关权限

API_KEY要填你自己申请的,不会的话看这里 http://blog.csdn.net/thinkinwm/article/details/46916531

<span style="font-family:Microsoft YaHei;font-size:14px;"><?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"    package="com.xxx" >    <application        android:name=".core.ContextApplication"        android:allowBackup="true"        android:icon="@drawable/app_icon"        android:label="@string/app_name"        android:theme="@style/AppTheme" >        <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需要写在application中 -->        <meta-data            android:name="com.baidu.lbsapi.API_KEY"            android:value="yourkeyhere" />        ...        <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>    </application>    <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"/></manifest></span>

3. 调用代码

    private LocationClientOption.LocationMode tempMode = LocationClientOption.LocationMode.Hight_Accuracy;    private String                            tempcoor = "gcj02";    private LocationClient     mLocationClient;    public  MyLocationListener mMyLocationListener;    /**     * 实现实位回调监听     */    public class MyLocationListener implements BDLocationListener    {        @Override        public void onReceiveLocation(BDLocation location)        {            //Receive Location            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());                sb.append("\ndirection : ");                sb.append("\naddr : ");                sb.append(location.getAddrStr());                sb.append(location.getDirection());            }            else if (location.getLocType() == BDLocation.TypeNetWorkLocation)            {                sb.append("\naddr : ");                sb.append(location.getAddrStr());                //运营商信息                sb.append("\noperationers : ");                sb.append(location.getOperators());            }            Log.d("BaiduLocation", sb.toString());            mLocationClient.stop();        }    }    private void initLocationClient()    {        mLocationClient = new LocationClient(getApplicationContext());        mMyLocationListener = new MyLocationListener();        mLocationClient.registerLocationListener(mMyLocationListener);        LocationClientOption option = new LocationClientOption();        option.setLocationMode(tempMode);//设置定位模式        option.setCoorType(tempcoor);//返回的定位结果是百度经纬度,默认值gcj02        option.setScanSpan(1000);//设置发起定位请求的间隔时间为5000ms        option.setIsNeedAddress(true);        mLocationClient.setLocOption(option);        mLocationClient.start();    }

4. 可能被坑到的地方


new LocationClient(getApplicationContext()),请使用getApplicationContext()而不要使用Activity的Context


mLocationClient.start()调用后马上去获取mLocationClient.isStarted()会返回false。。。

从实际情况看它就是这样的,也许是相关服务启动需要时间。。。只要你能在BDLocationListener收到回调就行



0 0
原创粉丝点击