Mengonfigurasi pemberitahuan speedometer

Saat navigasi diaktifkan, Navigation SDK untuk Android akan menampilkan kontrol batas kecepatan di sudut kiri bawah peta yang menampilkan batas kecepatan saat ini. Jika pengemudi melebihi batas kecepatan, kontrol akan diperluas untuk menampilkan speedometer di sebelah tampilan batas kecepatan dan memicu pemberitahuan saat kecepatan mencapai batas tertentu.

Secara default, Navigation SDK memicu pemberitahuan kecepatan minor saat pengemudi melebihi batas kecepatan sebesar 5 mph (atau 10 kpj), dan mengubah warna teks speedometer menjadi merah. Sistem ini akan memberikan notifikasi kecepatan utama saat pengemudi melebihi batas kecepatan sebesar 10 mph (atau 20 kpj), dan mengubah warna latar belakang speedometer menjadi merah.

Anda dapat menyesuaikan nilai minimum untuk memicu pemberitahuan serta warna teks dan latar belakang yang ditampilkan speedometer. Anda juga dapat menggunakan Navigation SDK untuk menyediakan informasi kecepatan pengemudi sesuai dengan batas yang telah Anda tetapkan. Misalnya, Anda dapat menyediakan informasi kecepatan kepada operator transportasi online untuk membantu mereka mendorong pengemudi agar mematuhi batas kecepatan dan meningkatkan keselamatan.

Sesuaikan ambang batas untuk notifikasi kecepatan

Anda dapat menyesuaikan nilai minimum peringatan kecepatan untuk notifikasi kecepatan minor dan besar sebagai persentase terhadap batas kecepatan kecepatan saat ini. Anda juga dapat menentukan berapa lama nilai minimum terlampaui sebelum peta menampilkan pemberitahuan.

Contoh kode berikut menetapkan batas untuk notifikasi kecepatan minor hingga lima persen di atas batas kecepatan, dan nilai minimum untuk notifikasi kecepatan utama menjadi 10 persen di atas batas kecepatan. Kolom ini menentukan bahwa peta akan menampilkan pemberitahuan setelah nilai minimum pemberitahuan terlampaui selama lima detik.

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());

Sesuaikan cara speedometer menampilkan notifikasi kecepatan

Agar pemberitahuan kecepatan lebih menarik perhatian, Anda dapat menyesuaikan warna tampilan speedometer untuk setiap tingkat pemberitahuan.

Tabel berikut menampilkan warna default untuk notifikasi kecepatan di class NavigationView:

ElemenWarna
MinorSpeedAlertBackgroundColorDayMode 0xffffff(putih)
MinorSpeedAlertBackgroundColorNightMode 0x000000
MinorSpeedAlertTextColorDayMode 0xd93025
MinorSpeedAlertTextColorNightMode 0xd93025
MajorSpeedAlertBackgroundColorDayMode 0xd93025
MajorSpeedAlertBackgroundColorNightMode 0xd93025
MajorSpeedAlertTextColorDayMode 0xffffff(putih)
MajorSpeedAlertTextColorNightMode 0xffffff(putih)

Anda dapat menentukan warna teks dan latar belakang speedometer untuk notifikasi kecepatan minor dan utama:

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);

Menerima informasi kecepatan dari pengemudi

Jika aplikasi memerlukan berbagi informasi tentang kecepatan pengemudi, Anda juga dapat menggunakan Navigation SDK untuk menyediakan informasi kecepatan pengemudi. Hal ini dapat berguna untuk aplikasi transportasi online yang membuat operator ingin memantau kecepatan berlebihan oleh pengemudi untuk meningkatkan keselamatan. Hal ini juga dapat dilakukan tanpa perlu merender tampilan navigasi kepada pengguna di aplikasi Anda.

Misalnya, contoh berikut membagikan informasi kecepatan jika kecepatan adalah persentase yang ditentukan di atas batas kecepatan:

// 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);