Tuyên bố từ chối trách nhiệm
Sản phẩm/tính năng này sẽ thay đổi và không tuân theo bất kỳ thoả thuận mức độ cung cấp dịch vụ (SLA) hoặc chính sách ngừng sử dụng nào. Cách triển khai có thể thay đổi trong các bản phát hành sau này.
Về phần mềm mẫu, tệp dữ liệu và/hoặc mã nguồn đi kèm với tài liệu này: Sản phẩm này được cung cấp "nguyên trạng" và không có bất kỳ bảo hành nào. Google từ chối rõ ràng mọi bảo hành, dù là công khai, ngầm ẩn, theo luật định hay bất kỳ hình thức nào khác, bao gồm nhưng không giới hạn ở các bảo hành về khả năng bán được, tính phù hợp cho một mục đích cụ thể và việc không vi phạm bất kỳ quyền nào liên quan đến sản phẩm này.
Thông qua ý định Android Automotive, bạn có thể khởi chạy tính năng chỉ đường trong Google Maps.
Để biết thêm thông tin, hãy xem bài viết Ý định của Google Maps dành cho Android.
Để biết thêm thông tin về cách đưa ứng dụng của bạn lên các xe chạy Android Auto hoặc Android Automotive OS, hãy xem phần Android cho ô tô.
Tổng quan
Trang này mô tả các ý định mà bạn có thể sử dụng với Google Maps cho Android Automotive. Để biết tài liệu chi tiết dành cho nhà phát triển Android, hãy đọc:
Yêu cầu về ý định
Để chạy Google Maps cho Android Automotive bằng một ý định, trước tiên, bạn phải tạo một đối tượng Ý định, chỉ định hành động, URI và gói của đối tượng đó.
Hành động. Tất cả ý định của Google Maps đều được gọi là hành động Xem,
ACTION_VIEW
.URI. Ý định của Google Maps sử dụng chuỗi được mã hoá URI để chỉ định một hành động mong muốn, cùng với một số dữ liệu để thực hiện hành động đó.
Gói. Việc gọi
setPackage("com.google.android.apps.maps")
đảm bảo rằng ứng dụng Google Maps dành cho Android sẽ xử lý Ý định. Nếu bạn không đặt gói, hệ thống sẽ xác định ứng dụng nào có thể xử lý Ý định. Nếu có nhiều ứng dụng, bạn có thể được hỏi ứng dụng nào bạn muốn sử dụng.
Sau khi tạo Ý định, bạn có thể yêu cầu hệ thống chạy ứng dụng liên quan theo một số cách. Một phương pháp phổ biến là truyền Ý định đến phương thức startActivity()
. Hệ thống sẽ khởi chạy ứng dụng cần thiết, trong trường hợp này là Google Maps, và bắt đầu Hoạt động tương ứng.
// Create a Uri from an intent string. Use the result to create an Intent.
Uri mapIntentUri =
Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
// Create an Intent from mapIntentUri. Set the action to ACTION_VIEW
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
// Make the Intent explicit by setting the Google Maps package
mapIntent.setPackage("com.google.android.apps.maps");
// Attempt to start an activity that can handle the Intent
startActivity(mapIntent);
Nếu hệ thống không thể xác định một ứng dụng có thể phản hồi Ý định, thì ứng dụng của bạn có thể gặp sự cố. Vì lý do này, trước tiên, hãy xác minh rằng ứng dụng nhận đã được cài đặt trước khi bạn hiển thị một trong những ý định này cho người dùng.
Để xác minh rằng ứng dụng có thể nhận được ý định, hãy gọi resolveActivity()
trên đối tượng Intent
. Nếu kết quả không rỗng, thì ít nhất một ứng dụng có thể xử lý ý định và bạn có thể an toàn gọi startActivity()
. Nếu kết quả là rỗng, bạn không nên sử dụng ý định và nếu có thể, hãy tắt tính năng gọi ý định.
if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}
Ví dụ: để khởi chạy tính năng chỉ đường từng chặng đến Sở thú Taronga ở Sydney, bạn có thể sử dụng mã sau:
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
if (mapIntent.resolveActivity(getPackageManager()) != null) {
startActivity(mapIntent);
}
Chuỗi truy vấn được mã hoá URI
Tất cả chuỗi được truyền đến Ý định của Google Maps phải được mã hoá URI. Ví dụ: chuỗi "1st & Pike, Seattle" sẽ trở thành 1st%20%26%20Pike%2C%20Seattle
.
Bạn có thể mã hoá dấu cách trong chuỗi bằng %20
hoặc thay thế bằng dấu cộng (+).
Bạn có thể sử dụng phương thức android.net.Uri parse()
để mã hoá chuỗi. Ví dụ:
Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));
Chạy tính năng chỉ đường theo từng chặng
Sử dụng ý định này để khởi chạy tính năng chỉ đường của Google Maps với chỉ dẫn từng chặng đến một hoặc nhiều địa chỉ hoặc toạ độ được chỉ định. Thông tin chỉ đường luôn được cung cấp từ vị trí hiện tại của người dùng.
google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename
Thông số
Để khởi chạy tính năng điều hướng, hãy sử dụng place
hoặc q
với waypoints
(không bắt buộc). Để đánh dấu một điểm trung gian là trạm sạc (không bắt buộc), hãy xem bài viết Gửi kế hoạch chuyến đi bằng xe điện đến Google Maps.
q
đặt điểm cuối cho các lượt tìm kiếm đường đi. Đây có thể là vĩ độ/kinh độ hoặc địa chỉ được định dạng truy vấn. Nếu đó là một chuỗi truy vấn trả về nhiều kết quả, thì kết quả đầu tiên sẽ được chọn.place
đặt điểm cuối thành nhà hoặc nơi làm việc. Chỉ định nhà để điều hướng đến nhà của người dùng và chỉ định cơ quan để điều hướng đến nơi làm việc của người dùng.avoid
đặt các tính năng mà tuyến đường nên tránh.avoid
là không bắt buộc và có thể được đặt thành một hoặc nhiều trong số:t
cho phí cầu đườngh
cho đường cao tốcf
cho phà
waypoints
chỉ định một hoặc nhiều địa điểm trung gian để định tuyến đường đi đến đích đến cuối cùng doq
chỉ định. Bạn có thể chỉ định nhiều điểm trung gian bằng cách sử dụng ký tự dấu gạch đứng (|
) để phân tách các địa điểm, ví dụ:Berlin,Germany|Paris,France
. Bạn có thể sử dụng bao nhiêu điểm trung gian tuỳ ý. Các điểm trung gian sẽ được thêm vào tuyến đường theo thứ tự được liệt kê trong URL. Mỗi điểm trung gian có thể là một địa chỉ hoặc toạ độ vĩ độ/kinh độ được phân tách bằng dấu phẩy; và bạn có thể có địa chỉ và toạ độ vĩ/dài trong cùng một ý định. Chuỗi phải được bỏ dấu thoát URL, vì vậy, các điểm trung gian như "Berlin,Germany|Paris,France" phải được chuyển đổi thànhBerlin%2CGermany%7CParis%2CFrance
.
Ví dụ
Ý định này sẽ yêu cầu chỉ đường từng chặng đến Vườn thú Taronga ở Sydney, Úc:
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Nếu không muốn trả phí cầu đường hoặc đi phà, bạn có thể yêu cầu tuyến đường cố gắng tránh những trường hợp sau:
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&avoid=tf");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Hoặc nếu bạn muốn chuyển đến trang chủ, hãy sử dụng:
Uri mapIntentUri = Uri.parse("google.navigation:place=home");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Để khởi chạy tính năng chỉ đường từng chặng đến 3 địa chỉ sau theo thứ tự, hãy đặt Vườn thú Taronga làm đích đến cuối cùng q
và Google Sydney và Nhà hát Opera Sydney làm điểm trung gian:
Google Sydney
Nhà hát Opera Sydney
Sở thú Taronga, Sydney, Úc
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7CSydney+Opera+House");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Tương tự như q
, bạn có thể biểu thị bất kỳ điểm trung gian nào bằng vĩ độ và kinh độ được phân tách bằng dấu phẩy thay vì địa chỉ. Ví dụ: để khởi chạy cùng một tính năng chỉ đường trong khi truyền vĩ độ kinh độ cho Nhà hát Opera Sydney thay vì địa chỉ:
Uri mapIntentUri = Uri.parse("google.navigation:q=Taronga+Zoo,+Sydney+Australia&waypoints=Google+Sydney%7C-33.856159,151.215256");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Gửi kế hoạch chuyến đi bằng xe điện đến Google Maps
Sử dụng ý định điều hướng nhiều đích đến này để chỉ định một số đích đến là điểm sạc xe điện (EV). Ý định này mở rộng ý định nhiều điểm trung gian, giúp người lái xe duy trì đủ pin xe điện để đến đích bằng cách đồng bộ hoá thông tin về điểm sạc giữa các ứng dụng lập kế hoạch chuyến đi bằng xe điện và Google Maps.
Đối với trạm sạc, ý định chuyến đi:
- Phải chứa tên và vĩ độ-kinh độ
- Có thể chứa công suất đầu ra (không bắt buộc) để dùng cho việc tính thời gian sạc
Google sử dụng tên trạm sạc và toạ độ vĩ độ-kinh độ để tìm một địa điểm trạm sạc phù hợp nhằm hiển thị dữ liệu đa dạng thức như loại đầu nối, tổng số, tốc độ và tình trạng còn chỗ sạc theo thời gian thực, phương thức thanh toán được hỗ trợ và các địa điểm yêu thích (POI) của máy chủ. Ví dụ: chỉ đường lái xe trong bãi đỗ xe ngoài trời cho phần cuối cùng của thông tin chỉ đường, giờ mở cửa, điểm xếp hạng. Để đảm bảo rằng các trạm sạc khớp với dữ liệu của Google, hãy sử dụng <brand name>
, ví dụ: ChargePoint
.
Thông số
Điểm đến cuối cùng
Để đặt trạm sạc làm đích đến cuối cùng, hãy sử dụng:
q
: Phải chứa giá trị lat-long của trạm sạc.q_type
:1
chỉ định rằng đích đến cuối cùng là một trạm sạc.q_name
: Tên của đích đến cuối cùng. Bắt buộc nếuq_type
là1
.q_power_output_kw
: Số kép cho công suất đầu ra của trạm sạc tính bằng kilowatt. Không bắt buộc.
Điểm tham chiếu
Đối với các điểm trung gian, tất cả các thông số đều song song, là các mảng giá trị được phân tách bằng |- theo thứ tự giống với các điểm trung gian, không bao gồm đích đến cuối cùng. Sự không khớp về số lượng phần tử trong các mảng song song được coi là một ý định có định dạng không chính xác.
Để thêm một hoặc nhiều trạm sạc điểm trung gian, hãy sử dụng các tham số sau đây, tất cả đều không bắt buộc. Nếu một trong các đích đến được đánh dấu là trạm sạc, thì tên điểm trung gian sẽ trở thành thông tin bắt buộc cho đích đến đó.
waypoints
: Danh sách các điểm trung gian như mô tả trong ý định chỉ đường từng chặng. Phải là giá trị vĩ độ-kinh độ cho các điểm trung gian của trạm sạc.waypoint_types
: Loại trên mỗi điểm trung gian được chỉ định dưới dạng số.0
là bất kỳ điểm dừng nào (giá trị mặc định) và1
là trạm sạc.waypoint_names
: Tên điểm tham chiếu. Trường này là bắt buộc đối với các trạm sạc.waypoint_power_outputs_kw
: Số kép cho công suất của trạm sạc tính bằng kilowatt. Đối với trạm sạc, bạn có thể tuỳ ý chỉ định giá trị đầu ra của nguồn điện tại điểm trung gian. Giá trị này được dùng làm dự phòng nếu không tìm thấy trạm sạc phù hợp. Khe trống có nghĩa là không có giá trị nào được cung cấp.
Hành vi liên quan đến trải nghiệm người dùng (UX)
Đối với ý định chuyến đi có nhiều điểm đến, màn hình tổng quan về tuyến đường sẽ xuất hiện nhưng tính năng chỉ đường sẽ không tự động bắt đầu.
Đối với ý định được định dạng chính xác, Google Maps sẽ hiển thị màn hình tổng quan về tuyến đường cho chuyến đi. Màn hình tổng quan về tuyến đường sẽ hiển thị tất cả các điểm trung gian và đích đến cuối cùng từ ý định, cùng với các đề xuất sạc nếu có.
Đối với mọi điểm trung gian hoặc điểm đến cuối cùng được đánh dấu là trạm sạc, Google Maps sẽ tìm kiếm một địa điểm phù hợp trong cơ sở dữ liệu của Google.
Khi tìm thấy kết quả trùng khớp, Google Maps sẽ sử dụng dữ liệu của Google để hiển thị trạm sạc trong giao diện người dùng (UI) và đưa ra đề xuất sạc cho trạm sạc đó. Nếu không tìm thấy kết quả trùng khớp, dữ liệu được cung cấp trong ý định cho một sạc trạm (vĩ độ-kinh độ, tên và công suất đầu ra) sẽ được dùng để hiển thị sạc trạm này trong giao diện người dùng và đưa ra đề xuất sạc tại sạc trạm này.
Ví dụ
Chỉ đường đến điểm đến cuối cùng thông qua nhiều trạm sạc
Ý định sau đây sẽ chỉ đường đến đích cuối cùng là Port Macquarie NSW, thông qua hai trạm sạc là ChargePoint và Evie.
Các đích đến theo thứ tự:
Trạm sạc ChargePoint (vị trí: -32.9599188,151.6240806, công suất đầu ra: 6,6 kW)
Trạm sạc Evie (vị trí: -31.9432539,152.4699808, công suất đầu ra: 350kw)
Port Macquarie, New South Wales
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=Port+Macquarie+NSW"
+ "&waypoints=-32.9599188%2C151.6240806%7C-31.9432539%2C152.4699808"
+ "&waypoint_types=1%7C1"
+ "&waypoint_names=ChargePoint+Charging+Station%7CEvie+Charging+Station"
+ "&waypoint_power_outputs_kw=6.6%7C350");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Công suất đầu ra không xác định
Nếu không xác định được giá trị đầu ra công suất, hãy để trống khe tương ứng của waypoint_power_outputs_kw
. Hoặc nếu tất cả các khe đều trống, bạn không cần phải chỉ định tham số waypoint_power_outputs_kw
.
Các đích đến theo thứ tự:
Trạm sạc ChargePoint (vị trí: -32.9599188,151.6240806, công suất đầu ra: không xác định)
Port Macquarie, New South Wales
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=Port+Macquarie+NSW"
+ "&waypoints=-32.9599188%2C151.6240806"
+ "&waypoint_types=1"
+ "&waypoint_names=ChargePoint+Charging+Station");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Đánh dấu đích đến cuối cùng là trạm sạc
Để đánh dấu đích đến cuối cùng là trạm sạc, hãy chỉ định các tham số q_type
, q_name
và q_power_output_kw
.
Các đích đến theo thứ tự:
Sở thú Taronga, Sydney, Úc
Trạm sạc ChargePoint (vị trí: -32.9599188,151.6240806, công suất đầu ra: không xác định)
Trạm sạc Evie (vị trí: -31.9432539,152.4699808, công suất đầu ra: 350kw)
Uri mapIntentUri =
Uri.parse(
"google.navigation:q=-31.9432539,152.4699808&q_type=1&q_name=Evie+Charging+Station&q_power_output_kw=350"
+ "&waypoints=Taronga+Zoo%2C+Sydney+Australia%7C-32.9599188%2C151.6240806"
+ "&waypoint_types=0%7C1"
+ "&waypoint_names=%7CChargePoint+Charging+Station"
+ "&waypoint_power_outputs_kw=%7C");
Intent mapIntent = new Intent(Intent.ACTION_VIEW, mapIntentUri);
mapIntent.setPackage("com.google.android.apps.maps");
startActivity(mapIntent);
Ý định hành động
Có các ý định hành động sau đây với giao diện:
Hành động | Mô tả |
---|---|
geo.action:?act=mute |
Tắt tiếng tất cả thông tin chỉ đường bằng giọng nói. |
geo.action:?act=unmute |
Bật hướng dẫn bằng giọng nói khi đi theo chỉ dẫn. |
geo.action:?act=show_traffic |
Hiển thị các tuyến đường giao thông trên bản đồ. |
geo.action:?act=hide_traffic |
Ẩn các đường giao thông trên bản đồ. |
geo.action:?act=show_satellite |
Hiển thị hình ảnh vệ tinh trên bản đồ. |
geo.action:?act=hide_satellite |
Ẩn hình ảnh vệ tinh trên bản đồ. |
geo.action:?act=query_next_turn |
Google Maps thông báo về ngã rẽ tiếp theo (chỉ hoạt động khi bạn đang đi theo chỉ dẫn). |
geo.action:?act=distance_to_next_turn |
Google Maps đọc khoảng cách đến điểm rẽ tiếp theo (chỉ hoạt động khi bạn đang đi theo chỉ dẫn). |
geo.action:?act=time_to_next_turn |
Google Maps đọc thời gian đến ngã rẽ tiếp theo (chỉ hoạt động khi bạn đang đi theo chỉ dẫn). |
geo.action:?act=distance_to_destination |
Google Maps đọc khoảng cách đến đích (chỉ hoạt động khi bạn di chuyển). |
geo.action:?act=go_back |
Google Maps quay lại màn hình trước trong giao diện người dùng. |
geo.action:?act=query_current_road |
Google Maps đọc tên đường hiện tại. |
geo.action:?act=query_destination |
Google Maps sẽ đọc điểm đến. |
geo.action:?act=apply_electric_vehicle_connector_filter |
Áp dụng bộ lọc loại đầu nối cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=remove_electric_vehicle_connector_filter |
Xoá bộ lọc loại đầu nối cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=apply_electric_vehicle_payment_filter |
Áp dụng bộ lọc phương thức thanh toán cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=remove_electric_vehicle_payment_filter |
Xoá bộ lọc phương thức thanh toán cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=apply_electric_vehicle_fast_charging_filter |
Áp dụng bộ lọc sạc nhanh cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=remove_electric_vehicle_fast_charging_filter |
Xoá bộ lọc sạc nhanh cho kết quả tìm kiếm về trạm sạc xe điện. |
geo.action:?act=avoid_tolls |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps tránh các tuyến đường có trạm thu phí. Điều này có thể dẫn đến việc thay đổi tuyến đường nếu tuyến đường hiện tại có thu phí. |
geo.action:?act=allow_tolls |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps cho phép các tuyến đường có trạm thu phí. Điều này có thể dẫn đến việc định tuyến lại nếu cho phép đường thu phí sẽ có một tuyến đường tốt hơn. |
geo.action:?act=avoid_ferries |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps tránh các tuyến đường có phà. Điều này có thể dẫn đến việc định tuyến lại nếu tuyến đường đang hoạt động hiện có các chuyến phà. |
geo.action:?act=allow_ferries |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps cho phép các tuyến đường có phà. Điều này có thể dẫn đến việc định tuyến lại nếu cho phép phà sẽ có một tuyến đường tốt hơn. |
geo.action:?act=avoid_highways |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps tránh các tuyến đường có đường cao tốc. Điều này có thể dẫn đến việc định tuyến lại nếu tuyến đường đang hoạt động hiện có đường cao tốc. |
geo.action:?act=allow_highways |
Nếu người dùng đang đi theo chỉ dẫn, hãy yêu cầu Google Maps cho phép các tuyến đường có đường cao tốc. Điều này có thể dẫn đến việc định tuyến lại nếu cho phép đi đường cao tốc sẽ có một tuyến đường tốt hơn. |
geo.action:?act=eta |
Nếu người dùng đang đi theo chỉ dẫn, Google Maps sẽ đọc thời gian dự kiến đến đích (ví dụ: 9:15). |
geo.action:?act=time_to_destination |
Nếu người dùng đang đi theo chỉ dẫn, Google Maps sẽ đọc thời gian dự kiến đến đích (ví dụ: 15 phút). |
geo.action:?act=exit_navigation |
Thoát chế độ chỉ đường. |
geo.action:?act=select_search_result&id=0 |
Nếu kết quả tìm kiếm hiện đang hiển thị trên màn hình (xem bên dưới), hãy bắt đầu điều hướng đến kết quả thứ n dựa trên tham số mã nhận dạng được cung cấp. Lưu ý rằng chỉ mục dựa trên 0 (tức là ý định ở trên sẽ chọn kết quả đầu tiên trong danh sách).
|