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

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

デフォルトでは、Navigation SDK は、ユーザーが制限速度を 5 mph(または 10 km/h)超えると、軽微な速度超過アラートをトリガーし、スピードメーターのテキストの色を赤に変更します。ユーザーが制限速度を 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);