Highway Mode

ハイウェイモードはFig.1のように高速道路の施設までの所要時間や施設が持つサービス一覧を提供する機能です。

ハイウェイモードサンプル

Fig.1 - ハイウェイモード画面例

この章ではハイウェイモードのデータを取り扱う方法を紹介します。

ハイウェイモード データ型の概要

ハイウェイモード データ型はHighwayInfoで表現されます。

このclassは大類すると以下2つのデータを持っています。

  • 出口までのルート上の施設情報(HighwayInfo.FacilityInfo)のリスト
  • 出口の情報(HighwayInfo.ExitInfo)

FacilityInfoはその施設がインターチェンジなのか、休憩施設なのか、ジャンクションなのか、といった施設種別や 現在地からの所要時間、施設名称が格納されます。
また、その施設に至るまでにある交通状況のアイコンも格納されます。(例: speed decrease_lane 故障車)
休憩施設の場合、その施設が提供するサービス(店舗情報、お手洗い、ハイウェイ情報ターミナルなど)が格納されます。 (例: starbucks eneos mac seveneleven)

ExitInfoFacilityInfoから交通規制アイコン、渋滞状況、駐車場混雑状況を削除したデータ型です。

Note:

HighwayInfoで提供するアイコンはResourceIDによる提供となります。
ImageViewなどのResourceIDを指定して描画できるViewでご利用ください。

ハイウェイモード データ取得方法

使用可能になるタイミングや更新タイミングはHighwayModeChangedListenerにて通知されますので、Navi.setHighwayModeChangedListener()でリスナを設定してください。

Navi.getInstance().setHighwayModeChangedListener(new HighwayModeChangedListener() {
	@Override
	public void onModeChanged(boolean isHighwayMode) {
		if (isHighwayMode) {
			// trueならハイウェイモードのデータが利用可能です。
		}
		else {
			// falseならハイウェイモードのデータが利用不能になります。
		}
	}

	@Override
	public void onUpdate() {
		// onUpdate()はデータ内容が更新されたことだけしか通知されませんので、これをトリガにNaviから取得します。
		HighwayInfo highwayInfo = Navi.getInstance().getHighwayInfo();
		if (highwayInfo != null) {
			// FacilityInfoは距離が近い順に格納されています
			for (HighwayInfo.FacilityInfo  facilityInfo : highwayInfo.getFacilities()) {
				// 施設までの距離
				if (facilityInfo.getDistance() > 0) {
				}

				// 施設までの所要時間
				if (facilityInfo.getTime() > 0) {
				}

				// 施設名と施設種別
				if (facilityInfo.getInfos() != null) {
				}

				// 施設までの混雑状況
				switch (facilityInfo.getJam()) {
				case JAM:
					break;
				case RUSH:
					break;
				case SMOOTH:
					break;
				default:
					break;
				}

				// サービスのアイコン
				if (facilityInfo.getServices() != null) {
					for (HighwayInfo.FacilityInfo.Service service : facilityInfo.getServices())) {
					}
				}

				// インシデントのアイコン
				if (facilityInfo.getIncidentList() != null) {
					for (HighwayInfo.FacilityInfo.Incident incident : facilityInfo.getIncidentList()) {
					}
				}

				// 駐車場の混雑状況
				if (facilityInfo.getParkingInfo() != null) {
					HighwayInfo.FacilityInfo.Parking parking = facilityInfo.getParkingInfo();
				}
			}

			// 出口情報
			HighwayInfo.ExitInfo exitInfo = highwayInfo.getExitInfo();
			if (exitInfo != null) {
				// 施設までの距離
				if (exitInfo.getDistance() > 0) {
				}

				// 施設までの所要時間
				if (exitInfo.getTime() > 0) {
				}

				// 施設名と施設種別
				if (exitInfo.getInfos() != null) {
				}
			}
		}
	}
});
Note:

高速道路上に目的地が設定されている場合、出口情報は取得できません。(nullになります。)

Note:

FacilityInfoは施設への分岐開始地点までの距離が格納され、 その施設を通過し終わるまでは距離が0以下の値になり、FacilityInfo Listに残ります。
このような状態の施設の残距離を表示する場合は特別に "施設付近" のような表現を使うとよいでしょう。