国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

百度定位sdk接入

2019-11-09 14:49:28
字體:
來源:轉載
供稿:網友

1:根據百度官方文檔配置后臺

2:c++代碼

a:LexLocation.hpp

#PRagma once

#include <string>

#include <functional>

namespace Lex

{

void InitLocation();

bool GetCity(std::function<void(std::string)> OnLocationResult);

}

b:LexLocation.cpp

#include "LexLocation.hpp"

#include "cocos2d.h"

#include "platform/android/jni/JniHelper.h"

static std::function<void(std::string)> OnLocationResult;

namespace  Lex

{

void OnResult(std::string city)

{

if (OnLocationResult) OnLocationResult(city);

OnLocationResult = nullptr;

}

extern"C" {

void java_lexlib_bdLocate_BDLocateCall_Result(JNIEnv *env, jobject obj, jstring jresult)

{

       std::string result = env->GetStringUTFChars(jresult,nullptr);

CCLOG("11111111111111111111111111111111111%s", result.data());

OnResult(result);

}

}

bool Locate()

{

cocos2d::JniMethodInfo payM;

bool isHave = cocos2d::JniHelper::getStaticMethodInfo(payM,"lexlib/bdLocate/BDLocateCall","StartLocate",

  "()V");

bool resulte =false;

if (isHave)

{

payM.env->CallStaticVoidMethod(payM.classID, payM.methodID);

}

else

{

return false;

CCLOG("get StartLocate function is fail");

}

returntrue;

}

void InitLocation()

{

cocos2d::JniMethodInfo payM;

bool isHave = cocos2d::JniHelper::getStaticMethodInfo(payM,"lexlib/bdLocate/BDLocateCall","InitLocation",

  "()V");

if(isHave)

{

payM.env->CallStaticVoidMethod(payM.classID, payM.methodID);

}

else

{

CCLOG("get InitLocation function is fail");

}

}

bool GetCity(std::function<void(std::string)> _OnLocationResult)

{

OnLocationResult = _OnLocationResult;

return Locate();

}

}

3:java代碼

a:BDLocateCall.java

package lexlib.bdLocate;

import org.cocos2dx.cpp.AppActivity;

import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

import android.R.bool;

import android.util.Log;

public class BDLocateCall {

publicstatic void InitLocation()

    {

    AppActivity.mainAct.runOnUiThread(new Runnable(){

    publicvoid run() 

{

BDLocateSDK.initLocation();

}

    });

    }

publicstatic void StartLocate()

{

Log.v("333333","66666666666");

AppActivity.mainAct.runOnUiThread(new Runnable(){

    publicvoid run() 

{

  BDLocateSDK.start();

}

    });

}

    

    publicstatic void _Result(final String res)

    {

    Cocos2dxGLSurfaceView.getInstance().queueEvent(new Runnable()

{

      publicvoid run()

      {

      Result(res);

      }

});

    }

    

    nativepublic staticvoid Result(String city);

}

b:BDLocateSDK.java

package lexlib.bdLocate;

import android.app.Activity;

import java.util.List;

import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

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;

//import com.baidu.location.BDNotifyListener;//假如用到位置提醒功能,需要import該類

import com.baidu.location.Poi;

import android.util.Log;

public class BDLocateSDK {

publicstatic LocationClient mLocationClient =null;

publicstatic Activity act = null;

publicstatic class MyLocationListenerimplements BDLocationListener 

{

 

        @Override

        publicvoid onReceiveLocation(BDLocation location) 

        {

            //Receive Location

        StringBuffer sb = new StringBuffer(256);

        

        if (location.getLocType() == BDLocation.TypeGpsLocation){// GPS定位結果

                sb.append(location.getProvince());

                sb.append(".");

                sb.append(location.getCity());

                BDLocateCall._Result(sb.toString());

                

            } elseif (location.getLocType() == BDLocation.TypeNetWorkLocation){//網絡定位結果

            sb.append(location.getProvince());

                sb.append(".");

                sb.append(location.getCity());

                BDLocateCall._Result(sb.toString());

                

            } elseif (location.getLocType() == BDLocation.TypeOffLineLocation) {//離線定位結果

                BDLocateCall._Result(sb.toString());

            } else {

            String s = " ";

            s = s + location.getLocType();

            Log.v("222222", s);

            }

        }

            

}

publicstatic void init(Activity activity )

{

act = activity;

}

publicstatic void initLocation()

{

if(mLocationClient ==null)

{

mLocationClient = new LocationClient(act); 

final BDLocationListener listener =new MyLocationListener();

mLocationClient.registerLocationListener(listener);

}

LocationClientOption option =new LocationClientOption();

        option.setLocationMode(LocationMode.Hight_Accuracy);//可選,默認高精度,設置定位模式,高精度,低功耗,僅設備

        option.setCoorType("bd09ll");//可選,默認gcj02,設置返回的定位結果坐標系

        int span=0;

        option.setScanSpan(span);//可選,默認0,即僅定位一次,設置發起定位請求的間隔需要大于等于1000ms才是有效的

        option.setIsNeedAddress(true);//可選,設置是否需要地址信息,默認不需要

        option.setOpenGps(true);//可選,默認false,設置是否使用gps

        option.setLocationNotify(true);//可選,默認false,設置是否當GPS有效時按照1S/1次頻率輸出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仿真結果,默認需要

        mLocationClient.setLocOption(option);

}

publicstatic void start()

{

mLocationClient.start();

}

}


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和平区| 崇州市| 昌邑市| 留坝县| 高碑店市| 于都县| 南阳市| 仪征市| 东港市| 都匀市| 海南省| 定陶县| 峨眉山市| 和平区| 五莲县| 满洲里市| 南丰县| 西畴县| 绿春县| 赤壁市| 普兰店市| 浪卡子县| 宝应县| 喜德县| 漳浦县| 江川县| 奉节县| 白水县| 广水市| 都兰县| 林口县| 辽中县| 海南省| 福海县| 娄烦县| 绥棱县| 全南县| 濮阳市| 辽阳市| 文山县| 襄樊市|