Android 百度導航SDK

官方文檔:http://lbsyun.baidu.com/index.php?title=android-navsdk

1.簡介

百度Android 導航SDK是一套基於Android 2.1及以上版本設備的應用程序接口,您可以通過該接口實現專業的導航功能:
語音播報:SDK集成了TTS模塊,TTS模塊播報相應的誘導語音,暫時支持中文。
自定義圖層:開發者可以自定義圖層。
路線規劃及導航:通過輸入起點,終點,(途經點),可以發起路線規劃,規劃成功後即自動進入導航。支持GPS導航、模擬導航、文字導航和HUD導航。

2.創建測試語音導航項目

1)AndroidManifest.xml
增加權限,聲明service和ak鑑權
    <uses-permission android:name="android.permission.BODY_SENSORS"/>
    <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
    <uses-permission android:name="android.permission.BAIDU_LOCATION_SERVICE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCES_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
    <uses-permission android:name="android.permission.ACCESS_GPS" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.BROADCAST_STICKY" />
    <uses-permission android:name="android.permission.WRITE_SETTINGS" />
    <!-- 來電消音 -->
    <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <!-- 攝影機 -->
    <uses-permission android:name="android.permission.CAMERA" />
    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">

        <meta-data
            android:name="BaiduMobAd_STAT_ID"
            android:value="48ae76de3f" />
        <meta-data android:name="com.baidu.lbsapi.API_KEY"
            android:value="bAZLoLtUxVPWs6fpnRBLOY8yFHjKu0jE" />

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

2)導入項目所需的jar包和so
把jar包放入lib目錄下
BaiduNaviSDK_3.3.1.jar
galaxy_lite_lbs_v2.0.jar
httpmime-4.1.2.jar
lbsCoreSDK.jar



把armeabi目錄下的所有so放到libs/armeabi下
在build.gradle android{}中加入
 sourceSets {
        main {
            jniLibs.srcDir 'libs'
        }
    }
把assets目錄下的所有資源文件放到app/src/main/assets目錄下
3)初始化
在使用SDK前,應該先進行百度服務授權和引擎初始化
       BaiduNaviManager.getInstance().init(this,
                Environment.getExternalStorageDirectory().toString(),
                "BNSDKSimpleDemo",
                new BaiduNaviManager.NaviInitListener() {
                    @Override
                    public void onAuthResult(int status, String msg) {
                        if (0 == status) {
                            authinfo = "key校驗成功!";
                        } else {
                            authinfo = "key校驗失敗, " + msg;
                        }
                        MainActivity.this.runOnUiThread(new Runnable() {

                            @Override
                            public void run() {
                                Toast.makeText(MainActivity.this, authinfo, Toast.LENGTH_LONG).show();
                            }
                        });
                    }

                    public void initSuccess() {
                        Toast.makeText(MainActivity.this, "百度導航引擎初始化成功", Toast.LENGTH_SHORT).show();

                        initSetting();
                    }

                    public void initStart() {
                        Toast.makeText(MainActivity.this, "百度導航引擎初始化開始", Toast.LENGTH_SHORT).show();
                    }

                    public void initFailed() {
                        Toast.makeText(MainActivity.this, "百度導航引擎初始化失敗", Toast.LENGTH_SHORT).show();
                    }

                }, null, ttsHandler, ttsPlayStateListener);


    private void initSetting() {

        BNaviSettingManager
                .setShowTotalRoadConditionBar(BNaviSettingManager.PreViewRoadCondition.ROAD_CONDITION_BAR_SHOW_ON);
        BNaviSettingManager.setVoiceMode(BNaviSettingManager.VoiceMode.Veteran);
        // BNaviSettingManager.setPowerSaveMode(BNaviSettingManager.PowerSaveMode.DISABLE_MODE);
        BNaviSettingManager.setRealRoadCondition(BNaviSettingManager.RealRoadCondition.NAVI_ITS_ON);
        BNaviSettingManager.setIsAutoQuitWhenArrived(true);
        Bundle bundle = new Bundle();
        // 必須設置APPID,否則會靜音
        bundle.putString(BNCommonSettingParam.TTS_APP_ID, "10693742");
        BNaviSettingManager.setNaviSdkParam(bundle);
    }

3.APPID的申請

http://yuyin.baidu.com/app創建自己的應用,註冊語音合成功能
一開始犯了一個錯,把申請ak的appid填入應用結果沒有聲音
應該重新創建應用,開通語音功能綁定包名即可
// 必須設置APPID,否則會靜音

  bundle.putString(BNCommonSettingParam.TTS_APP_ID, "10693742");
        BNaviSettingManager.setNaviSdkParam(bundle);

5.路徑規劃和導航

通過輸入起點,終點或途經點,可以發起路線規劃,並進入導航
發起算路
算路設置起、終點,算路偏好,是否模擬導航等參數,然後在回調函數中設置跳轉至誘導

private void routeplanToNavi(BNRoutePlanNode.CoordinateType coType){
        BNRoutePlanNode sNode = null;
        BNRoutePlanNode eNode = null;
        sNode = new BNRoutePlanNode(116.30784537597782, 40.057009624099436, "百度大廈", null, coType);
        eNode = new BNRoutePlanNode(116.40386525193937, 39.915160800132085, "北京天安門", null, coType);
        if (sNode != null && eNode != null) {
            List<BNRoutePlanNode> list = new ArrayList<BNRoutePlanNode>();
            list.add(sNode);
            list.add(eNode);

            // 開發者可以使用舊的算路接口,也可以使用新的算路接口,可以接收誘導信息等

            BaiduNaviManager
                    .getInstance()
                    .launchNavigator(this,//應用的主Activity
                            list,//傳入的算路節點,順序是起點,途經點,終點,其中途經點最多三個
                            1, //算路偏好

                            true,//真實GPS導航
                            new DemoRoutePlanListener(sNode),//開始導航回調監聽,進入導航頁面
                            eventListerner);
        }

    }

這裏寫圖片描述

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