SDK điều hướng – Chế độ không có giao diện người dùng

Giới thiệu

Navigation SDK (Nav SDK) cung cấp tính năng chỉ đường từng chặng tốt nhất, có thể rất hữu ích cho khách hàng và người lái xe, đặc biệt là người lái xe mới hoặc người lái xe không quen thuộc với khu vực này. Tuy nhiên, có những trường hợp sử dụng cụ thể mà các công ty không muốn làm người lái xe mất tập trung khi đang lái xe bằng giao diện người dùng chỉ đường từng chặng, nhưng vẫn muốn theo dõi vị trí của xe và lắng nghe các sự kiện liên quan đến tuyến đường mà họ đang đi theo. Ví dụ: tài xế xe tải, đặc biệt là khi họ đang vận chuyển vật liệu nguy hiểm. Các công ty khác thực hiện việc giao hàng bằng nhiều phương thức (chẳng hạn như đi bộ trong khoảng cách ngắn) cũng có thể không yêu cầu bật chỉ đường từng chặng và điều này sẽ giúp tiết kiệm pin cho thiết bị.

Phạm vi

Tài liệu này mô tả cách các công ty có thể ẩn Bản đồ điều hướng (chế độ xem) khỏi Nav SDK mà vẫn tận dụng được tất cả các tính năng của Nav SDK liên quan đến tính năng theo dõi vị trí, đăng ký sự kiện và lệnh gọi lại. Dữ liệu được thu thập từ Nav SDK ở chế độ không có giao diện người dùng có thể được dùng để cải thiện khả năng theo dõi xe và hiểu rõ hơn về thời gian dự kiến đến (ETA), từ đó giúp tăng tính minh bạch và hiệu quả.

Navigation SDK là một thư viện Android / iOS gốc được thêm vào ứng dụng dành cho người lái xe. Trong bối cảnh di động, SDK này chịu trách nhiệm:

  • Lấy vị trí được điều chỉnh cho khớp với đường từ ứng dụng đang chạy. Vị trí được khớp với đường chính xác hơn so với FusedLocationProvider (FLP) của Android, vì vị trí này sử dụng mạng lưới đường bộ của Google để khớp vị trí với đoạn đường gần nhất, giúp ETA và các thông tin khác từ FLP chính xác hơn nhiều.
  • Trải nghiệm chỉ đường từng chặng giúp tài xế di chuyển hiệu quả từ điểm A đến điểm B, có tính đến tình hình giao thông theo thời gian thực và các hạn chế khác về tuyến đường.
  • Kích hoạt các sự kiện dựa trên tiến trình, vị trí, tốc độ, v.v. của tuyến đường thông qua trình nghe sự kiện và lệnh gọi lại đã đăng ký.

Áp dụng theo mặc định

Khi triển khai Nav SDK, khách hàng giả định rằng họ cần tính năng chỉ đường từng chặng. Đó là lý do tài liệu của Nav SDK (AndroidiOS) cung cấp hướng dẫn về cách triển khai Nav SDK khi đã bật chỉ dẫn từng chặng.

Trên Android, việc hiển thị bản đồ chỉ đường từng chặng trong ứng dụng được thực hiện bằng cách sử dụng SupportNavigationFragment hoặc NavigationView, trong khi trên iOS, đó là GMSMapView. Các phần tử giao diện người dùng này sẽ thêm bản đồ có thể tương tác và giao diện người dùng chỉ đường theo từng chặng vào ứng dụng của bạn.

Trong phần tiếp theo, chúng ta sẽ so sánh SDK điều hướng mặc định có mã đã bật chỉ dẫn từng chặng với mã SDK điều hướng không có giao diện người dùng cho cả Android và iOS, đồng thời nêu bật những thay đổi cần thiết.

Giải pháp

Android

Trên Android, đây là mã Java có trong ứng dụng mẫu Nav SDK.

@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   // Obtain a reference to the NavigationFragment
   setContentView(R.layout.activity_nav_fragment);
   mNavFragment = (SupportNavigationFragment) getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);

Như bạn có thể thấy, khung hiển thị này trỏ đến bố cục cần dùng để vẽ trải nghiệm điều hướng và trong trường hợp này, SupportNavigationFragment được tạo thay vì NavigationView.

Để Nav SDK bắt đầu ở chế độ không có giao diện người dùng, chúng ta chỉ cần xoá hai chỉ dẫn đó. Nếu bạn muốn chuyển đổi giữa chế độ không có giao diện người dùng và chế độ không phải không có giao diện người dùng (chế độ điều hướng đang hoạt động), bạn có thể dùng một biến để xác định xem có bắt buộc phải dùng chế độ không có giao diện người dùng hay không, ví dụ:

Boolean mHeadless = true;

Sau đó, bạn có thể sử dụng nó như sau:

@Override
@SuppressLint("MissingPermission")
protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);

   // Obtain a reference to the NavigationFragment
   if(!mHeadless) {
       setContentView(R.layout.activity_nav_fragment);
       mNavFragment =
               (SupportNavigationFragment)
                       getSupportFragmentManager().findFragmentById(R.id.navigation_fragment);
   }

Bạn có thể liên kết biến mHeadless với một thành phần trên giao diện người dùng (tức là nút bật/tắt) để bật hoặc tắt chế độ không có giao diện người dùng cho phù hợp.

alt_text alt_text
Nav SDK đang chạy với chế độ chỉ đường đang hoạt động (tắt chế độ không giao diện) Vẫn là ứng dụng đó nhưng giờ đây có Nav SDK chạy ở chế độ không có giao diện người dùng

Như bạn có thể thấy trong ví dụ bên phải ở trên, chế độ chỉ đường của Nav SDK đang chạy ngầm nhưng trải nghiệm chỉ đường từng chặng đã bị tắt.

iOS

Bạn có thể dễ dàng thực hiện chế độ không có giao diện người dùng trên iOS bằng cách thêm chế độ cài đặt sau đây trong quá trình khởi chạy MapView: \

mapView.isHidden = true


Ví dụ:

  /// The main map view.
  private lazy var mapView: GMSMapView = {
    let mapView = GMSMapView(frame: .zero)
    mapView.isHidden = true /// Make it headless!
    mapView.isNavigationEnabled = true
    mapView.settings.compassButton = true
    mapView.delegate = self
    return mapView
  }()

Xem giao diện của màn hình. Màn hình sẽ phụ thuộc vào cách triển khai giao diện người dùng và ảnh chụp màn hình chỉ minh hoạ hiệu ứng ẩn mapView:

alt_text alt_text
Tính năng đi theo chỉ dẫn đang chạy trên

Ứng dụng mẫu iOS

Cùng một ứng dụng ở chế độ không có giao diện người dùng

Những điểm cần lưu ý khi triển khai

Vì chế độ không cần màn hình chỉ đơn giản là ẩn bản đồ chỉ đường khỏi màn hình, nên chỉ có thời gian sử dụng màn hình được lưu, nhờ đó thiết bị có thời lượng pin lâu hơn. Tuy nhiên, vì Nav SDK sẽ tiếp tục chạy, các bản cập nhật vị trí và tất cả lệnh gọi lại sự kiện sẽ được kích hoạt bình thường, do đó, việc sử dụng cấu hình này sẽ không gây ra tác dụng phụ.

Kết luận

Tài liệu này cho thấy mức độ linh hoạt của Nav SDK và những gì chúng ta có thể đạt được trong các hệ điều hành khác nhau trong phạm vi hạn chế của chúng. Tính năng này cũng cho phép khách hàng tuỳ chỉnh trải nghiệm lái xe để tránh bị phân tâm và cải thiện độ an toàn.

Tài nguyên khác

Nếu bạn phải tắt thông báo trong khi chỉ đường vì những lý do nêu trên, bạn cũng có thể thực hiện việc này. Vui lòng tham khảo phần Sửa đổi thông báo chỉ đường từng chặng trong Nav SDK.