Android 百度定位SDKv4.2及6.0_百度定位實例_安卓定位實例

介紹

由於項目需要、前幾天一直在研究百度定位的功能、通過不斷的實踐終於有結果了、不願意獨享

現在我把我的研究成果和大家分享一下、其實百度的 API 已經相當不錯了

這之所以要寫出來、一是自己做一個筆記、二是以方便一起朋友少走彎路

導入庫文件

在相關下載最新的庫文件、將liblocSDK4d.so文件拷貝到libs/armeabi目錄下

將locSDK4.2.jar文件拷貝到工程的libs目錄下、並在工程屬性->Java Build Path->Libraries中選擇“Add JARs”

選定locSDK4.2.jar、確定後返回、這樣您就可以在程序中使用百度定位SDK了

設置AndroidManifest.xml
在application標籤中聲明service組件、每個app擁有自己單獨的定位service

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

聲明使用權限

<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>
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />

使用基本定位功能
基本定位功能指的根據用戶實際需求、返回用戶當前位置的基礎定位服務

包含GPS和網絡定位(Wi-Fi和基站定位)功能、基本定位功能同時還支持結合定位結果的反地理編碼功能

離線定位、位置提醒功能和地理圍欄功能

package com.baidu.baidulocationdemo;

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;
import com.baidu.location.LocationClientOption.LocationMode;

public class LocationActivity extends Activity{
    private LocationClient mLocationClient;
    private TextView LocationResult;
    private Button startLocation;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        setContentView(R.layout.location);
        mLocationClient = new LocationClient(this.getApplicationContext());
        mLocationClient.registerLocationListener(new MyLocationListener());

        LocationResult = (TextView)findViewById(R.id.textView1);
        startLocation = (Button)findViewById(R.id.addfence);
        startLocation.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                InitLocation();

                if(startLocation.getText().equals(getString(R.string.startlocation))){
                    mLocationClient.start();
                    startLocation.setText(getString(R.string.stoplocation));
                }else{
                    mLocationClient.stop();
                    startLocation.setText(getString(R.string.startlocation));
                }


            }
        });

    }

    @Override
    protected void onStop() {
        // TODO Auto-generated method stub
        mLocationClient.stop();
        super.onStop();
    }

    private void InitLocation(){
        LocationClientOption option = new LocationClientOption();
        option.setLocationMode(LocationMode.Hight_Accuracy);//設置定位模式
        //option.setCoorType(tempcoor);//返回的定位結果是百度經緯度,默認值gcj02
        int span=1000;
        option.setScanSpan(span);//設置發起定位請求的間隔時間爲5000ms
        option.setIsNeedAddress(true);
        mLocationClient.setLocOption(option);
    }

    /**
     * 實現實位回調監聽
     */
    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("error code : ");
            sb.append(location.getLocType());
            sb.append("latitude : ");
            sb.append(location.getLatitude());
            sb.append("lontitude : ");
            sb.append(location.getLongitude());
            sb.append("radius : ");
            sb.append(location.getRadius());
            if (location.getLocType() == BDLocation.TypeGpsLocation){
                sb.append("speed : ");
                sb.append(location.getSpeed());
                sb.append("satellite : ");
                sb.append(location.getSatelliteNumber());
                sb.append("direction : ");
                sb.append("addr : ");
                sb.append(location.getAddrStr());
                sb.append(location.getDirection());
            } else if (location.getLocType() == BDLocation.TypeNetWorkLocation){
                sb.append("addr : ");
                sb.append(location.getAddrStr());
                //運營商信息
                sb.append("operationers : ");
                sb.append(location.getOperators());
            }
            LocationResult.setText(sb.toString());
            Log.i("dwtedx", sb.toString());
        }
    }
}

到這裏一個簡單的百度定位demo就可以實現了、那麼需要注意的是一定要在 libs 下面引入 armeabi/liblocSDK4d.so

若資源對你有幫助、掃描下方的二維碼、關注DD博客微信公衆號(ddblogs)吧

最後給貼上Demo的源代碼、希望對大家有用、有興趣的哥們可以下載看看
源代碼下載鏈接:http://dwtedx.com/download.html?bdkey=s/1o689PBO密碼: m65a

原文:http://dwtedx.com/itshare_158.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章