Mapbox の NavigationView.startNavigationに設定できるリスナ

※AndroidのMAPBOX SDKのお話です。

 MAPBOX の NavigationView.startNavigation はAndroidでMAPBOXを利用したナビゲーションアプリを作成するには便利ですが、気軽に使える代わりにデバッグなどで内部動作を確認したいときには苦労することがあります。今回はそんな NavigationView.startNavigation に対して、様々な状態を監視するために設定可能なリスナについてまとめました。

リスナ設定の基本

 NavigationView.startNavigation にリスナを設定するためには、まず NavigationViewOptionsを生成する必要があります。 NavigationViewOptions の生成には、 NavigationViewOptionsBuilder.build を用いますが、この NavigationViewOptionsBuilder でbuildを行う際に、様々なリスナを設定できます。

FeedbackListener

 FeedbackListener は、ユーザーが Feedback 機能を操作したイベントを受け取るためのリスナです。Mapbox ではナビゲーション中に下部に「Report Problem」というメニューが表示されますが、これがFeedbackです。 Feedback の項目として
・Not Allowed
・Road Closed
・Report Traffic
・Confusing Instruction
・Other Map Issue
・Bad Route
が存在します。

NavigationListener

 ユーザーがナビゲーション機能を使用した際のイベントを受け取るためのリスナです。ナビゲーションの中断(キャンセル)やナビゲーションの官僚も検知できます。

ProgressChangeListener

 ナビゲーション中の位置情報(緯度、経度)をイベントで受け取りたい場合や、 RouteProgress を確認することでトンネル内(トンネルモード)かどうかや、Leg(Mapboxは内部で経路をLegと呼ばれる細かい工程に分けています)の情報、ステップの情報、進行距離と、目的までの残距離、中継地点などの情報も取得することができます。

RouteListener

 経路案内の目的地への到着や、経路の再探索(リルート)のイベントを受け取ります。

SpeechAnnouncementListener

 ナビゲーションのための音声案内(スピーチアナウンスメント)のイベントを受け取るリスナです。イベントを受け取った際に、返却値を null とすることで特定の音声案内を無効化することも可能ですし、SpeechAnnouncementを書き換えることで、音声案内の内容を変更することも可能です。

Android で Mapbox を利用した地図アプリ、ナビゲーションアプリをお考えなら

 もし、これらの便利なリスナを利用し、Mapbox を使った Android のナビゲーションアプリ(日本語対応)の構築が可能なベンダー、発注先をお探しであれば、実績のあるFITSにご相談を。きっとお力になれることと思います。まずはお気軽にご相談、お見積りを。

宮城県仙台市のシステム開発会社FITS
https://www.fits-inc.jp/