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);
        }

    }

android 播放 导航 语音 代码_android