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

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

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

アラートをトリガーするしきい値と、速度計に表示されるテキストと背景色の両方をカスタマイズできます。また、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);