Automotive Location Bypass 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 ครั้งถัดไปเพื่อเพิ่มแพ็กเกจใหม่ ดูข้อมูลเพิ่มเติมได้ที่การทดสอบยานยนต์แบบครบวงจรในกล่องเดียว