スピードメーターのアラートを設定する

ナビゲーションが有効になっている場合、Navigation SDK for Android では、地図の左下に現在の制限速度を示す制限速度コントロールが表示されます。ユーザーが制限速度を超えると、コントロールが展開され、制限速度の表示の横にスピードメーターが表示され、速度が特定のしきい値に達するとアラートがトリガーされます。

デフォルトでは、ユーザーが制限速度を 5 mph(または 10 kph)超えると、Navigation SDK は軽微な速度アラートをトリガーし、スピードメーター テキストの色を赤色に変更します。ユーザーが制限速度を 10 mph(20 km/h)超えた場合は、重大な速度アラートをトリガーし、スピードメーター バックグラウンドの色を赤色に変更します。

アラートをトリガーするしきい値と、スピードメーターが表示されるテキストと背景色の両方をカスタマイズできます。Navigation SDK を使用して、設定したしきい値に応じてユーザーの速度情報を利用できるようにすることもできます。たとえば、ライドシェア事業者が速度情報を利用できるようにして、ユーザーに速度制限を遵守するよう促し、安全性を高めることができます。

速度アラートのしきい値をカスタマイズする

軽微な速度アラートおよび重大な速度アラートの両方の速度アラートしきい値は、現在の速度の制限速度に対する割合としてカスタマイズできます。しきい値を超えてから地図にアラートを表示するまでの時間を指定することもできます。

次のコード例では、軽微な速度アラートのしきい値を制限速度の 5% に、重大な速度アラートのしきい値を制限速度の 10% に設定しています。アラートしきい値が 5 秒間超過すると、地図にアラートが表示されます。


 float minorSpeedAlertThresholdPercentage = 5; float
majorSpeedAlertThresholdPercentage = 10; double severityUpgradeDurationSeconds =
5;

 // Configure SpeedAlertOptions SpeedAlertOptions.Builder
speedAlertOptionsBuilder = new SpeedAlertOptions.Builder();
speedAlertOptionsBuilder.setSpeedAlertThresholdPercentage(
SpeedAlertSeverity.MINOR, minorSpeedAlertThresholdPercentage);
speedAlertOptionsBuilder.setSpeedAlertThresholdPercentage(
SpeedAlertSeverity.MAJOR, majorSpeedAlertThresholdPercentage);
speedAlertOptionsBuilder.setSeverityUpgradeDurationSeconds(severityUpgradeDurationSeconds);

 // Set SpeedAlertOptions to Navigator.
navigator.setSpeedAlertOptions(speedAlertOptionsBuilder.build());

スピードメーターでの速度アラートの表示方法をカスタマイズする

速度アラートをより目立たせるために、アラートレベルごとにスピードメーター ディスプレイの色をカスタマイズできます。

次の表に、NavigationView クラスの速度アラートのデフォルトの色を示します。

要素
MinorSpeedAlertBackgroundColorDayMode 0xffffff(白)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff(白)
MajorSpeedAlertTextColorNightMode 0xffffff(白)

軽微な速度アラートおよび重大な速度アラートの両方で、スピードメーター ディスプレイのテキストと背景色を指定できます。

 SpeedometerUiOptions speedometerUiOptions = new SpeedometerUiOptions.Builder()
 .setBackgroundColorDayMode(MINOR, some_color)
.setBackgroundColorNightMode(MINOR, some_color) .setTextColorDayMode(MINOR,
some_color) .setTextColorNightMode(MINOR, some_color)
.setBackgroundColorDayMode(MAJOR, some_color)
.setBackgroundColorNightMode(MAJOR, some_color) .setTextColorDayMode(MAJOR,
some_color) .setTextColorNightMode(MAJOR, some_color) .build();

 // Set SpeedometerUiOptions to NavigationView.
navigationView.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
navigationView.setSpeedometerEnabled(true);

 // Set SpeedometerUiOptions to SupportNavigationFragment.
supportNavigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
 supportNavigationFragment.setSpeedometerEnabled(true);

ユーザーから速度情報を受け取る

アプリでユーザーの速度に関する情報を共有する必要がある場合は、Navigation SDK を使用してユーザーの速度情報を利用することもできます。たとえば、オペレーターがユーザーによる過度のスピード違反をモニタリングして安全性を高めたいと考えているライドシェアリング アプリに役立ちます。これは、アプリでナビゲーション ビューをユーザーにレンダリングしなくても行えます。

たとえば、次の例では、速度が制限速度の指定したパーセンテージを超えている場合に速度情報を共有します。

 // Existing flow for creating Navigator. NavigationApi.getNavigator();

 // Set the SpeedAlertOptions for the MAJOR and MINOR alerts. (Note that the //
severityUpgradeDurationSeconds field is by design not used in this flow.)
SpeedAlertOptions speedAlertOptions = ...;
navigator.setSpeedAlertOptions(speedAlertOptions);

 // Implement SpeedingListener. SpeedingListener speedingListener = new
SpeedingListener() { @Override public void onSpeedingUpdated(float
percentageAboveLimit, SpeedAlertSeverity speedAlertSeverity) { ... } };

 // Set speedingListener to Navigator.
navigator.setSpeedingListener(speedingListener);