如何删除 HERE 地图中的默认 TTS Playback/Audio

How to remove default TTS Playback/Audio in HERE Maps

我是第一次使用 HERE API 使用 turn-by-turn 应用程序。我正在按照 Guide - HERE SDK 中推荐的说明进行操作,到目前为止一切顺利。不过,我无法删除 SDK 提供的默认 TTS Playback/Audio。

我认为,如 Audio Management 部分所述,通过实现 AudioPlayerDelegate class 并调用 NavigationManager.AudioPlayer.setDelegate(AudioPlayerDelegate) 所有音频和文本到语音播放SDK 会停止,但它会不断触发它们。我复制了我的代码示例:

FragmentView.java

public class FragmentView {
     private NavigationManager.NewInstructionEventListener instructListener
        = new NavigationManager.NewInstructionEventListener() {

     private AudioPlayerDelegate m_audioPlayerDelegate = new AudioPlayerDelegate() {
    @Override
    public boolean playText(final String audioCue) {
        m_activity.runOnUiThread(new Runnable() {
            @Override
            public void run() {

                    playAudioCue(fileName, 1);

                Toast.makeText(m_activity, "TTS output: " + audioCue, Toast.LENGTH_SHORT).show();
                Log.d(TAG, "TextToSpeech: " + audioCue);
            }
        });
        return false;
    }

    @Override
    public boolean playFiles(String[] strings) {
        Log.d(TAG, "Play files");
        return false;
    }
};


     private void addNavigationListeners() {

    m_navigationManager.addNavigationManagerEventListener(
            new WeakReference<NavigationManager.NavigationManagerEventListener>(
                    m_navigationManagerEventListener));

    m_navigationManager.addPositionListener(
            new WeakReference<NavigationManager.PositionListener>(m_positionListener));


    m_navigationManager.addNewInstructionEventListener(
            new WeakReference<NavigationManager.NewInstructionEventListener>(instructListener));

    m_navigationManager.addPositionListener(
            new WeakReference<NavigationManager.PositionListener>(positionListener));

    m_navigationManager.getAudioPlayer().setDelegate(m_audioPlayerDelegate);
}

}

代码已经运行。没有错误被触发或显示。我的问题是,在默认引擎完成之前,我无法使用自己的 TextToSpeech 引擎。我想摆脱默认的,我认为通过委派一个新的 AudioPlayerDelegate 会自动完成,但我错了。我该怎么做?

注意

我不想去掉事件的触发,只去掉声音。

要停止当前播放的音频,请使用

NavigationManager.getAudioPlayer().stop()

在导航期间使用 NavigationManager.setEnabledAudioEvents() 到 enable/disable 音频事件

有关详细信息,请参阅以下文档:https://developer.here.com/documentation/android-premium/api_reference_java/com/here/android/mpa/guidance/NavigationManager.AudioPlayer.html

唯一的错误是,为了委托,方法 playText 必须 return 为真。下面提到了文档:

playText()

boolean playText(java.lang.String text) Delegate function for NavigationManager.AudioPlayer used by NavigationManager. Clients will receive a text string that can be submitted to TTS engines for playback. Parameters: text - TTS text to be played. Returns: true if client is handling the TTS playback, false will allow the SDK to handle it.