Nodes and media

Команда определения местоположения

Кратко

  • location.get — команда Node, вызываемая через node.invoke или openclaw nodes location get.
  • По умолчанию отключено.
  • В сторонних сборках для Android используется селектор: «Отключено» / «Во время использования» / «Всегда». В сборках для Play остаются варианты «Отключено» / «Во время использования».
  • Точное местоположение включается отдельным переключателем.

Почему селектор, а не просто переключатель

Разрешения ОС на доступ к местоположению имеют несколько уровней. Точное местоположение также предоставляется ОС отдельно («Точное местоположение» в iOS 14+, «точное» и «приблизительное» в Android). Селектор в приложении задаёт запрашиваемый режим, но фактически предоставляемый уровень доступа по-прежнему определяет ОС.

Модель настроек

Для каждого устройства Node:

  • location.enabledMode: off | whileUsing | always
  • location.preciseEnabled: логическое значение

Поведение интерфейса:

  • При выборе whileUsing запрашивается разрешение на доступ во время использования приложения.
  • При выборе always в сторонней сборке для Android сначала запрашивается разрешение на доступ во время использования приложения, затем объясняется необходимость фонового доступа и открываются настройки приложения Android, где отдельно предоставляется разрешение Allow all the time.
  • Сборки для Android Play не объявляют разрешение на фоновый доступ к местоположению и не показывают always.
  • Если ОС отклоняет запрошенный уровень, приложение возвращается к наивысшему предоставленному уровню и показывает его состояние.

Сопоставление разрешений (node.permissions)

Необязательно. Node для macOS сообщает location через карту permissions в node.list/node.describe; в iOS/Android это значение может отсутствовать.

Команда: location.get

Вызывается через node.invoke или вспомогательную команду CLI:

bash
openclaw nodes location get --node <idOrNameOrIp>openclaw nodes location get --node <idOrNameOrIp> --accuracy precise --max-age 15000 --location-timeout 10000

Параметры:

json
{  "timeoutMs": 10000,  "maxAgeMs": 15000,  "desiredAccuracy": "coarse|balanced|precise"}

Флаги CLI сопоставляются напрямую: --location-timeout -> timeoutMs, --max-age -> maxAgeMs, --accuracy -> desiredAccuracy.

Данные ответа:

json
{  "lat": 48.20849,  "lon": 16.37208,  "accuracyMeters": 12.5,  "altitudeMeters": 182.0,  "speedMps": 0.0,  "headingDeg": 270.0,  "timestamp": "2026-01-03T12:34:56.000Z",  "isPrecise": true,  "source": "gps|wifi|cell|unknown"}

Ошибки (стабильные коды):

  • LOCATION_DISABLED: селектор отключён.
  • LOCATION_PERMISSION_REQUIRED: отсутствует разрешение для запрошенного режима.
  • LOCATION_BACKGROUND_UNAVAILABLE: приложение работает в фоновом режиме, но доступ разрешён только во время использования.
  • LOCATION_TIMEOUT: местоположение не определено за отведённое время.
  • LOCATION_UNAVAILABLE: системный сбой или отсутствие поставщиков данных.

Поведение в фоновом режиме

  • Сторонние сборки для Android принимают фоновый запрос location.get, только если пользователь выбрал Always и Android предоставил доступ к местоположению в фоновом режиме. Существующая постоянная служба Node добавляет тип службы location и во время работы отображает Location: Always.
  • Сборки для Android Play и режим While Using отклоняют location.get, когда приложение работает в фоновом режиме.
  • На других платформах Node поведение может отличаться.

Интеграция с моделью и инструментами

  • Инструмент агента: действие location_get инструмента nodes (требуется Node).
  • CLI: openclaw nodes location get --node <id>.
  • Рекомендации для агента: вызывать только в том случае, если пользователь включил передачу местоположения и понимает область предоставляемого доступа.

Предлагаемый текст интерфейса

  • Отключено: «Передача местоположения отключена».
  • Во время использования: «Только когда OpenClaw открыто».
  • Всегда: «Разрешить запрашиваемые проверки местоположения, когда OpenClaw работает в фоновом режиме».
  • Точное местоположение: «Использовать точное местоположение по GPS. Отключите этот параметр, чтобы передавать приблизительное местоположение».

Связанные разделы

Was this useful?
On this page

On this page