API การบายพาสตำแหน่งยานยนต์

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

  • Android 12 ไม่มี API สาธารณะสำหรับฟีเจอร์นี้ แอพช่วยเหลือคนขับควรขออัพเดตตำแหน่งตามปกติ
  • Android 13 ขึ้นไปจะต้องส่งคำขอตำแหน่งเพื่อใช้ LocationManager.requestLocationUpdates() และส่งผ่านออบเจ็กต์ LocationRequest ที่กำหนดค่าด้วย LocationRequest.setAdasGnssBypass(true)

ใช้ API การบายพาสตำแหน่งตัวช่วยคนขับ

ส่วนต่อไปนี้จะอธิบายวิธีใช้ API การบายพาสตำแหน่งตัวช่วยคนขับ หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับนโยบายการใช้งาน โปรดดูที่ นโยบายรายการอนุญาตการบายพาสตำแหน่ง

ตรวจสอบสถานะสวิตช์ช่วยเหลือผู้ขับขี่

ใน Android 13 ขึ้นไป คุณสามารถตรวจสอบสถานะสวิตช์ตัวช่วยคนขับก่อนขออัปเดตตำแหน่งได้

// Returns the current status of "Use location for driver assistance".
locationManager.isAdasGnssLocationEnabled();

เรียกใช้คำสั่ง Android Debug Bridge (ADB)

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

  1. หากต้องการใช้คำสั่ง ADB เพื่อตรวจสอบหรือเปลี่ยนสถานะ:
    // Gets the status of ADAS location.
    adb shell cmd location is-adas-gnss-location-enabled
    
    // Enables ADAS location.
    adb shell cmd location set-adas-gnss-location-enabled true
    
    // Disables ADAS location.
    adb shell cmd location set-adas-gnss-location-enabled false
    

ตั้งค่าการอนุญาต

ดูสิ่งต่อไปนี้สำหรับรุ่น Android เฉพาะเวอร์ชัน:

  1. ใน Android 12 แอปช่วยเหลือผู้ขับขี่จะต้องมีสิทธิ์ WRITE_SECURE_SETTINGS
  2. ใน Android 13 ขึ้นไป จำเป็นต้องมีสิทธิ์ LOCATION_BYPASS

เพิ่มแอปลงในรายการที่อนุญาตบนอุปกรณ์ของคุณ

ในไดเร็กทอรี etc/sysconfig :

  1. เพิ่มชื่อแพ็คเกจของแอปในไฟล์ XML การกำหนดค่าระบบ:
  2. <!-- In a xml file under etc/sysconfig–>
    <config>
    …
    <allow-adas-location-settings package="PACKAGE-NAME" />
    …
    </config>
    

เพื่อให้แน่ใจว่าแพ็คเกจของคุณปรากฏใน UI การตั้งค่าตำแหน่ง ให้เพิ่มชื่อแพ็คเกจของคุณไปที่ config_locationDriverAssistancePackageNames

เพิ่ม URL ของการเปิดเผยนโยบายความเป็นส่วนตัวของแอปลงใน AndroidManifest.xml ชื่อของข้อมูลเมตาควรเป็น privacy_policy

<meta-data android:name="privacy_policy" android:value= privacy policy URL/>

ลบ "ใช้ตำแหน่งสำหรับสวิตช์ช่วยเหลือผู้ขับขี่"

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

  1. เปิด packages/apps/Car/Settings/res/xml/location_settings_fragment.xml จากนั้นใส่เครื่องหมายความคิดเห็นในโค้ดต่อไปนี้
    <com.android.car.ui.preference.CarUiTwoActionSwitchPreference
    
        android:fragment="com.android.car.settings.location.AdasLocationFragment"
    
        android:key="@string/pk_location_driver_assistance_state_switch"
    
        android:title="@string/location_driver_assistance_toggle_title"
    
        android:summary="@string/location_driver_assistance_toggle_summary"
    
    
    settings:controller="com.android.car.settings.location.AdasLocationSwitchPreferenceController"
    
        settings:searchable="true"/>
    
      <com.android.car.settings.common.DividerPreference/>
    
  2. หลังจากถอดสวิตช์ออก ให้ตั้งค่า config_defaultAdasGnssLocationEnabled เป็น false

เรียกใช้ชุดทดสอบยานยนต์

Google มีชุดการทดสอบยานยนต์ (ATS) ซึ่งช่วยให้มั่นใจว่าแพ็กเกจช่วยเหลือผู้ขับขี่ทั้งหมดในอุปกรณ์ได้รับอนุญาตจาก Google การทดสอบได้รับการกำหนดค่าจากระยะไกล คุณไม่จำเป็นต้องรอจนกว่า ATS รุ่นถัดไปจึงจะเพิ่มแพ็คเกจใหม่ได้ คุณสามารถเรียนรู้เพิ่มเติมได้ที่ Complete Automotive Tests in a Box