我第一次使用HERE API使用turn-by-turn
应用程序。我遵循Guide - HERE SDK中推荐的说明,到目前为止,效果很好。但是,我无法删除SDK提供的默认TTS
播放/音频。
[我认为,如Audio Management部分所述,通过实现AudioPlayerDelegate
类并调用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
可以自动完成此操作,但是我错了。我该怎么办?
NOTE
我不想删除事件的触发,而只是声音。
要停止当前播放的音频使用
NavigationManager.getAudioPlayer().stop(
)
使用NavigationManager.setEnabledAudioEvents()在导航期间启用/禁用音频事件
有关更多详细信息,请参见以下文档:https://developer.here.com/documentation/android-premium/api_reference_java/com/here/android/mpa/guidance/NavigationManager.AudioPlayer.html