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

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

デフォルトでは、ユーザーが制限速度を 5 mph(または 10 kph)超えると、Navigation SDK が軽度の速度アラートをトリガーし、速度計のテキストの色を赤に変更します。ユーザーが制限速度を 10 mph(または 20 kph)超えると、重大な速度超過アラートがトリガーされ、速度計の背景色が赤に変わります。

アラートをトリガーするしきい値と、スピードメーターに表示されるテキストと背景色の両方をカスタマイズできます。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 NavigationFragment.
navigationFragment.setSpeedometerUiOptions(speedometerUiOptionsBuilder.build());
 navigationFragment.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);