首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除此处地图中的默认TTS播放/音频

如何删除此处地图中的默认TTS播放/音频
EN

Stack Overflow用户
提问于 2020-03-26 08:11:23
回答 2查看 177关注 0票数 0

我第一次使用这里的API使用turn-by-turn应用程序。我正在遵循指南-这里的SDK推荐的指示,到目前为止,还不错。但是,我无法删除SDK提供的默认TTS播放/音频。

我认为,正如在音频管理部分中提到的那样,通过实现AudioPlayerDelegate类并调用NavigationManager.AudioPlayer.setDelegate(AudioPlayerDelegate),SDK将停止所有音频和文本到语音的播放,但它一直在触发它们。我复制我的代码示例:

FragmentView.java

代码语言:javascript
复制
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,我认为通过委派一个新的会自动完成它,但我错了。我怎么能做到呢?

注意事项

我不想删除事件的触发,而只是声音。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-03-27 11:57:24

唯一的错误是,为了委托,方法playText必须返回true。下文提到了文件:

playText() 布尔playText(java.lang.String text)代表NavigationManager使用的NavigationManager.AudioPlayer的代表函数。客户端将收到一个文本字符串,可以提交给TTS引擎进行回放。参数:文本-要播放的TTS文本。返回:如果客户端正在处理TTS回放,false将允许SDK处理它。

票数 0
EN

Stack Overflow用户

发布于 2020-03-26 09:06:56

停止当前播放的音频使用

NavigationManager.getAudioPlayer().stop()

使用NavigationManager.setEnabledAudioEvents()在导航期间启用/禁用音频事件

有关详细信息,请参阅以下文档:java/com/here/android/mpa/guidance/NavigationManager.AudioPlayer.html

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60863132

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档