音声誘導

音声誘導とはドライバーに「いつ」「どのように行動するか」を音声で伝え目的地に導く機能です。
この章では音声誘導をドライバーに提供する方法を紹介します。

音声誘導は案内中ルートがある時だけ提供されます。
ルート探索・案内開始方法は「New Route」を参照してください。

案内方法

SDKが提供する案内方法は2種類あり、 Settingのナビモード設定によって変化します。

NaviMode特徴発話例
NORMAL距離を案内地点特定方法の主体とした案内です。
ナビ画面の残距離表示と地図を合わせて確認することで案内地点を特定します。
  • 3キロ先、左方向です。
  • およそ700メートル先、右方向です。
LANE_BY_LANE信号機や一時停止標識などの目印を案内地点特定方法の主体とした案内です。
画面に頼らず、信号機や道路案内標識などの運転中に視界に入る目印などを使い案内地点を特定します。
  • 二つ先の信号を右です
  • この踏切を超えて30メートル先、左です
  • まもなくENEOSを目印に左です
  • 10分程度、道なりです

誘導音声の取得方法

GuideEventListenerで誘導音声を取得するサンプルコードは以下の通りです。

Navi.getInstance().setGuideEventListener(new GuideEventListener() {
    @Override
    public void onGuide(Common.GuideEventKind guideEvent, String guidancePhrase, Common.GuideLanguageKind guidanceLanguage) {
        switch (guideEvent) {
			case PASSED:
			case FIRST_TIME:
			case SECOND_TIME:
			case THIRD_TIME:
			case JUST:
			case VOICE_NAVI:
				// 誘導音声のイベント受信処理
				break;
            default:
                break;
        }
    }
}
Note:

guidacePhraseはSDKにより自動的に音声再生されますが、音声が不要な場合はNavi.startVoiceEngineを呼び出さないか、Navi.stopVoiceEngineにより音声再生エンジンを停止して下さい。

NaviModeNORMALの場合、案内地点間の誘導回数は最大5回で、 GuideEventKindでどのタイミングにおける誘導なのかを通知します。

GuideEventKind意味
PASSED案内地点通過直後の案内。
FIRST_TIMEPASSEDの次の案内。
一般道では案内地点まで約700メートルの距離感。
高速道路では約2キロメートルの距離感。
SECOND_TIMEFIRST_TIMEの次の案内。
案内地点まで約300メートルの距離感。
高速道路では約1キロメートルの距離感。
THIRD_TIMESECOND_TIMEの次の案内。
案内地点まで約150メートルの距離感。
高速道路では約500メートルの距離感。
JUST曲がる直前の案内。
Note:

案内地点間の距離が短い場合、案内地点を通過した直後でも距離に応じたGuideEventKindを通知します。 例えば次の案内地点まで200メートルなら、PASSEDではなくTHIRD_TIMEを通知します。

NaviModeLANE_BY_LANEの場合は一律Common.GuideEventKind.VOICE_NAVIで通知します。

目的地・立ち寄り地到着案内

目的地や立ち寄り地に到着したとき、GuideEventListener.onGuide()による音声案内以外に、 DestinationArrivedListener.onArrived()またはWayPointArrivedListener.onArrived()を通知します。

これらの通知を受けるにはNavi.setDestinationArrivedListener()Navi.setWayPointArrivedListener()でリスナを設定してください。

//立寄地到着イベントリスナーを追加
Navi.getInstance().setWayPointArrivedListener(new WayPointArrivedListener() {
	@Override
	public void onArrived() {
	}
});

//目的地到着イベントリスナーを追加
Navi.getInstance().setDestinationArrivedListener(new DestinationArrivedListener() {
	@Override
	public void onArrived() {
	}
});