Skip to main content
このドキュメントは v0.0.4 基準です。稼働中のバージョンは OneS1ght.SDK_VERSION で確認できます。
OneS1ght はアプリ全体で 1 つだけの object エントリーポイントです — インスタンスは作らず、すべての API を直接呼び出します。 非同期 API は同じ名前で 2 つの形式があります — Kotlin は suspend fun、Java は最後の引数に Callback<T> を受け取る形式です。 以下の表は Kotlin の形式で記載しています。

ライフサイクル

initialize のパラメーター: 既定の baseUrl は https://console.ones1ght.com/api/sdk/v1 です。
initialize は建物・フロアを取得せず、端末の対応状況も確認しません。 非対応端末も初期化は通過し(図面・ゾーンの取得は可能)、 測位の開始(begin())でのみ拒否されます。空間の設定は setFloorMap の役割です。

測位セッション — FloorSession

コールバック

セッションのコールバックは FloorSession インスタンスに、デバッグログは OneS1ght に登録します。すべてのコールバックは メインスレッドで呼び出されます。リスナーは fun interface のため、Kotlin では ZoneListener { zone -> … }、Java ではラムダで登録します。

ConfigChange — コンソールの変更

LogLevel — ログレベル

import co.onecheck.ones1ght.android.runtime.LogLevel でインポートします。宣言順に比較できるため、 level >= LogLevel.WARN のように絞り込めます。
サーバーの応答は onTriggers だけです — ネットワークが切れると進入判定は届きますが、トリガーは届きません。

空間の取得

エンドポイント 1 つにつきメソッド 1 つで、一覧と単体が対になっています。すべて suspend です。

フロアの指定

エンジンが BLE でフロアを自ら見つけるため、setFloorMap なしでも座標は出ます(E3001、WARN — 正常な 経路)。ただしゾーンイベント(進入・退出・滞在)を受け取るには setFloorMap でフロアを指定する必要が あります — エンジンの領域名に対応するコンソールゾーンがないと E3009、エンジンが検出したフロアと指定 フロアが異なると E3008、20 秒以内にフロアが見つからないと E3007 が出力されます。

プロフィール

貴社の会員 ID はサーバーに送られません — 対応関係は貴社のみが保持します。

データ送信

座標は 300 件または 60 秒のうち先に達した時点で送信されます。 バックグラウンドへの移行時と end() 時にも残りの座標を送信します。

状態の取得

Java からは getter で読みます — OneS1ght.isInitialized()、OneS1ght.getDeviceAvailability()、OneS1ght.getGoogleMapKey()。

エラー — SdkError

SdkError は SDK 自体が投げる 5 種類です。通信の失敗は ApiError(co.onecheck.ones1ght.android.network)で届きます。 どちらも Exception のサブクラスで、.code.code でエラーコードの文字列を取り出せます。
測位ランタイム(E4001〜E4004)、空間設定(E3001〜E3009)、権限(E2003)は throw されず、ログにのみ出力されます — onDebugLog またはコンソールのログ分析で確認してください。全一覧

モデル

モデルは co.onecheck.ones1ght.android.model パッケージにあります。

Coordinates — リアルタイム座標

Building · Floor — 建物・フロア

Locator · FloorLocators — ロケーター

Zone — ゾーン

コンソールゾーンは今後、地図の表示・zone_id へのマッピング・サーバーへの送信のためにのみ使われます (設定方法)。測位エンジンが報告する領域名とコンソールゾーンの名前が一致している 必要があり、一致するものがない場合は E3009(WARN)が 1 回出力され、その領域のイベントはサーバーへ 送られません。
判定パラメーターが残っているゾーンがあると、SDK が一度だけ WARN で知らせます — 値自体はもう判定に 使われないという意味です。

Trigger — パーソナライズアクション

MockPositioningProvider — テスト用

co.onecheck.ones1ght.android.positioning パッケージにあり、session.begin(provider) で注入すると UWB なしで SDK のパイプラインを 確認できます。ZoneEventStatus は ENTER · DWELL · EXIT です。

スレッド

  • Kotlin の suspend API はどのコルーチンから呼び出しても構いません。SDK が内部でスレッドを切り替えます。
  • identify・empty・pause・resume はメインスレッドで呼び出します。
  • コールバック(onPosition など)と Java の Callback の結果はメインスレッドで呼び出されます — そのまま UI を更新しても安全です。

知っておくべき制約

Android の UWB 測位はフォアグラウンド専用です。アプリがバックグラウンドに移ると測位が止まり、残りの座標を送信した後、 戻ると再開します。プラットフォームの制約のため、SDK で回避することはできません。
座標バッファはメモリ上にあります。アプリが強制終了されると、まだ送信していない座標は失われます(E5006)。