Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android studio 百度地圖開發(10)語音播報的問題

Android studio 百度地圖開發(10)語音播報的問題

編輯:關於Android編程

一.前言

第一次做導航時,並沒有關注語音播報,今天特意把這個功能完善一下。但是發現關於語音播報的實現也遇到了一些問題,在官方的討論區也發現關於語音播報的問題特別多,問題基本都是:能正常導航,但是無法語音播報。於是把自己的一些理解和解決方法記錄一下,希望能幫助到其他有問題的朋友。

二.需要做的事情

1.配置問題

除了地圖顯示、定位、導航需要的配置之外,tts播報需要添加白名單。如下所示:
這裡寫圖片描述
這裡有關鍵地方必須留意:<喎?/kf/ware/vc/" target="_blank" class="keylink">vcD4NCtOm08Ow/MP7o7rV4rj2u/mxvsO7zsrM4g0KPHA+06bTw8epw/ujutXiuPbHqcP7srvKx8nqx+tBS8qxtcRTSEExo6y2+MrHtPKw/LPJYXBruvO1xE1ENaOsu/HIoU1ENbXEt73KvdPQwb3W1qO6PGJyIC8+DQo8Yj6jqDGjqbXa0rvW1jq9q2Fwa7XEzsS8/rjxyr3Q3rjEzqoucmFyo6y8tNG5y/Ww/KOsyLu6873i0bmjrNTaTUVUQS1JTkbOxLz+vNDPwrvh09DSu7j2Q0VSVC5SU0HOxLz+o6zIu7rzw/zB7rSwv9q9+Mjrtb1NRVRBLUlORqOsyuTI62tleXRvb2wgLXByaW50Y2VydCAtZmlsZSBDRVJULlJTQSA8L2I+PGJyIC8+DQo8aW1nIGFsdD0="這裡寫圖片描述" src="/uploadfile/Collfiles/20160518/20160518091235155.png" title="\" />
(2)第二種:打包的時候會生成一個 自命名.jks文件,最主要的就是這個jks文件。然後在命令窗口進入到這個jks文件的目錄,輸入keytool -list -v -keystore 自命名.jks,於是就可以看到MD5。
這裡寫圖片描述
這裡寫圖片描述

AK:就是之前申請的AK,這個沒問題。

2.相關代碼

這兩部分在官方Demo裡就有
1.內部TTS播報狀態回傳handler

    private Handler ttsHandler = new Handler() {
        public void handleMessage(Message msg) {
            int type = msg.what;
            switch (type) {
                //tts播報開始
                case BaiduNaviManager.TTSPlayMsgType.PLAY_START_MSG: {
                    //showToastMsg("Handler : TTS play start");
                    break;
                }
                //tts播報結束
                case BaiduNaviManager.TTSPlayMsgType.PLAY_END_MSG: {
                    //showToastMsg("Handler : TTS play end");
                    break;
                }
                default :
                    break;
            }
        }
    };

2.服務授權和初始化

private void initNavi() {
        BaiduNaviManager.getInstance().init(this, mSDCardPath, APP_FOLDER_NAME, new BaiduNaviManager.NaviInitListener() {
            @Override
            public void onAuthResult(int status, String msg) {
                String authinfo;
                if (0 == status) {
                    authinfo = "key校驗成功!";
                } else {
                    authinfo = "key校驗失敗, " + msg;
                }
                DriveRouteActivity.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {}});
            }
            public void initSuccess() {
                initSetting();
            }
            public void initStart() {}
            public void initFailed() {}}, 
            ttsHandler,//前面定義過的tts播報回傳handler
             null);
    }

3.進入導航

BaiduNaviManager
    .getInstance()
        .launchNavigator(
            DriveRouteActivity.this,    //建議是應用的主Activity
            list,                           //傳入的算路節點,順序是起點、途經點、終點,其中途經點最多三個
            2,                              //算路偏好 1:推薦 8:少收費 2:高速優先 4:少走高速 16:躲避擁堵
            true,                           //true表示真實GPS導航,false表示模擬導航,據我所知,新的SDK中,模擬導航不支持語音播報
            new DemoRoutePlanListener(sPNode)//開始導航回調監聽器,在該監聽器裡一般是進入導航過程頁面
            );

三.為什麼能導航但是不能語音播報

理論上,通過配置工作和上面的三部分代碼就可以搞定語音播報的功能了。但是往往在細節上錯誤,會導致能征程導航但是無法語音播報,以下是我的一些理解和方案,僅供參考,大家可以從這些方面去排查錯誤。
(1)tts白名單的簽名來自於apk,所以在開發階段應該是不能語音播報的,因為開發階段的簽名和打包後的簽名不一致;至少我個人的問題是這樣,開發階段是不能語音播報的,將apk安裝到手機後就可以正常語音播報了;
(2)使用比較新的SDK,模擬導航不支持語音播報;

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved