位置情報コマンド(ノード)

要約

  • location.getnode.invoke 経由のノードコマンドです。
  • デフォルトはオフ。
  • Android アプリの設定はセレクター方式: オフ / 使用中のみ。
  • 別トグル: 正確な位置情報。

セレクター方式を採用する理由(単純なスイッチではなく)

OS パーミッションは複数レベルです。アプリ内でセレクターを公開できますが、実際の許可は OS が決定します。

  • iOS/macOS ではシステムプロンプトや設定で使用中のみまたは常にが表示されることがあります。
  • Android アプリは現在フォアグラウンド位置情報のみサポートしています。
  • 正確な位置情報は別の許可です(iOS 14+ の「正確」、Android の「fine」対「coarse」)。

UI のセレクターはリクエストするモードを制御し、実際の許可は OS の設定に依存します。

設定モデル

ノードデバイスごとに:

  • location.enabledMode: off | whileUsing
  • location.preciseEnabled: bool

UI の動作:

  • whileUsing を選択するとフォアグラウンドパーミッションをリクエストします。
  • OS がリクエストしたレベルを拒否した場合、許可された最高レベルに戻り、ステータスを表示します。

パーミッションマッピング(node.permissions)

任意。macOS ノードはパーミッションマップ経由で location を報告します。iOS/Android では省略される場合があります。

コマンド: location.get

node.invoke 経由で呼び出します。

パラメータ(推奨):

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

レスポンスペイロード:

{
  "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 を拒否します。
  • Android で位置情報をリクエストする場合は OpenClaw を開いたままにしてください。
  • 他のノードプラットフォームでは動作が異なる場合があります。

モデル/ツール連携

  • ツール: nodes ツールが location_get アクションを追加(ノードが必要)。
  • CLI: openclaw nodes location get --node <id>
  • エージェントのガイドライン: ユーザーが位置情報を有効にし、その範囲を理解している場合にのみ呼び出してください。

UX 文言(推奨)

  • オフ: 「位置情報の共有は無効です。」
  • 使用中のみ: 「OpenClaw を開いているときのみ。」
  • 正確: 「正確な GPS 位置情報を使用します。おおよその位置を共有するにはオフにしてください。」