Google Maps สําหรับ Android Automotive Intent

ข้อจำกัดความรับผิด

ผลิตภัณฑ์/ฟีเจอร์นี้จะมีการเปลี่ยนแปลงและไม่ขึ้นอยู่กับข้อตกลงระดับการให้บริการ (SLA) หรือนโยบายการเลิกใช้งาน การใช้งานอาจมีการเปลี่ยนแปลงในรุ่นต่อๆ ไป

สำหรับซอฟต์แวร์ตัวอย่าง ไฟล์ข้อมูล และ/หรือซอร์สโค้ดที่มาพร้อมกับเอกสารนี้ ผลิตภัณฑ์นี้ให้บริการ "ตามที่เป็น" และไม่มีการรับประกันใดๆ และ Google ขอจำกัดความรับผิดอย่างชัดแจ้งในการรับประกันใดๆ ทั้งหมด ไม่ว่าจะเป็นโดยชัดแจ้ง โดยนัย ตามกฎหมายหรืออื่นใด รวมถึงแต่ไม่จำกัดเพียงการรับประกันคุณค่าความเป็นสินค้า ความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ และการไม่ละเมิดสิทธิ์ใดๆ ที่เกี่ยวข้องกับผลิตภัณฑ์นี้


คุณสามารถเปิดการนำทางใน Google Maps ได้โดยใช้ Intent ของ Android Automotive

ดูข้อมูลเพิ่มเติมได้ที่ Google Maps Intents สำหรับ Android

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการนำแอปไปใช้ในยานพาหนะที่ใช้ Android Auto หรือ Android Automotive OS โปรดดู Android for Cars

ภาพรวม

หน้านี้จะอธิบายถึงเจตนาที่คุณสามารถใช้กับ Google Maps สำหรับ Android Automotive หากต้องการดูเอกสารสำหรับนักพัฒนาซอฟต์แวร์ Android โดยละเอียด โปรดอ่านหัวข้อต่อไปนี้

คำขอ Intent

หากต้องการเปิดใช้ Google Maps สำหรับ Android Automotive ด้วย Intent ก่อนอื่นคุณต้องสร้างออบเจ็กต์ Intent ระบุการดำเนินการ, URI และแพ็กเกจ

  • การดำเนินการ Intent ทั้งหมดของ Google Maps เรียกว่า "ดูการดำเนินการ" ACTION_VIEW

  • URI Google Maps Intent ใช้สตริงที่เข้ารหัส URI ซึ่งระบุการดำเนินการที่ต้องการ พร้อมด้วยข้อมูลบางอย่างที่จะดำเนินการ

  • พัสดุ การเรียกใช้ setPackage("com.google.android.apps.maps") ช่วยให้มั่นใจได้ว่าแอป Google Maps สำหรับ Android จะจัดการ Intent ได้ หากไม่มีการตั้งค่าแพ็กเกจ ระบบจะกำหนดแอปที่สามารถจัดการ Intent ได้ หากมีหลายแอป ระบบอาจถามว่าคุณต้องการใช้แอปใด

หลังจากสร้าง Intent แล้ว คุณสามารถขอให้ระบบเปิดแอปที่เกี่ยวข้องได้หลายวิธี วิธีการที่ใช้กันโดยทั่วไปคือการส่ง Intent ไปยังเมธอด [startActivity()] ระบบจะเปิดแอปที่จำเป็น ซึ่งในกรณีนี้คือ Google Maps และเริ่มกิจกรรมที่เกี่ยวข้อง

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

หากระบบระบุแอปที่ตอบสนองต่อ Intent ไม่ได้ แอปของคุณอาจขัดข้อง ด้วยเหตุนี้ ก่อนอื่นให้ยืนยันว่ามีการติดตั้งแอปพลิเคชันฝั่งผู้รับแล้วก่อนที่คุณจะแสดง Intent เหล่านี้ให้กับผู้ใช้

หากต้องการยืนยันว่าแอปพร้อมให้รับ Intent แล้ว ให้เรียกใช้ [resolveActivity()] ในออบเจ็กต์ [Intent] หากผลลัพธ์ไม่ใช่ Null แสดงว่ามีอย่างน้อย 1 แอปที่สามารถจัดการ Intent ได้และเรียกใช้ [startActivity()] ได้อย่างปลอดภัย หากผลลัพธ์เป็นค่าว่าง คุณไม่ควรใช้ Intent และ หากเป็นไปได้ ให้ปิดใช้ฟีเจอร์ที่เรียกใช้ Intent

if (mapIntent.resolveActivity(getPackageManager()) != null) {
...
}

ตัวอย่างเช่น หากต้องการเปิดการนำทางแบบเลี้ยวต่อเลี้ยวไปยังสวนสัตว์ทารองก้าในซิดนีย์ คุณสามารถใช้รหัสต่อไปนี้

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

สตริงการค้นหาที่เข้ารหัส URI

สตริงทั้งหมดที่ส่งไปยัง Intent ของ Google Maps จะต้องเข้ารหัส URI ตัวอย่างเช่น สตริง "1st & Pike, Seattle" ควรเปลี่ยนเป็น 1st%20%26%20Pike%2C%20Seattle การเว้นวรรคในสตริงสามารถเข้ารหัสด้วย %20 หรือแทนที่ด้วยเครื่องหมายบวก (+)

คุณใช้เมธอด android.net.Uri parse() เพื่อเข้ารหัสสตริงได้ เช่น

Uri mapIntentUri = Uri.parse("google.navigation:q=" + Uri.encode("1st & Pike, Seattle"));

เปิดการนำทางแบบเลี้ยวต่อเลี้ยว

ใช้ความตั้งใจนี้เพื่อเปิดการนำทางของ Google Maps พร้อมการนำทางแบบเลี้ยวต่อเลี้ยวไปยังที่อยู่หรือพิกัดที่ระบุไว้ เส้นทางจะแสดงจากตำแหน่งปัจจุบันของผู้ใช้เสมอ

google.navigation:q=a+street+address
google.navigation:q=latitude,longitude
google.navigation:place=placename

พารามิเตอร์

หากต้องการเปิดการนำทาง ให้ใช้ place หรือ q กับ waypoints ซึ่งจะไม่บังคับ หากต้องการทำเครื่องหมายจุดอ้างอิงเป็นสถานีชาร์จ โปรดดูส่งแผนการเดินทางด้วยรถยนต์ไฟฟ้าไปยัง Google Maps

  • q กำหนดจุดสิ้นสุดสำหรับการค้นหาเพื่อไปยังส่วนต่างๆ ซึ่งอาจเป็นละติจูด/ลองจิจูดหรือที่อยู่ที่มีรูปแบบการค้นหาก็ได้ หากเป็นสตริงการค้นหาที่แสดงผลลัพธ์มากกว่า 1 รายการ ระบบจะเลือกผลลัพธ์แรก

  • place กำหนดปลายทางเป็นบ้านหรือที่ทำงาน ระบุบ้านที่จะนำทางไปยังบ้านของผู้ใช้ และทำงานเพื่อนำทางไปยังที่ทำงานของผู้ใช้

  • avoid กำหนดฟีเจอร์ที่เส้นทางควรหลีกเลี่ยง avoid เป็นตัวเลือกที่ไม่บังคับและสามารถตั้งค่าเป็น 1 รายการต่อไปนี้หรือมากกว่า

    • tสำหรับค่าผ่านทาง
    • hสำหรับทางหลวง
    • fสำหรับเรือข้ามฟาก
  • waypoints ระบุตำแหน่งตัวกลางอย่างน้อย 1 แห่งเพื่อกำหนดเส้นทางของเส้นทางไปยังจุดหมายสุดท้ายที่ระบุโดย q คุณสามารถระบุจุดอ้างอิงหลายจุดโดยใช้อักขระไปป์แนวตั้ง (|) เพื่อแยกสถานที่ เช่น Berlin,Germany|Paris,France โดยสามารถใช้จุดอ้างอิงได้มากเท่าที่ต้องการ ระบบจะเพิ่มจุดอ้างอิงไปยังเส้นทางในลำดับเดียวกันกับที่แสดงใน URL จุดอ้างอิงแต่ละจุดอาจเป็นที่อยู่หรือพิกัดละติจูด/ลองจิจูดที่คั่นด้วยคอมมา และคุณมีที่อยู่และพิกัดละติจูด/ลองจิจูดให้เหมือนกันได้ สตริงควรเป็น Escape URL ดังนั้นจึงควรแปลงจุดอ้างอิง เช่น "เบอร์ลิน, เยอรมนี|ปารีส,ฝรั่งเศส" เป็น Berlin%2CGermany%7CParis%2CFrance

ตัวอย่าง

Intent นี้จะขอการนำทางแบบเลี้ยวต่อเลี้ยวไปยังสวนสัตว์ทารองก้าใน ซิดนีย์ออสเตรเลีย:

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

หากคุณไม่ต้องการจ่ายค่าผ่านทางหรือนั่งเรือข้ามฟาก คุณขอกำหนดเส้นทางที่จะลองหลีกเลี่ยงสถานการณ์ต่อไปนี้ได้

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

หรือหากต้องการนำทางกลับบ้าน ให้ใช้

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

หากต้องการเรียกใช้การนำทางแบบเลี้ยวต่อเลี้ยวไปยังที่อยู่ 3 แห่งต่อไปนี้ตามลำดับ ให้ผ่านสวนสัตว์ทารองก้าเป็นจุดหมายสุดท้าย q และจาก Google ซิดนีย์และโอเปร่าเฮ้าส์ เป็นจุดอ้างอิง:

  1. Google ซิดนีย์

  2. ซิดนีย์โอเปร่าเฮ้าส์

  3. สวนสัตว์ทารองก้า ซิดนีย์ออสเตรเลีย

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

คุณสามารถแสดงจุดอ้างอิงใดก็ได้ด้วยละติจูดและลองจิจูดที่คั่นด้วยคอมมาแทนที่จะเป็นที่อยู่ เช่นเดียวกับ q เช่น หากต้องการเปิดการนำทางเดียวกันขณะส่งลองจิจูดละติจูดสำหรับโรงอุปรากรซิดนีย์ แทนที่จะใช้ที่อยู่ ให้ทำดังนี้

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

ส่งแผนการเดินทางด้วยรถยนต์ไฟฟ้าไปยัง Google Maps

ใช้ความตั้งใจในการนำทางหลายจุดหมายนี้เพื่อระบุจุดหมายบางแห่งเป็นจุดชาร์จรถยนต์ไฟฟ้า (EV) ความตั้งใจนี้จะขยายความตั้งใจให้กับจุดอ้างอิงหลายจุด ช่วยให้ผู้ขับขี่สามารถชาร์จแบตเตอรี่ของรถยนต์ไฟฟ้าได้อย่างเพียงพอเพื่อไปให้ถึงจุดหมายโดยซิงค์ข้อมูลจุดชาร์จระหว่างแอปวางแผนการเดินทาง EV กับ Google Maps

สำหรับจุดชาร์จ จุดประสงค์ในการเดินทางมีดังนี้

  • ต้องมีชื่อและละติจูด/ลองจิจูด
  • อาจมีเอาต์พุตพลังงานเพื่อใช้ในการคำนวณเวลาชาร์จ (ไม่บังคับ)

Google ใช้ชื่อสถานีชาร์จและละติจูด/ลองจิจูดเพื่อค้นหาตำแหน่งของสถานีชาร์จที่ตรงกันเพื่อแสดงข้อมูลที่สมบูรณ์ เช่น ประเภทหัวชาร์จไฟฟ้า ผลรวม ความเร็ว ความพร้อมใช้งานแบบเรียลไทม์ วิธีการชำระเงินที่รองรับ และจุดสนใจ (POI) ของโฮสต์ เช่น เส้นทางการขับขี่ในลานจอดรถกลางแจ้งสำหรับส่วนสุดท้ายของการนำทาง เวลาทำการ และคะแนน โปรดใช้ <brand name> เช่น ChargePoint เพื่อให้แน่ใจว่าสถานีชาร์จไฟฟ้าจับคู่กับข้อมูลใน Google ได้ดี

พารามิเตอร์

ปลายทางสุดท้าย

หากต้องการตั้งสถานีชาร์จเป็นปลายทางสุดท้าย ให้ใช้

  • q: ต้องมีค่าละติจูด/ลองจิจูดของสถานีชาร์จ
  • q_type: 1 ระบุว่าปลายทางสุดท้ายเป็นสถานีชาร์จ
  • q_name: ชื่อของปลายทางสุดท้าย ต้องระบุหาก q_type คือ 1
  • q_power_output_kw: เลขคู่ของเอาต์พุตพลังงานของสถานีชาร์จเป็นกิโลวัตต์ ไม่บังคับ

จุดบนเส้นทาง

สำหรับจุดอ้างอิง พารามิเตอร์ทั้งหมดจะเป็นอาร์เรย์ของค่าที่คั่นด้วย | ในลำดับเดียวกับจุดอ้างอิง โดยไม่รวมปลายทางสุดท้าย หากจำนวนองค์ประกอบในอาร์เรย์ขนานไม่ตรงกัน ระบบจะถือว่าเป็น Intent ที่มีรูปแบบไม่ถูกต้อง

หากต้องการเพิ่มจุดอ้างอิงของสถานีชาร์จอย่างน้อย 1 จุด ให้ใช้พารามิเตอร์ต่อไปนี้ ซึ่งทั้งหมดไม่บังคับ หากปลายทางใดปลายทางหนึ่งมีการทำเครื่องหมายเป็นสถานีชาร์จ ชื่อจุดอ้างอิงต้นทางนั้นจะต้องระบุสำหรับปลายทางนั้น

  • waypoints: รายการจุดอ้างอิงตามที่อธิบายไว้ในจุดประสงค์ของการนำทางแบบเลี้ยวต่อเลี้ยว ต้องเป็นค่าละติจูด/ลองจิจูดสำหรับจุดอ้างอิงของสถานีชาร์จ

  • waypoint_types: ประเภทต่อจุดอ้างอิงที่ระบุเป็นตัวเลข 0 คือสถานีชาร์จใดก็ได้ (ค่าเริ่มต้น) และ 1 เป็นสถานีชาร์จ

  • waypoint_names: ชื่อจุดอ้างอิง ช่องนี้เป็นช่องสำหรับ สถานีชาร์จไฟฟ้า

  • waypoint_power_outputs_kw: เลขคู่ของกำลังไฟฟ้าของสถานีชาร์จเป็นกิโลวัตต์ สำหรับสถานีชาร์จ คุณจะระบุค่ากำลังไฟฟ้าของจุดอ้างอิงได้ ซึ่งจะใช้เป็นสถานีสำรองหากไม่พบสถานีที่ตรงกัน ช่องโฆษณาว่างเปล่าหมายความว่าไม่มีการระบุค่า

ลักษณะการทำงานของประสบการณ์ของผู้ใช้ (UX)

สำหรับความตั้งใจในการเดินทางที่มีจุดหมายหลายแห่ง ระบบจะแสดงหน้าจอภาพรวมเส้นทาง แต่การนำทางจะไม่เริ่มต้นโดยอัตโนมัติ

Google Maps จะแสดงหน้าจอภาพรวมเส้นทางสำหรับการเดินทางเพื่อให้รูปแบบปลายทางถูกต้อง หน้าจอภาพรวมเส้นทางจะแสดงจุดอ้างอิงทั้งหมดและปลายทางสุดท้ายจาก Intent พร้อมคำแนะนำในการชาร์จ (หากมี)

สำหรับจุดอ้างอิงหรือจุดหมายสุดท้ายที่ทำเครื่องหมายว่าเป็นสถานีชาร์จ Google Maps จะค้นหาสถานที่ที่ตรงกันในฐานข้อมูลของ Google

เมื่อพบการจับคู่ที่ตรงกัน Google Maps จะใช้ข้อมูลของ Google เพื่อแสดงสถานีชาร์จในอินเทอร์เฟซผู้ใช้ (UI) และให้คำแนะนำเกี่ยวกับการชาร์จสำหรับสถานีชาร์จดังกล่าว หากไม่พบข้อมูลที่ตรงกัน ระบบจะใช้ข้อมูลที่ระบุในความตั้งใจสำหรับสถานีชาร์จ (ละติจูด-ลองจิจูด ชื่อ และเอาต์พุตพลังงาน) เพื่อแสดงสถานีชาร์จนี้ใน UI และให้คำแนะนำการชาร์จที่สถานีชาร์จนี้

ตัวอย่าง

นำทางไปยังจุดหมายสุดท้ายโดยใช้สถานีชาร์จหลายแห่ง

Intent ต่อไปนี้นำทางไปยังปลายทางสุดท้าย นั่นคือ Port Macquarie NSW ผ่านสถานีชาร์จ 2 แห่ง คือ ChargePoint และ Evie

ปลายทางตามลำดับ:

  1. สถานีชาร์จ ChargePoint (ตำแหน่ง: -32.9599188,151.6240806, เอาต์พุต: 6.6kw)

  2. สถานีชาร์จ Evie (สถานที่: -31.9432539,152.4699808 เอาต์พุตพลังงาน: 350kw)

  3. พอร์ตแมคควอรี นิวเซาท์เวลส์

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

ไม่ทราบเอาต์พุตพลังงาน

หากไม่ทราบค่าเอาต์พุตพลังงาน ให้ปล่อยช่องที่เกี่ยวข้องของ waypoint_power_outputs_kw ว่างไว้ หรือหากช่องโฆษณาทั้งหมดว่างเปล่า ก็ไม่จำเป็นต้องระบุพารามิเตอร์ waypoint_power_outputs_kw

ปลายทางตามลำดับ:

  1. สถานีชาร์จ ChargePoint (สถานที่: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)

  2. พอร์ตแมคควอรี นิวเซาท์เวลส์

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

ทำเครื่องหมายจุดหมายสุดท้ายเป็นสถานีชาร์จ

หากต้องการทำเครื่องหมายปลายทางสุดท้ายเป็นสถานีชาร์จ ให้ระบุพารามิเตอร์ q_type, q_name และ q_power_output_kw

ปลายทางตามลำดับ:

  1. สวนสัตว์ทารองก้า ซิดนีย์ออสเตรเลีย

  2. สถานีชาร์จ ChargePoint (สถานที่: -32.9599188,151.6240806, เอาต์พุตพลังงาน: ไม่ทราบ)

  3. สถานีชาร์จ Evie (สถานที่: -31.9432539,152.4699808 เอาต์พุตพลังงาน: 350 กิโลวัตต์)

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