如何删除 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 音频事件
唯一的错误是,为了委托,方法 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.
我是第一次使用 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 音频事件
唯一的错误是,为了委托,方法 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.