logo

Overview

本ドキュメントは、プローブデータ収集SDKの使用方法を説明します。

パイオニア株式会社 © Pioneer Corporation. All Rights Reserved.

About ProbeData SDK and around

プローブデータ収集SDKと周辺の概要について説明します。

プローブデータ収集SDKと周辺

Figure.1.1 - プローブデータ収集SDKと周辺

ProbeData SDK

プローブデータ収集SDKは、モバイル端末のモバイルOS(Android/iOS)のユーザーアプリケーションに組み込まれて利用します。

プローブデータ収集SDKは、ユーザーアプリケーションからのナビ情報や、モバイル端末からの位置情報などを収集します。 収集データは、配信データとして、配信先のクラウドサーバへ配信します。

プローブデータ収集SDKの利用OSは、Android/iOSを対象としています。

User Application

ユーザーアプリケーションは、プローブデータ収集SDK APIを介して、プローブデータ収集SDKの開始・終了を制御したり、ナビ情報などを受け渡したりすることができます。 ユーザーアプリケーションの利用OSも、Android/iOSを対象としています。

Cloud Server

クラウド環境におけるクラウドサーバは、本ドキュメントの対象外です。

クラウド環境のクラウドサーバは、プローブデータ収集SDKからの配信データを受け取ります。 プローブデータ収集SDKでは、配信データの識別のために認証パラメータを付帯しています。

Architecture

はじめに

プローブデータ収集SDKは、ユーザーアプリケーションからプローブデータ収集SDK API経由で、 制御情報外部データを受け取ります。

更にプローブデータ収集SDKは、モバイル端末の位置情報などを内部データとして収集します。

プローブデータ収集SDKは、収集した外部データと内部データを、配信データとしてクラウドサーバに配信します。

配信データには、認証パラメータなどの付帯データを付けます。

プローブデータ収集SDK周辺図

Figure.2.1 - プローブデータ収集SDK周辺図

ProbeData SDK API

ユーザーアプリケーションから、プローブデータ収集SDKを制御するにはプローブデータ収集SDK APIを用います。 このAPIには、制御用のAPIデータ収集用のAPIがあります。

  • 制御用のAPIで、プローブデータ収集SDKの開始・終了、認証用パラメータ等の制御を行います。詳細はcontrolを参照してください。

  • データ収集用のAPIで、ナビ情報などの外部データを、プローブデータ収集SDKへ渡すことができます。詳細はdata_collectを参照してください。

Get Start

本章では、初めてSDKを触る人向けに、SDKの使い方を解説します。

Get Your Credentials

プローブデータ収集SDKでは、クラウドサーバへ配信するデータに認証パラメータを付帯しています。 この付帯された認証パラメータを用いて、クラウドサーバにおいて配信データを識別します。 認証パラメータが渡されなければ、プローブデータ収集SDKは配信動作を行いません。 認証パラメータは、ユーザーアプリケーションにて入手し、プローブデータ収集SDKに渡してください。

認証パラメータの例

Figure.3.1.1 - 認証パラメータの例

認証パラメータ

認証パラメータは、認証キー種別、と、認証キー、から構成されます。

認証キー種別は、APIキー方式です。

認証キーは、APIキーの値、です。

具体的なAPIキー(文字列)については営業窓口までお問い合わせください。

認証パラメータの実際の利用方法については、後述のAPI(activate/updateKey)を参照してください。


認証パラメータ
認証キー種別1   (APIキーによる認証)
認証キーキーの値
Table.3.1.2 - 認証パラメータの説明


APIキーによる認証

ユーザーアプリケーションにて、配信先のクラウドサーバが発行するAPIキーを入手します。 このAPIキーを、API経由でプローブデータ収集SDKに受け渡します。

具体的なAPIキー(文字列)については営業窓口までお問い合わせください。

APIキーと共に、ユーザー識別情報も付帯します。 これにより、クラウドサーバではユーザーを識別します。

APIキーによる認証の例

Figure.3.1.3 - APIキーによる認証の例

Create a New Project

新しくプローブデータ収集SDKを使うプロジェクトを立ち上げる方法を説明します。

Androidの場合

※本ドキュメントのAndroid開発にはKotlinを前提に記述しています。

以下を参考にして、Kotlinベースでのサンプルプログラムを立ち上げてください。

iOSの場合

※本ドキュメントのiOS開発にはSwiftを前提に記述しています。

以下を参考にして、Swiftベースのサンプルプロジェクトを立ち上げてください。

Integrate Pioneer ProbeData SDK

本章では、ユーザーアプリケーションにプローブデータ収集SDKを組み込む方法を説明します。

Androidの場合

Installation

  1. ユーザのサンプルプログラムのプロジェクト内でライブラリを格納するフォルダ(例:libs)にプローブデータ収集SDKのライブラリ形式のバイナリファイル(例:predictivesdk.aar)をコピーします。

  1. アプリのbuild.gradleにプローブデータ収集SDKのライブラリとその他のライブラリを追加します。
    dependencies {
    
        implementation fileTree( dir:'libs', include:['*.jar','*.aar'])
    
        implementation "io.insert-koin:koin-android:3.3.0"
    
    	def room_version = "2.5.0"
    	implementation "androidx.room:room-runtime:$room_version"
    	implementation "androidx.room:room-ktx:$room_version"
    	annotationProcessor "androidx.room:room-compiler:$room_version"
    
    	implementation 'com.squareup.okhttp3:okhttp:4.9.0'
    
    	implementation 'com.google.android.gms:play-services-location:21.0.1'
    }
    

Usage

  1. SDKのDIライブラリにKoinを使用しています。Koinの初期化をします。

    1. android.app.Applicationを継承したクラス内で初期化します。
      override fun onCreate() {
      	super.onCreate()
      	startKoin {}
      }
      
  2. ユーザーアプリケーション側でユーザーのランタイム権限を取得してください。

    必要な権限は次の通りです。

    android.permission.ACCESS_COARSE_LOCATION
    android.permission.ACCESS_FINE_LOCATION
    android.permission.ACTIVITY_RECOGNITION
    
  3. プローブデータ収集SDK(PredictiveSdk())をインポートします。

    import predictiveSdk
    
  4. SDKインスタンスを作成し、コンテキストを譲渡します。

    val sdk = PredictiveSdk()
    sdk.context(context)
    
  5. 以降はSDK内部動作の有効化~停止(Android/iOS共通)、を参照してください。

Option

Debugビルド時の内部動作のロギング設定です。

  • Logcat出力

NameValue
predictiveSdkverbose, debug, info, warn, errorログレベル
CheckPredSdkverbose, debug, info, warn, errorログレベル
Table.3.3.1 - ロギング設定 (Android)

iOSの場合

Installation

Swift Package Manager

  • Xcodeでxcodeprojを開き、対象のTARGETS → General → Frameworks, Libraries, and Embedded Content からプローブデータ収集SDKのバイナリファイル(.xcframework)を選択し追加します。

    ※[XcodeGenを使う場合] project.ymlにプローブデータ収集SDKを追加し xcodegen generate を実行します。
    targets:
    	TARGET名:
    	dependencies:
    +	- framework: PredictiveSDK.xcframework
    

Usage

※各IFの詳細については別途IF仕様書をご参照いただくか、DocCで生成した仕様書をご覧ください。

  • Xcode上からはProduct -> Build Documentation

Preparation

  1. アプリプロジェクトのInfo.plistにキーを設定してください。

Key用途
NSLocationWhenInUseUsageDescription位置情報
NSLocationAlwaysAndWhenInUseUsageDescription位置情報
NSMotionUsageDescriptionモーションアクティビティ
UIBackgroundModesバックグラウンドでの位置情報
Table.3.3.2 - Info.plistに設定するKey (iOS)

  1. プローブデータ収集SDK(PredictiveSdk())をインポートします。
    import PredictiveSdk
    
  2. エントリポイントとなるsdkインスタンスを作成します。
    let sdk = PredictiveSdk()
    

APIs

  1. データ使用権限を取得します。

    1. 位置情報の権限取得

      sdkResult = await sdk.requestLocationPermission()
      
    2. モーションアクティビティの権限取得します。

      sdkResult = await sdk.requestActivityPermission()
      
    3. バックグラウンド実行時に位置情報を更新するよう設定します。

      sdk.startBackgroundPositioning()
      
  2. 以降はSDK内部動作の有効化~停止(Android/iOS共通)、を参照してください。

Option

Debugビルド時の内部動作ロギング設定変更です。

  • プロジェクトSchemeのArguments -> Environment Variables

NameValue
predLogLevelverbose, debug, info[default], warn, errorログレベル
doRecPredLogstrue, false[default]標準出力から~/Library/Logs/PredictiveSDK/へのファイル出力変更
Table.3.3.3 - ロギング設定 (iOS)

SDK内部動作の有効化~停止(Android/iOS共通)

  1. SDKの内部動作を有効化します

    この時点から、SDK内部でのセンサ・GNSSデータの収集、定期配信のタイマーを開始します。

    具体的な動作は、activateを参照してください。

    Android/iOS:activate
    sdk.activate(SdkUploadRequest(...))
    

  2. ユーザーアプリケーション側からプローブデータ収集SDKへ各種データを入力します

    1. ナビ情報を入力します

      具体的な動作は、addNaviInfoを参照してください。

      Android/iOS:addNaviInfo
      sdk.addNaviInfo(AppNaviInfo(...))
      

    2. ルートアクションログを入力します

      具体的な動作は、addRouteActionLogを参照してください。

      Android/iOS:addRouteActionLog
      sdk.addRouteActionLog(RouteActionLog(...))
      

    3. 車両情報を入力します

      具体的な動作は、setVehicleInfoを参照してください。

      Android/iOS:setVehicleInfo
      sdk.setVehicleInfo(VehicleInfo(...))
      

    4. 認証パラメータを入力します

      具体的な動作は、updateKeyを参照してください。

      Android/iOS:updateKey
      sdk.updateKey("newKey")
      

    5. 車両IDを入力します

      activate時には、車両ID取得が未設定だった場合を想定しています。

      具体的な動作は、setVehicleIdを参照してください。

      Android/iOS:setVehicleId
      sdkResult = sdk.setVehicleId("00000000-0...")
      

  3. SDKの稼働状態を確認します

    具体的な動作は、checkHealthを参照してください。

    Android/iOS:checkHealth
    val sdkStatus = sdk.checkHealth(needDetails)
    

  4. SDKの内部動作を停止します

    ユーザーアプリケーション側のライフサイクルに合わせて、任意のタイミングで呼び出してください。

    SDK内部でのセンサ・GNSSデータの収集、定期配信のタイマーを停止します。

    具体的な動作は、deactivateを参照してください。

    Android/iOS:deactivate
    sdk.deactivate()
    

Handle Permissions

本SDKでは、位置情報とアクティビティ情報を使用します。それぞれ、位置情報権限とアクティビティ権限が必要です。

許可される権限の精度が低いには、可能な範囲でのデータを収集します。

権限自体が無い場合には、権限に対応するデータの収集はできませんが、それ以外のデータ収集は行います。

Android

以下の権限が必要です。

権限名用途
android.permission.ACCESS_COARSE_LOCATION位置情報取得(おおよそ)
android.permission.ACCESS_FINE_LOCATION位置情報取得(詳細)
android.permission.ACTIVITY_RECOGNITION (Android SDK 29以降向け)アクティビティ検知結果取得
com.google.android.gms.permission.ACTIVITY_RECOGNITION (Android SDK 28以前向け)アクティビティ検知結果取得
Table.3.4.1 - 必要な権限 (Android)

  • 位置情報取得権限

    プローブデータ収集SDKでは、位置情報を収集します。

    位置情報取得には、詳細、と、おおよそ、の二種類がありますが、プローブデータ収集SDKの動作には、詳細、が必要です。

    位置情報の権限の詳細はこちらを参照してください。Android位置情報権限:精度

  • アクティビティ取得権限

    プローブデータ収集SDKでは、アクティビティ情報を収集します。

    アクティビティ情報の取得には、Activity Recognition Transition APIを使用します。

    この使用にはアクティビティ情報取得権限が必要です。

    アクティビティ情報の詳細はこちらを参照してください。Android:ActivityRecognition

iOS

iOSでは、以下の権限が必要です。


  1. Info.plistに、以下を追加してください。

Key用途
NSLocationWhenInUseUsageDescription位置情報
NSLocationAlwaysAndWhenInUseUsageDescription位置情報
NSMotionUsageDescriptionモーションアクティビティ
UIBackgroundModes位置情報
Table.3.4.2 - Info.plistに追加するKey (iOS)



  1. アプリケーション起動後、プローブデータ収集SDKのデータ使用権限を取得してください。このAPIを介して以下のメソッドが呼び出されます。

名称設定・動作
CMMotionActivityManager.queryActivityStarting(from:to:to:withHandler:)モーションアクティビティ権限取得アラートを表示する
CLLocationManager.requestAlwaysAuthorization()位置情報権限取得アラートを表示する
CLLocationManager.allowsBackgroundLocationUpdatestrueを設定する。バックグラウンドでの実行中に位置情報を更新する
Table.3.4.3 - データ使用権原の取得で呼び出されるメソッド (iOS)




foreground and background

プローブデータ収集SDKは、 ユーザーアプリケーションで以下の設定をすることで、 フォアグラウンド、バックグラウンド、画面OFF状態で動作可能です。

OSごとに以下の設定をしてください。

Android

ユーザーアプリケーションで、フォアグランドサービスを利用してプローブデータ収集SDKを起動してください。

iOS

ユーザーアプリケーションで、以下の設定をしてください。

バックグラウンド実行時に位置情報を更新するよう設定

Usecase

Pioneer プローブデータ収集SDKの詳細な動作をを解説します。

Control

制御用のプローブデータ収集SDK APIを以下に示します。

activate

本APIにより、プローブデータ収集SDKは動作を開始します。

本APIの設定パラメータにより、プローブデータ収集SDKの動作状態を設定できます。

本APIにより、プローブデータ収集SDKは以下の動作を開始します。

  • OSからの内部データの収集を開始。
  • 配信用タイマーの動作を開始。
  • 本API以外のプローブデータ収集SDK APIに対する正常動作を開始。

本APIのパラメータにより、以下の、クラウドサーバへの配信条件を設定できます。

  • 配信先クラウドサーバのURL

  • 配信周期[秒]

  • 配信データに付帯する認証用パラメータ(認証用キー種別と、認証用キー)。

    ※認証用パラメータが未設定の場合、配信動作は行いません。

    ※本APIにて認証用パラメータが未設定の場合、updateKeyにて、配信動作を開始できます。

  • 配信データ種別で指定するデータ種別だけを配信します。

本APIは、プローブデータ収集SDKの動作を開始する前にのみ有効です。

本APIで設定したパラメータを変更する場合は、一度deactivateでプローブデータ収集SDKを終了して、再度activateをしてください。

本APIの設定パラメータと戻り値の詳細は、Table.4.1.1 ~ Table.4.1.7 を参照してください。

Android:activate
fun sendActivate(){
	var request = SdkRequest(
		SdkAuthKey(
			SdkAuthKey.SDK_APIKEY,
			"確保したAPIキー"
		),
		vehicleId="車両ID",
		URL="https://example.com/receive/",
		uploadInterval=60,
		UploadDataType(
			SENSOR_INFO,NAVI_INFO,ROUTE_ACTION_LOG
		),
	)

	val result = sdk.activate(request)
}

iOS:activate
result = sdk.activate(request: .init(
	authKey: token != "nil" ? SdkAuthKey(type: .API_KEY, value: token) : nil,
	vehicleId: vehicleId != "nil" ? vehicleId : nil,
	url: url,
	uploadInterval: Int(uploadIntervalString)!,
	uploadDataTypes: uploadDataTypes
))

deactivate

本APIにより、プローブデータ収集SDKは動作を終了します。

プローブデータ収集SDKの利用を終了する場合は、必ず本APIを呼び出してください。

本APIは、プローブデータ収集SDKが動作している時のみ有効です。

本APIの戻り値の詳細は、Table.4.1.1 ~ Table.4.1.7 を参照してください。

Android:deactivate
fun sendDeactivate(){
	val result = sdk.deactivate()
}

iOS:deactivate
sdk.deactivate()

updateKey

本APIの設定パラメータにより、認証用パラメータを更新することができます。

本APIは、プローブデータ収集SDKが動作している時のみ有効です。

activateで認証用パラメータが未設定の場合は、本APIで定期配信が開始されます。

認証用キー種別は、activate、updateKeyで、同一にしてください。

本APIの設定パラメータと戻り値の詳細は、Table.4.1.1 ~ Table.4.1.7 を参照してください。

Android:updateKey
fun sendUpdateKey(){
	val key = SdkAuthKey{
		keyType=SdkAuthKey.API_KEY,
		keyValue="キーの値",
	}

	val result = sdk.updateKey(key)
}

iOS:updateKey
result = sdk.updateKey(.init(
	type: .API_KEY,
	value: key
))

checkHealth

本APIは、プローブデータ収集SDKの動作に必須ではありません。

本APIにより、プローブデータ収集SDKの動作状態の確認ができます。

詳細フラグがfalseの場合は、戻り値のstatusCodeだけが有効で、それ以外の引数は無効です。

詳細フラグがtrueの場合は、全ての引数が有効です。

本APIの設定パラメータと戻り値の詳細は、Table.4.1.1 ~ Table.4.1.7 を参照してください。

Android:checkHealth
fun sendCheckHealth(){

	val sdkHealthInfo = sdk.checkHealth(needDetails = true)
	if( sdkHealthInfo.statusCode == SdkResult.OK){
		//OK時の処理
	}
	else{
		//NG時の処理

		if( sdkHealthInfo.xxx == false ){
			//xxxがfalse時の処理
		}
	}
}

iOS:checkHealth
healthInfo = sdk.checkHealth(needDetails: needDetails)

setVehicleId

本APIは、プローブデータ収集SDKの動作に必須ではありません。

本APIによりvehicleId(車両を識別するID)が設定できます。

vehicleIdは、配信データに付帯データとして毎回付与されます。

vehicleIdが未指定の場合でも配信されます。

本APIの設定パラメータと戻り値の詳細は、Table.4.1.1 ~ Table.4.1.7 を参照してください。

Android:setVehicleId
fun sendSetVehicleId(){

	val vehicleId = "車両ID番号"

	val result = sdk.setVehicleId(vehicleId)
}

iOS:setVehicleId
result = sdk.setVehicleId(vehicleId)

setContext[Androidのみ]

本APIによりプローブデータ収集SDKが使用するcontextを設定します。

本APIはactivate前に必ず設定してください。

Android:setContext
fun onCreate(){

	val context : Context = android.content.Context

	sdk.setContext(context)
}

requestLocationPermission[iOSのみ]

本APIにより位置情報取得に関する権限を要求します。

本APIはactivate前に必ず設定してください。

iOS:requestLocationPermission
await sdk.requestLocationPermission()

requestActivityPermission[iOSのみ]

本APIによりアクティビティ情報取得に関する権限を要求します。

本APIはactivate前に必ず設定してください。

iOS:requestActivityPermission()
await sdk.requestActivityPermission()

startBackgroundPositioning[iOSのみ]

本APIによりバックグラウンド実行時の位置情報更新を有効にします。

iOS:startBackgroundPositioning()
sdk.startBackgroundPositioning()

stopBackgroundPositioning[iOSのみ]

本APIによりバックグラウンド実行時の位置情報更新を無効にします。

iOS:stopBackgroundPositioning()
sdk.stopBackgroundPositioning()

isBackgroundPositioning[iOSのみ]

本APIによりバックグラウンド実行時の位置情報更新の状態を取得します。

iOS:isBackgroundPositioning()
status = sdk.isBackgroundPositioning()


API namedescriptionparameterparameter typereturn必須・任意補足
activateプローブデータ収集SDKの起動処理配信条件request:SdkUploadRequestSdkResult:
OK、ERROR、HAS_ACTIVATED、NOT_PERMITTED
必須認証パラメータ以外の変更には、
一度deactivateが必要
deactivateプローブデータ収集SDKの終了処理nonenoneSdkResult:
OK、ERROR、NOT_ACTIVATED
必須
updateKeyクラウドアクセス時に使用する
認証Key情報を設定・更新する
認証情報authKey:SdkAuthKeySdkResult:
OK、ERROR、NOT_ACTIVATED
任意認証パラメータがactivityで未指定の場合、
本APIで認証パラメータを設定する
checkHealthプローブデータ収集SDKの生存確認詳細フラグneedDetails:BOOLSdkHealthInfo:
SdkHealthInfo.statusCode=
    OK、ERROR、NOT_ACTIVATED
任意needDetail=true時に、
戻り値のSdkHealthInfoの全項目が有効値となる。
false時には、
SdkHealthInfo.statusCodeのみが有効値で、
他はnullとなる。
setVehicleId配信時に付帯する車両IDを設定する車両IDvehicleId:StringSdkResult:
OK、NOT_ACTIVATED、HAS_REGISTERED
任意vehicleIdが既設定時には、
HAS_REGISTEREDを返す

setContext
(Androidのみ)
コンテキストを設定するcontextcontext : Contextなし必須プローブデータ収集SDKのインスタンスの生成後、
かつactivateの前に、本API実行が必須。

requestLocationPermission
(iOSのみ)
位置情報の権限を取得するnonenoneSdkResult:
OK、NOT_PERMITTED
必須
requestActivityPermission
(iOSのみ)
アクティビティの権限を取得するnonenoneSdkResult:
OK、NOT_PERMITTED
必須
startBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を有効にする
nonenoneなし任意バックグラウンドでの位置情報更新を
有効にしたい場合は必須。

stopBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を無効にする
nonenoneなし任意
isBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を確認する
nonenoneBoolean:
  True=有効、
  False=無効
任意
Table.4.1.1 - 制御用API一覧



名称:enum SdkResult説明:SDK動作結果備考
OK正常動作排他的に利用
ERROR下記以外のエラー動作排他的に利用
HAS_ACTIVATEDSDKが既にActivate済み排他的に利用
NOT_ACTIVATEDSDKがActivateされていない排他的に利用
NOT_PERMITTEDOSでの権限が不許可排他的に利用
HAS_REGISTERED値が既に設定済み排他的に利用
Table.4.1.2 - enum SdkResult


名称:class SdkUploadRequest説明:配信条件備考省略可否
authKey: SdkAuthKey? = null認証方法に用いる文字列など省略可
vehicleId: String? = null車両ID省略可
url: String配信先のURL省略不可
uploadInterval: Int配信周期[秒]省略不可
uploadDataType: List<SdkUploadDataType>配信するデータ種別のList省略不可
Table.4.1.3 - class SdkUploadRequest


名称:enum SdkAuthType説明:認証方法備考
TOKENTokenによる認証トークン方式は未使用
API_KEYAPI keyによる認証
Table.4.1.4 - enum SdkAuthType


名称:class SdkAuthKey説明備考省略可否
type: SdkAuthType認証に用いるkeyの種別"API_KEY"のみ使用省略不可
value: String認証に用いるkeyの値省略不可
Table.4.1.5 - class SdkAuthKey


名称:enum SdkUploadDataType説明:アップロードデータ種別備考
SENSOR_INFOセンサー情報 (下記のa,b,c,d全て)重複指定可
NAVI_INFOナビ情報重複指定可
ROUTE_ACTION_LOGルートアクションログ情報重複指定可
VEHICLE_INFO車両情報重複指定可
LOCATION_INFO補正後の位置情報 (a)重複指定可
GNSS_INFOGNSS位置情報・受信状況 (b)重複指定可
HW_SENSOR_INFO加速度・ジャイロ情報 (c)重複指定可
ACTIVITY_INFOアクティビティ情報 (d)重複指定可
Table.4.1.6 - enum SdkUploadDataType


名称:class SdkHealthInfo説明:SDKの動作状況備考
statusCode : SdkResultSDK動作結果
uploadInterval : Int? = null配信周期[秒]needDetails=False時には、NULL
uploadDataType: List<SdkUploadDataType>? = null配信するデータ種別のListneedDetails=False時には、NULL
authKey: SdkAuthKey? = null認証に用いるkeyの種別とkeyの値needDetails=False時には、NULL
vehicleId: String? = null車両IDneedDetails=False時には、NULL
url : String? = null配信先のURLneedDetails=False時には、NULL
isUploading : Boolean? = null定期配信のON・OFFneedDetails=False時には、NULL
connectionStatus : Boolean? =null直前の配信の成功・失敗needDetails=False時には、NULL
sensorStatus : Boolean? = nullセンサ(加速度・ジャイロ)取得部の動作状態needDetails=False時には、NULL
fusionLocationStatus : Boolean? = nullfusionLocation取得部の動作状態needDetails=False時には、NULL
gnssStatus : Boolean? = nullGNSS取得部の動作状態
(Androidのみ有効)
needDetails=False時には、NULL
Table.4.1.7 - class SdkHealthInfo


Data Collect

プローブデータ収集SDKの外部データ収集と内部データ収集について説明します。

External Data

データ収集用のAPIを使うことにより外部からのデータをプローブデータ収集SDKに渡すことができます。

それぞれのAPIの詳細は以下の通りです。

なお、外部からのデータ追加はこちらのAPIを介してのみ可能となります。

また、扱えるデータも各APIで扱うパラメータのみです。



addNaviInfo

本APIによりナビ情報(ナビ機能で生成した緯度経度、車両向き、速度など)を追加することができます。

このナビ情報の作成には、パイオニア クラウドナビゲーションSDKから得られる情報が必要となります。

本APIは、プローブデータ収集SDKが動作している時のみ有効です。

本APIの設定パラメータと戻り値の詳細は、Table.4.2.1.1 ~ Table.4.2.1.5、 および Table.4.1.2 ~ Table.4.1.7 を参照してください。

Android:addNaviInfo
fun sendAddNaviInfo(){

	val appNaviInfo = AppNaviInfo(
        mmLat = 緯度の値
        mmLon = 経度の値
        speed = 速度の値
        dir = 方向の値
        ...
    )

	val result = sdk.addNaviInfo(appNaviInfo)
}

iOS:addNaviInfo
result = await sdk.addNaviInfo(.init(
	mmLat: Double(mmLatString)!,
	mmLon: Double(mmLonString)!,
	speed: Double(speedString)!,
	direction: Double(directionString)!,
	...
))

addRouteActionLog

本APIによりルートアクションログ(案内開始、目的地到着などのアクションとその発生日時位置情報など)を追加することができます。

このルートアクションログの作成には、パイオニア クラウドナビゲーションSDKから得られる情報が必要となります。

本APIは、プローブデータ収集SDKが動作している時のみ有効です。

本APIの設定パラメータと戻り値の詳細は、Table.4.2.1.1 ~ Table.4.2.1.5、 および Table.4.1.2 ~ Table.4.1.7 を参照してください。

Android:addRouteActionLog
fun sendAddRouteActionLog(){

	val routeActionLog = RouteActionLog(
        actionTime = "2023-01-01T10:10:10Z"
        actionType = 1
        ...
    )

	val result = sdk.addRouteActionLog(routeActionLog)
}

iOS:addRouteActionLog
result = await sdk.addRouteActionLog(.init(
	actionTime: actionTime,
	actionType: Int(actionTypeString)!,
	...
))

setVehicleInfo

本APIは、プローブデータ収集SDKの動作に必須ではありません。

本APIにより車両情報(エンジンタイプ、排気量、車重など)を追加することができます。

本APIの情報は、クラウドサーバでの誘導情報や燃費計算の精度向上に用います。

本APIは、プローブデータ収集SDKが動作している時のみ有効です。

本APIの設定パラメータと戻り値の詳細は、Table.4.2.1.1 ~ Table.4.2.1.5、 および Table.4.1.2 ~ Table.4.1.7 を参照してください。

Android:setVehicleInfo
fun sendSetVehicleInfo(){

	val vehicleInfo = VehicleInfo(
		engType = 1,
		engModel ="TYPE_A",
		...
	)

	val result = sdk.setVehicleInfo(vehicleInfo)
}

iOS:setVehicleInfo
result = await sdk.setVehicleInfo(.init(
	engType: Int(engTypeString)!,
	engModel: engModel,
	...
))


APIのパラメータと戻り値

IDAPI namedescriptionparameterparameter typereturn必須・任意補足
1addNaviInfo自車位置が更新された時に、
プローブデータ収集SDKに通知する
ナビ情報naviInfo: AppNaviInfoSdkResult:
OK、NOT_ACTIVATED
必須
2addRouteActionLogナビルート情報が更新された時に、
プローブデータ収集SDKに通知する
ナビルート情報routeActionLog: RouteActionLogSdkResult:
OK、NOT_ACTIVATED
必須
3setVehicleInfo車両情報を、
プローブデータ収集SDKに通知する
車両情報vehicleInfo: VehicleInfoSdkResult:
OK、NOT_ACTIVATED
任意
Table.4.2.1.1 - 外部データ収集API一覧

APIの引数

下記のパラメータ(AppNaviInfo, RouteActionLog, PointInfo)の詳細については、別資料(naviCoreSdk API Reference)を参照してください。

名称:class AppNaviInfo説明:ユーザーアプリケーションから受領するナビ情報省略可否備考
mmLat: Double[degree]マップマッチング緯度。世界測地系省略不可
mmLon: Double[degree]マップマッチング経度。世界測地系省略不可
speed: Double[m/s]走行速度省略不可
onRoad: Boolean路上フラグ
True:自車位置がオンロード
False:自車位置がオフロード
省略不可
dir: Double車両向き
[degree]
省略不可北0度 時計回り正
linkKind: Intリンク種別
0:Roundaboutリンク
1:本線(上下線非分離)リンク
2:本線(上下線分離)リンク
3:連結路(本線間の渡り線)リンク、
4:交差点内リンク
5:連結路(ランプ)リンク
6:本線と同一路線の側道
7:SA等測線リンク
省略不可無効値の場合-1
roadKind: Int道路種別
0:高速
1:都市高速
2:国道
3:主要地方道
4:県道
5:一般道路(幹線)
6:一般道路(その他)
7:導入路
8:細街路1
9:細街路2
10:フェリー航路
省略不可無効値の場合-1
insideTunnel: Booleanトンネルフラグ
True:トンネル内
False:トンネル外
省略不可
onHighway: Boolean高速道路フラグ
True:高速道路走行中
False:高速道路以外を走行中
省略不可
tollgateDist: Double? = null[m]現在位置から料金所までの道なり距離省略可
signalDist: Double? = null[m]現在位置から信号機までの道なり距離省略可
directDist: Double? = null[m]現在位置から案内地点までの道なり距離省略可
joinPointDist: Double? = null[m]現在位置から合流地点までの道なり距離省略可
destDist: Double? = null[m]現在位置から目的地までの道なり距離省略可
mapVer: String地図バージョン省略不可
setRoute: Booleanルート設定中フラグ。
True:ルートあり
False:ルートなし
省略不可
streetName: String道路名称省略不可
streetYomi: String道路名称ヨミデータ省略不可
linkId: Int現在走行中の道路のリンクID省略不可無効値の場合-1
guidePointId: Int? = null案内地点ID 直近案内地点のリンクID省略可
passPointId: Int通過地点ID 直近通過地点のリンクID省略不可
debug: String? = nullデバッグ情報省略可
forward: Booleanリンク順方向走行フラグ
True:リンク格納方向と同方向に走行中
False:リンク格納方向と異なる方向に走行中
省略不可
distToNode: Double[m]現在位置から前方ノードまでの道なり距離省略不可
linkLen: Double[m] リンク全長省略不可
tileId: Int自車位置のタイルID省略不可
startX: DoubleリンクIDの始点ノードのX座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
startY: DoubleリンクIDの始点ノードのY座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
endX: DoubleリンクIDの終点ノードのX座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
endY: DoubleリンクIDの終点ノードのY座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
Table.4.2.1.2 - class AppNaviInfo



名称:class RouteActionLog説明:ユーザーアプリケーションから受領するナビルート情報省略可否備考
actionTime: Stringアクション発生時刻
UTC時刻(ISO 8601)
省略不可
actionType: Intアクション種別
0:不明
1:出発(案内開始)
2:出発(案内再開)
3:到着
4:新規探索
5:再探索
6:オートリルートまたはルートアドバイザーによるリルート
7:ルート削除
8:自宅探索(Androidのみ)
省略不可
pointInfo: List<PointInfo>POI情報配列のリスト。PointInfoを参照。省略不可
estToll: Int? = null推測される高速料金[円]省略可
fMbrToll: Int? = null無料会員ルートの高速料金[円]省略可
pMbrToll: Int? = null有料会員ルートの高速料金[(円]省略可
fMbrFuelCons: Double? = null無料会員基準ルートでのガソリン消費量
[L]、EVの場合は[kWh]
省略可
pMbrFuelCons: Double? = null有料会員基準ルートでのガソリン消費量
[L]、EVの場合は[kWh]
省略可
Table.4.2.1.3 - class RouteActionLog



名称:class PointInfo説明:アプリから受領するナビルート情報に含まれるPOI情報省略可否備考
kind: Int地点種別
0:目的地
1:立ち寄り地
2:ルート始点
   (地点名称・地点ヨミは省略)
3:ルート削除地点
省略不可
index: Int地点番号
出発地を0とし、立ち寄る順で番号を付与する
省略不可
name: String? = null地点名称省略可
nameVoice: String? = null地点ヨミ。地点名の仮名表記省略可
lat: Double地点緯度[degree] 世界測地系省略不可
lon: Double地点経度[degree] 世界測地系省略不可
Table.4.2.1.4 - class PointInfo



名称:class VehicleInfo説明:アプリから受領する車両情報省略可否備考
engType: Int0:「選択しない」/「不明」
1:「ガソリン車」
2:「ディーゼル車」
3:「LPG車」
4:「HV」
5:「PHEV」
6:「EV」
7:「FCEV」
省略不可
engModel: String車検証に記載の型式省略不可
classificationNum: String車検証に記載の類別区分番号省略不可
hasIdlingStop: booleanアイドリングストップ有無
True:有り
False:無し
省略不可EV時はFalse
engDisplacement: Int排気量[cc]省略不可EV時は-1
weight: Int車両重量[kg]省略不可
width: Int車幅[cm]省略不可
height: Int車高[cm]省略不可
maxLoadCapacity: Int最大積載量[kg]省略不可
actualLoadCapacity: Int実積載量[kg]省略不可
vehicleId: String車両ID
未使用の場合はを以下を指定
"00000000-0000-0000-0000-000000000000"
省略不可
evBatteryCapacity: DoubleEV最大電池量[kWh]省略不可
fuelCapacity: Doubleガソリンタンク量[L]省略不可
wltc: DoubleWLTC値[km/L]。EVの場合は [Wh/km]省略不可
Table.4.2.1.5 - class VehicleInfo

データリスト(外部データ)

ID説明データ型値[単位]必須/任意
1マップマッチング緯度double[degree]必須
2マップマッチング経度double[degree]必須
3速度double[m/s]走行速度必須
4路上フラグint0: 自車位置がオフロード、1: 自車位置がオンロード必須
5車両向きdouble[degree]必須
6リンク種別int0 Roundaboutリンク
1 本線(上下線非分離)リンク
2 本線(上下線分離)リンク
3 連結路(本線間の渡り線)リンク
4 交差点内リンク
5 連結路(ランプ)リンク
6 本線と同一路線の側道
7 SA等測線リンク
必須
7道路種別int0:高速
1:都市高速
2:国道
3:主要地方道
4:県道
5:一般道路(幹線)
6:一般道路(その他)
7:導入路
8:細街路1
9:細街路2
10:フェリー航路
任意
8トンネルフラグint0: トンネル外、1: トンネル内必須
9高速道路フラグint0: 高速道路以外を走行中、1: 高速道路走行中必須
10料金所までの距離double[m]現在位置から料金所までの道なり距離任意
11信号機までの距離double[m]現在位置から信号機までの道なり距離任意
12案内地点までの距離double[m]現在位置から案内地点までの道なり距離任意
13合流地点までの距離double[m]現在位置から合流地点までの道なり距離任意
14目的地までの距離double[m]現在位置から目的地までの道なり距離任意
15地図バージョンstring必須
16ルート設定フラグint0: ルートなし、1: ルートあり必須
17道路名称string必須
18道路名称ヨミデータstring必須
19リンクIDint現在走行中の道路のリンクID必須
20案内地点IDint直近案内地点のリンクID任意
21通過地点IDint直近通過地点のリンクID必須
22デバッグ情報string任意
23順方向走行フラグint0:リンク格納方向と異なる方向に走行中
1:リンク格納方向と同方向に走行中
必須
24前方ノードまでの距離double[m]現在位置から前方ノードまでの道なり距離必須
25リンク長double[m] リンク全長必須
26タイルIDint自車位置のタイルID必須
27リンクID始点ノードのX座標doubleタイル内の正規化座標必須
28リンクID始点ノードのY座標doubleタイル内の正規化座標必須
29リンクID終点ノードのX座標doubleタイル内の正規化座標必須
30リンクID終点ノードのY座標doubleタイル内の正規化座標必須
31積算走行距離double[m] SDK起動時点からの積算走行距離必須
32区間走行距離double[m] ルートありの間の積算走行距離。ルートなしの場合常に0必須
33前回レコードからの走行距離double[m]必須
34乗車中フラグint0:乗車中ではない、1:乗車中と判定必須
Table.4.2.1.6 - ナビ情報のデータリスト



IDデータ種別データ型値 [単位]必須/任意
1アクション発生時刻stringUTC時刻 (ISO8601)必須
2アクション種別int0:不明
1:出発(案内開始)
2:出発(案内再開)
3:到着
4:新規探索
5:再探索
6:オートリルートまたはルートアドバイザーによるリルート
7:ルート削除
8:自宅探索(Androidのみ)
必須
3POI情報配列array出発地、目的地、立ち寄り地、等の配列(ID4~9を単位)必須
4   ├ 地点種別int0:目的地
1:立ち寄り地
2:ルート始点
   (POI情報配列は地点名称・ヨミは無し)
3:ルート削除地点
必須
5   ├ 地点番号int出発地を0とし、立ち寄る順で番号を付与する必須
6   ├ 地点名称string任意
7   ├ 地点ヨミstring地点名の仮名表記任意
8   ├ 地点緯度int[degree] 世界測地系必須
9   ├ 地点経度int[degree] 世界測地系必須
10推測される高速料金int[円]任意
11無料会員基準ルートでの高速料金int[円]任意
12有料会員基準ルートでの高速料金int[円]任意
13無料会員基準ルートでのガソリン消費量int[L]、EVの場合は[kWh]任意
14有料会員基準ルートでのガソリン消費量int[L]、EVの場合は[kWh]任意
Table.4.2.1.7 - ルートアクションログのデータリスト




IDデータ種別データ型値 [単位]必須/任意
1エンジンタイプint0:「選択しない」/「不明」
1:「ガソリン車」
2:「ディーゼル車」
3:「LPG車」
4:「HV」
5:「PHEV」
6:「EV」
7:「FCEV」
必須
2型式string例:"ABC-AB1"必須
3類別区分番号string例:"0001"必須
4アイドリングストップ有無int0:無し、1:有り、EVの場合は項目自体無し任意
5排気量int[cc]、EVの場合は項目自体無し任意
6車両重量int[kg]必須
7車幅int[cm]必須
8車高int[cm]必須
9最大積載量int[kg]必須
10実積載量int[kg]必須
11車両IDstringUUID必須
12EV最大電池量double[kWh]必須
13ガソリンタンク量double[L]必須
14WLTC値double[km/L]、EVの場合は[Wh/km]必須
Table.4.2.1.8 - 車両情報のデータリスト

Internal Data

OSからの情報を取得し、プローブデータ収集SDKに渡します。

取得できる内部データと詳細は以下の通りです。

OS情報

OSの種類を取得します。

iOS もしくは Android (もしくは 不明)

0: 不明、1: Android、2: iOS、81: iOSシミュレータ



OSバージョン情報

OSが iOS もしくは Android だった場合、OSのバージョンを取得します。

使用ライブラリ

[Android]

Build.VERSION.RELEASE


[iOS]

systemVersion


ユーザー識別情報

スマートフォンを識別する番号を、ユーザー識別情報として、配信情報に付帯します。

OS毎に取得方法は異なります。

両OSともに64bit数値の16進数表示の文字列です。36文字。

例) 45fd4b50-57ee-4deb-b7cf-05082ce6fe62 (36文字ハイフン含む)


[Android]

ANDROID_ID

[iOS]

UUID



位置情報

fusedLocation

補正後の位置情報 (GPS/GNSS、WiFi基地局情報、携帯電話網基地局情報の組合せ)を取得します。

詳細は Table.4.2.2.8 を参照してください。

使用ライブラリ(緯度・経度)

[Android]

location provider = FUSED_PROVIDER

Table.4.2.2.1 - 使用ライブラリ (FusedLocation) (Android)

[iOS]
情報library
補正後の位置 緯度var latitude: CLLocationDegrees
補正後の位置 経度var longitude: CLLocationDegrees
補正後の方位var course: CLLocationDirection
補正後の高度var ellipsoidalAltitude: CLLocationDistance
補正後の速度var speed: CLLocationSpeed
Table.4.2.2.2 - 使用ライブラリ (FusedLocation) (iOS)

GNSS (※Androidのみ)

GNSSによる位置情報・衛星受信状態を取得します。

位置情報と衛星受信状態の両方が受領できたタイミングで、データを取得します。

詳細は Table.4.2.2.7 を参照してください。

使用ライブラリ

[Android]

location provider = GPS_PROVIDER

Table.4.2.2.3 - 使用ライブラリ (GNSS) (Android)

慣性センサ情報

エッジ端末のセンサ情報(加速度計、ジャイロ計)を取得します。

加速度とジャイロの両方が受領できたタイミングで、データを取得します。

XYZ方向加速度

エッジ端末の加速度を取得します。

詳細は Table.4.2.2.9 を参照してください。

使用ライブラリ

[Android]

android.hardware.SensorManager.getRotationMatrix()


[iOS]

var userAcceleration: CMAcceleration


回転加速度

エッジ端末のジャイロを取得します。

詳細は Table.4.2.2.9 を参照してください。

使用ライブラリ

[Android]

android.hardware.Sensor.TYPE_GYROSCOPE

[iOS]

var rotationRate: CMRotationRate


アクティビティ情報

アクティビティ情報として、次の2つの値を収集します。

収集データ内容
ActivityActivity検知結果^1(Activity)
ConfidenceActivity検知結果^1(信頼度)
Table.4.2.2.4 - アクティビティ情報の収集データ

また、上記2つの値から、SDK搭載アルゴリズム^2を用いて活動状況を推定した結果を算出します。

算出結果内容
ActivityStatusSDK搭載アルゴリズム^2で求めたActivity
Table.4.2.2.5 - アクティビティ情報の算出結果


^1: Activity検知結果:OS標準ライブラリで得られたActivity検知結果(Activityと信頼度)

^2: SDK搭載アルゴリズム:OS標準ライブラリで得られたActivity検知結果から、プローブデータ収集SDK内部でばらつき除去・丸め等をする処理。


Activity と Confidence

OS標準ライブラリで得られるActivity検知結果のActivityとConfidence(信頼度)です。

詳細は Table.4.2.2.10 を参照してください。

使用ライブラリ


[Android]

Table.4.2.2.6 - 使用ライブラリ (Activity検知) (Android)

注意:上記ライブラリでは、Activityが変化した時のみActivityが取得できます。このため、Activityの変化が無ければ、Activity,Confidenceの取得・配信はありません。

[iOS]

CMMotionActivity


ActivityStatus

OS標準ライブラリで得られるActivity検知結果のActivity、Confidenceから、 SDK搭載アルゴリズムで判定したアクティビティ推定値(動作不明、歩行中、乗車中)を取得します。

注意:[Android] Activityの変化が無くActivityが取得できない場合は、本データの取得・配信はありません。


データリスト(内部データ)

IDデータ種別データ型値 [単位]必須/任意
1GNSS位置 緯度double[degree]必須
2GNSS位置 経度double[degree]必須
3GNSS方位double[degree] デバイスが移動している方向必須
4GNSS高度double[m]必須
5捕捉衛星数int必須
6測位使用衛星数int必須
7電波強度double[dBHz]必須
8GNSS有効int0:無効、1:有効必須
Table.4.2.2.7 - GNSS情報のデータリスト (Androidのみ)



IDデータ種別データ型値 [単位]必須/任意
1補正後の位置 緯度double[degree]必須
2補正後の位置 経度double[degree]必須
3補正後の方位double[degree] デバイスが移動している方向必須
4補正後の高度double[m]必須
5補正後の速度double[m/s]必須
Table.4.2.2.8 - 補正済み位置情報のデータリスト



IDデータ種別データ型値 [単位]必須/任意
1~3XYZ方向加速度double[m/s^2]、各xyz方向
座標系はOS依存
必須
4~6回転加速度double[rad/s]、各xyz軸の回転方向
座標系はOS依存
必須
Table.4.2.2.9 - 慣性センサ情報のデータリスト



IDデータ種別データ型値 [単位]必須/任意
1ActivityStatusintSDKで判定したアクティビティ
0:動作不明
1:歩行中
2:乗車中
必須
2アクティビティ検知結果
(Activity)
intOS標準APIで取得したアクティビティ
取り得る値はOS依存
必須
3アクティビティ検知結果
(confidence)
intOS標準APIで取得したアクティビティの信頼度
取り得る値はOS依存
必須
Table.4.2.2.10 - アクティビティ情報のデータリスト



IDデータ種別データ型値 [単位]必須/任意
1OS情報int0:不明
1:Android
2:iOS
81:iOSシミュレータ
必須
2OSバージョン情報stringOSバージョン情報必須
3ユーザー識別情報stringAndroid:ANDROID_ID(OSから取得)
iOS:UUID(OSから取得)
必須
Table.4.2.2.11 - システム情報のデータリスト



Upload

収集したデータをパイオニア管理のクラウドサーバへ配信します。

配信条件

ユーザーアプリケーションでは、activateの引数にて、以下の配信条件のみが設定可能です。

  • 配信先URL
  • 配信周期
  • 配信データ種別 ( 参照:Table.4.3.1 )


配信データ種別→

配信する収集データ↓
SENSOR
_INFO
NAVI
_INFO
ROUTE
_ACTION
_LOG
VEHICLE
_INFO
LOCATION
_INFO
GNSS
_INFO
HW
_SENSOR
_INFO
ACTIVITY
_INFO
naviInfo配信する
routeActionLog配信する
vehicleInfo配信する
Fused Location配信する配信する
Gnss配信する配信する
Sensor
(加速度・ジャイロ)
配信する配信する
Activity配信する配信する
Table.4.3.1 - 配信データ種別と配信する外部・内部データ



配信データ量

配信するデータと配信サイズの目安を以下に示します。

データ名配信サイズの目安
(Byte/分)
通信量算出の想定
(配信周期60秒)
備考
GNSS12907データ発生1秒ごとAndroidのみ
FusedLocation9113データ発生1秒ごと
Sensor(加速度・ジャイロ)10589データ発生1秒ごと
Activity7080データ発生1秒ごと
NaviInfo34072データ受領1秒ごと
RouteActionLog61データ受領 10回/日ナビルート操作により増減
VehicleInfo4データ受領 2回/日
Table.4.3.2 - 配信するデータ量と配信サイズ


目安通信量
1分間当たり約18.2KByte
1か月当たり約32MByte

※ 1か月の想定:1日80分間利用。1か月の走行日数22日間。

Table.4.3.3 - 時間当たりの通信量の目安


配信動作

配信周期の設定範囲は、1秒間~10分間です。( デフォルトは60秒間 )

SDK内部の配信動作は以下の設定 ( Table.4.3.4 ) に基づき動作します。

配信時のリトライに関する項目説明、値
Httpコネクトタイムアウト10秒
Readタイムアウト10秒
Writeタイムアウト10秒
配信成功基準レスポンスのステータスコードが200番台である
配信失敗時リトライ回数2回
リトライ超過時の動作[iOS] 次回のタイミングで配信する。(ただし、各データの蓄積可能時間内に限る)
[Android] データ破棄。

※本リトライ処理は、端末動作のためのものであり、クラウドの動作不具合を考慮したものではありません。

Table.4.3.4 - 配信動作の設定

配信データの配信先

配信データは、パイオニア管理のクラウドサーバへ配信します。

具体的にはAmazon AWSクラウドで、Amazon S3の任意のフォルダです。以下の例を参照してください。

  • 保存先のパス(S3 URI)

    s3://pia-stg-situationawareness-lbs-archive/tmp/archive/company_id=PEC/version=0_0_0/year=yyyy/month=mm/day=dd/

    ※yyyy/mm/dd はそれぞれ 年/月/日

  • 保存形式

    parquet

  • データ形式

    JSON

配信データの一時保存

配信に失敗した際にデータを保証するため、収集したデータを一時的に蓄積しています。

SDK内のデータ蓄積にはRingBuffer構造を用いています。

各データごとの、バッファ個数、サンプリング時間、蓄積可能時間は下記 ( Table.4.3.5 ) を参照してください。

データRingBuffer個数サンプリング周期蓄積可能時間
GNSS (Androidのみ)12001[s]1200[s]
Fused Location12001[s]1200[s]
Sensor
(Accelerometer,Gyroscope)
12001[s]1200[s]
Activity12001[s]※1200[s]
NaviInfo100アプリから受領---
RouteActionLog100アプリから受領---
VehicleInfo1アプリから受領---

※ Androidの場合は、Activityが変化した時にのみデータを収集します。このためサンプリング周期は1[s]とはなりません。

Table.4.3.5 - 各データのRingBuffer個数/サンプリング周期/蓄積可能時間

Glossary

名称意味
プローブデータ収集SDK本ドキュメントで説明するPioneer製のモバイル端末向けプローブ情報配信用SDK。
ライブラリの名称として"PredictiveSDK"と呼称します
ユーザーアプリケーションユーザーが開発する、モバイル端末向けアプリケーションプロブラム
クラウドサーバプローブデータ収集SDKが配信データを配信する際に利用するクラウドサービス
プローブデータ収集SDK APIユーザーアプリケーションが、プローブデータ収集SDKを制御するためのApplication Program Interface
プローブデータプローブデータ収集SDKが収集してクラウドサーバに配信する情報。
ユーザーアプリケーションから収集する外部データと、モバイル端末から収集する内部データ、の2種類
収集データプローブデータ収集SDKが、収集するプローブデータ。
ユーザーアプリケーションからAPI経由で収集。または、モバイル端末から標準ライブラリ経由で収集。
配信データプローブデータ収集SDKがクラウドサーバに配信するプローブデータ
付帯データ配信データに付帯してクラウドサーバへ送信される制御のためのデータ
ユーザー識別情報ユーザーを識別するための情報。モバイル端末から取得する。
AndroidではANDROID_ID。iOSでは、UUID。
認証用パラメータプローブデータ収集SDKが配信データを配信する際に付帯する認証用のデータ
認証用キー種別プローブデータ収集SDKがプローブデータを配信する際に付帯する認証用パラメータを指定する種別。APIキー方式のみ有効
APIキー方式プローブデータ収集SDKがプローブデータを配信する際の認証パラメータにAPIキーを用いる場合の認証キー種別
認証用キープローブデータ収集SDKがプローブデータを配信する際の認証用キー。APIキーの値
具体的なAPIキー(文字列)については営業窓口までお問い合わせください。
外部データプローブデータ収集SDKが、ユーザーアプリケーションから、APIを介して収集するプローブデータ。
ナビ情報、ルート設定情報、車両情報
ナビ情報ユーザーアプリケーションから、APIを介して収集する、ナビゲーションに関するの情報。外部データの一つ
ルート設定情報ユーザーアプリケーションから、APIを介して収集する、ルート設定に関する情報。外部データの一つ
車両情報ユーザーアプリケーションから、APIを介して収集する、車両に関する情報。外部データの一つ
内部データプローブデータ収集SDKが、モバイル端末から収集するプローブデータ。
FusedLocation、GNSS情報、加速度・ジャイロ情報、アクティビティ情報。
FusedLocationOS標準ライブラリで得られる補正後の位置情報。内部データの一つ
GNSS情報OS標準ライブラリで得られるGNSSの位置情報、衛星受信状態。内部データの一つ。
Androidのみ。iOSでは無し。
加速度・ジャイロ情報OS標準ライブラリで得られるモバイル端末の加速度・ジャイロ情報。内部データの一つ
アクティビティ情報OS標準ライブラリで得られるアクティビティ情報。内部データの一つ
ActivityStatusアクティビティ情報から、プローブデータ収集SDKの搭載アルゴリズムで判定したアクティビティ情報。内部データを基に生成したデータ
制御パラメータプローブデータ収集SDKの動作を設定するために制御用APIで設定されるパラメータ
UUIDUniversally Unique Identifier.
クラウドナビゲーションSDKパイオニア製のクラウド環境と連係動作するナビゲーションシステムのSDK
配信データ種別収集データをクラウドサーバへ配信する際に、配信するデータを指定するデータ種別
データリストプローブデータ収集SDKが、クラウドサーバに配信するプローブデータのリスト
Table.5.1 - 用語集

API Reference

API namedescriptionparameterparameter typereturn必須・任意補足
activateプローブデータ収集SDKの起動処理配信条件request:SdkUploadRequestSdkResult:
OK、ERROR、HAS_ACTIVATED、NOT_PERMITTED
必須認証パラメータ以外の変更には、
一度deactivateが必要
deactivateプローブデータ収集SDKの終了処理nonenoneSdkResult:
OK、ERROR、NOT_ACTIVATED
必須
updateKeyクラウドアクセス時に使用する
認証Key情報を設定・更新する
認証情報authKey:SdkAuthKeySdkResult:
OK、ERROR、NOT_ACTIVATED
任意認証パラメータがactivityで未指定の場合、
本APIで認証パラメータを設定する
checkHealthプローブデータ収集SDKの生存確認詳細フラグneedDetails:BOOLSdkHealthInfo:
SdkHealthInfo.statusCode=
    OK、ERROR、NOT_ACTIVATED
任意needDetail=true時に、
戻り値のSdkHealthInfoの全項目が有効値となる。
false時には、
SdkHealthInfo.statusCodeのみが有効値で、
他はnullとなる。
setVehicleId配信時に付帯する車両IDを設定する車両IDvehicleId:StringSdkResult:
OK、NOT_ACTIVATED、HAS_REGISTERED
任意vehicleIdが既設定時には、
HAS_REGISTEREDを返す

setContext
(Androidのみ)
コンテキストを設定するcontextcontext : Contextなし必須プローブデータ収集SDKのインスタンスの生成後、
かつactivateの前に、本API実行が必須。

requestLocationPermission
(iOSのみ)
位置情報の権限を取得するnonenoneSdkResult:
OK、NOT_PERMITTED
必須
requestActivityPermission
(iOSのみ)
アクティビティの権限を取得するnonenoneSdkResult:
OK、NOT_PERMITTED
必須
startBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を有効にする
nonenoneなし任意バックグラウンドでの位置情報更新を
有効にしたい場合は必須。

stopBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を無効にする
nonenoneなし任意
isBackgroundPositioning
(iOSのみ)
バックグラウンド実行時の
位置情報更新を確認する
nonenoneBoolean:
  True=有効、
  False=無効
任意
Table.6.1 - 制御用API一覧 (再掲)



IDAPI namedescriptionparameterparameter typereturn必須・任意補足
1addNaviInfo自車位置が更新された時に、
プローブデータ収集SDKに通知する
ナビ情報naviInfo: AppNaviInfoSdkResult:
OK、NOT_ACTIVATED
必須
2addRouteActionLogナビルート情報が更新された時に、
プローブデータ収集SDKに通知する
ナビルート情報routeActionLog: RouteActionLogSdkResult:
OK、NOT_ACTIVATED
必須
3setVehicleInfo車両情報を、
プローブデータ収集SDKに通知する
車両情報vehicleInfo: VehicleInfoSdkResult:
OK、NOT_ACTIVATED
任意
Table.6.2 - 収集用API一覧 (再掲)


名称:enum SdkResult説明:SDK動作結果備考
OK正常動作排他的に利用
ERROR下記以外のエラー動作排他的に利用
HAS_ACTIVATEDSDKが既にActivate済み排他的に利用
NOT_ACTIVATEDSDKがActivateされていない排他的に利用
NOT_PERMITTEDOSでの権限が不許可排他的に利用
HAS_REGISTERED値が既に設定済み排他的に利用
Table.6.3 - enum SdkResult (再掲)


名称:class SdkUploadRequest説明:配信条件備考省略可否
authKey: SdkAuthKey? = null認証方法に用いる文字列など省略可
vehicleId: String? = null車両ID省略可
url: String配信先のURL省略不可
uploadInterval: Int配信周期[秒]省略不可
uploadDataType: List<SdkUploadDataType>配信するデータ種別のList省略不可
Table.6.4 - class SdkUploadRequest (再掲)


名称:enum SdkAuthType説明:認証方法備考
TOKENTokenによる認証トークン方式は未使用
API_KEYAPI keyによる認証
Table.6.5 - enum SdkAuthType (再掲)


名称:class SdkAuthKey説明備考省略可否
type: SdkAuthType認証に用いるkeyの種別"API_KEY"のみ使用省略不可
value: String認証に用いるkeyの値省略不可
Table.6.6 - class SdkAuthKey (再掲)


名称:enum SdkUploadDataType説明:アップロードデータ種別備考
SENSOR_INFOセンサー情報 (下記のa,b,c,d全て)重複指定可
NAVI_INFOナビ情報重複指定可
ROUTE_ACTION_LOGルートアクションログ情報重複指定可
VEHICLE_INFO車両情報重複指定可
LOCATION_INFO補正後の位置情報 (a)重複指定可
GNSS_INFOGNSS位置情報・受信状況 (b)重複指定可
HW_SENSOR_INFO加速度・ジャイロ情報 (c)重複指定可
ACTIVITY_INFOアクティビティ情報 (d)重複指定可
Table.6.7 - enum SdkUploadDataType (再掲)


名称:class SdkHealthInfo説明:SDKの動作状況備考
statusCode : SdkResultSDK動作結果
uploadInterval : Int? = null配信周期[秒]needDetails=False時には、NULL
uploadDataType: List<SdkUploadDataType>? = null配信するデータ種別のListneedDetails=False時には、NULL
authKey: SdkAuthKey? = null認証に用いるkeyの種別とkeyの値needDetails=False時には、NULL
vehicleId: String? = null車両IDneedDetails=False時には、NULL
url : String? = null配信先のURLneedDetails=False時には、NULL
isUploading : Boolean? = null定期配信のON・OFFneedDetails=False時には、NULL
connectionStatus : Boolean? =null直前の配信の成功・失敗needDetails=False時には、NULL
sensorStatus : Boolean? = nullセンサ(加速度・ジャイロ)取得部の動作状態needDetails=False時には、NULL
fusionLocationStatus : Boolean? = nullfusionLocation取得部の動作状態needDetails=False時には、NULL
gnssStatus : Boolean? = nullGNSS取得部の動作状態
(Androidのみ有効)
needDetails=False時には、NULL
Table.6.8 - class SdkHealthInfo (再掲)




名称:class AppNaviInfo説明:ユーザーアプリケーションから受領するナビ情報省略可否備考
mmLat: Double[degree]マップマッチング緯度。世界測地系省略不可
mmLon: Double[degree]マップマッチング経度。世界測地系省略不可
speed: Double[m/s]走行速度省略不可
onRoad: Boolean路上フラグ
True:自車位置がオンロード
False:自車位置がオフロード
省略不可
dir: Double車両向き
[degree]
省略不可北0度 時計回り正
linkKind: Intリンク種別
0:Roundaboutリンク
1:本線(上下線非分離)リンク
2:本線(上下線分離)リンク
3:連結路(本線間の渡り線)リンク、
4:交差点内リンク
5:連結路(ランプ)リンク
6:本線と同一路線の側道
7:SA等測線リンク
省略不可無効値の場合-1
roadKind: Int道路種別
0:高速
1:都市高速
2:国道
3:主要地方道
4:県道
5:一般道路(幹線)
6:一般道路(その他)
7:導入路
8:細街路1
9:細街路2
10:フェリー航路
省略不可無効値の場合-1
insideTunnel: Booleanトンネルフラグ
True:トンネル内
False:トンネル外
省略不可
onHighway: Boolean高速道路フラグ
True:高速道路走行中
False:高速道路以外を走行中
省略不可
tollgateDist: Double? = null[m]現在位置から料金所までの道なり距離省略可
signalDist: Double? = null[m]現在位置から信号機までの道なり距離省略可
directDist: Double? = null[m]現在位置から案内地点までの道なり距離省略可
joinPointDist: Double? = null[m]現在位置から合流地点までの道なり距離省略可
destDist: Double? = null[m]現在位置から目的地までの道なり距離省略可
mapVer: String地図バージョン省略不可
setRoute: Booleanルート設定中フラグ。
True:ルートあり
False:ルートなし
省略不可
streetName: String道路名称省略不可
streetYomi: String道路名称ヨミデータ省略不可
linkId: Int現在走行中の道路のリンクID省略不可無効値の場合-1
guidePointId: Int? = null案内地点ID 直近案内地点のリンクID省略可
passPointId: Int通過地点ID 直近通過地点のリンクID省略不可
debug: String? = nullデバッグ情報省略可
forward: Booleanリンク順方向走行フラグ
True:リンク格納方向と同方向に走行中
False:リンク格納方向と異なる方向に走行中
省略不可
distToNode: Double[m]現在位置から前方ノードまでの道なり距離省略不可
linkLen: Double[m] リンク全長省略不可
tileId: Int自車位置のタイルID省略不可
startX: DoubleリンクIDの始点ノードのX座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
startY: DoubleリンクIDの始点ノードのY座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
endX: DoubleリンクIDの終点ノードのX座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
endY: DoubleリンクIDの終点ノードのY座標
(リンクIDの原点に対応した相対値で単位なし、0~1)
省略不可
Table.6.9 - class AppNaviInfo (再掲)



名称:class RouteActionLog説明:ユーザーアプリケーションから受領するナビルート情報省略可否備考
actionTime: Stringアクション発生時刻
UTC時刻(ISO 8601)
省略不可
actionType: Intアクション種別
0:不明
1:出発(案内開始)
2:出発(案内再開)
3:到着
4:新規探索
5:再探索
6:オートリルートまたはルートアドバイザーによるリルート
7:ルート削除
8:自宅探索(Androidのみ)
省略不可
pointInfo: List<PointInfo>POI情報配列のリスト。PointInfoを参照。省略不可
estToll: Int? = null推測される高速料金[円]省略可
fMbrToll: Int? = null無料会員ルートの高速料金[円]省略可
pMbrToll: Int? = null有料会員ルートの高速料金[(円]省略可
fMbrFuelCons: Double? = null無料会員基準ルートでのガソリン消費量
[L]、EVの場合は[kWh]
省略可
pMbrFuelCons: Double? = null有料会員基準ルートでのガソリン消費量
[L]、EVの場合は[kWh]
省略可
Table.6.10 - class RouteActionLog (再掲)



名称:class PointInfo説明:アプリから受領するナビルート情報に含まれるPOI情報省略可否備考
kind: Int地点種別
0:目的地
1:立ち寄り地
2:ルート始点
   (地点名称・地点ヨミは省略)
3:ルート削除地点
省略不可
index: Int地点番号
出発地を0とし、立ち寄る順で番号を付与する
省略不可
name: String? = null地点名称省略可
nameVoice: String? = null地点ヨミ。地点名の仮名表記省略可
lat: Double地点緯度[degree] 世界測地系省略不可
lon: Double地点経度[degree] 世界測地系省略不可
Table.6.11 - class PointInfo (再掲)



名称:class VehicleInfo説明:アプリから受領する車両情報省略可否備考
engType: Int0:「選択しない」/「不明」
1:「ガソリン車」
2:「ディーゼル車」
3:「LPG車」
4:「HV」
5:「PHEV」
6:「EV」
7:「FCEV」
省略不可
engModel: String車検証に記載の型式省略不可
classificationNum: String車検証に記載の類別区分番号省略不可
hasIdlingStop: booleanアイドリングストップ有無
True:有り
False:無し
省略不可EV時はFalse
engDisplacement: Int排気量[cc]省略不可EV時は-1
weight: Int車両重量[kg]省略不可
width: Int車幅[cm]省略不可
height: Int車高[cm]省略不可
maxLoadCapacity: Int最大積載量[kg]省略不可
actualLoadCapacity: Int実積載量[kg]省略不可
vehicleId: String車両ID
未使用の場合はを以下を指定
"00000000-0000-0000-0000-000000000000"
省略不可
evBatteryCapacity: DoubleEV最大電池量[kWh]省略不可
fuelCapacity: Doubleガソリンタンク量[L]省略不可
wltc: DoubleWLTC値[km/L]。EVの場合は [Wh/km]省略不可
Table.6.12 - class VehicleInfo (再掲)



Data List


ID説明データ型値[単位]必須/任意
1マップマッチング緯度double[degree]必須
2マップマッチング経度double[degree]必須
3速度double[m/s]走行速度必須
4路上フラグint0: 自車位置がオフロード、1: 自車位置がオンロード必須
5車両向きdouble[degree]必須
6リンク種別int0 Roundaboutリンク
1 本線(上下線非分離)リンク
2 本線(上下線分離)リンク
3 連結路(本線間の渡り線)リンク
4 交差点内リンク
5 連結路(ランプ)リンク
6 本線と同一路線の側道
7 SA等測線リンク
必須
7道路種別int0:高速
1:都市高速
2:国道
3:主要地方道
4:県道
5:一般道路(幹線)
6:一般道路(その他)
7:導入路
8:細街路1
9:細街路2
10:フェリー航路
任意
8トンネルフラグint0: トンネル外、1: トンネル内必須
9高速道路フラグint0: 高速道路以外を走行中、1: 高速道路走行中必須
10料金所までの距離double[m]現在位置から料金所までの道なり距離任意
11信号機までの距離double[m]現在位置から信号機までの道なり距離任意
12案内地点までの距離double[m]現在位置から案内地点までの道なり距離任意
13合流地点までの距離double[m]現在位置から合流地点までの道なり距離任意
14目的地までの距離double[m]現在位置から目的地までの道なり距離任意
15地図バージョンstring必須
16ルート設定フラグint0: ルートなし、1: ルートあり必須
17道路名称string必須
18道路名称ヨミデータstring必須
19リンクIDint現在走行中の道路のリンクID必須
20案内地点IDint直近案内地点のリンクID任意
21通過地点IDint直近通過地点のリンクID必須
22デバッグ情報string任意
23順方向走行フラグint0:リンク格納方向と異なる方向に走行中
1:リンク格納方向と同方向に走行中
必須
24前方ノードまでの距離double[m]現在位置から前方ノードまでの道なり距離必須
25リンク長double[m] リンク全長必須
26タイルIDint自車位置のタイルID必須
27リンクID始点ノードのX座標doubleタイル内の正規化座標必須
28リンクID始点ノードのY座標doubleタイル内の正規化座標必須
29リンクID終点ノードのX座標doubleタイル内の正規化座標必須
30リンクID終点ノードのY座標doubleタイル内の正規化座標必須
31積算走行距離double[m] SDK起動時点からの積算走行距離必須
32区間走行距離double[m] ルートありの間の積算走行距離。ルートなしの場合常に0必須
33前回レコードからの走行距離double[m]必須
34乗車中フラグint0:乗車中ではない、1:乗車中と判定必須
Table.6.13 - ナビ情報のデータリスト (再掲)



IDデータ種別データ型値 [単位]必須/任意
1アクション発生時刻stringUTC時刻 (ISO8601)必須
2アクション種別int0:不明
1:出発(案内開始)
2:出発(案内再開)
3:到着
4:新規探索
5:再探索
6:オートリルートまたはルートアドバイザーによるリルート
7:ルート削除
8:自宅探索(Androidのみ)
必須
3POI情報配列array出発地、目的地、立ち寄り地、等の配列(ID4~9を単位)必須
4   ├ 地点種別int0:目的地
1:立ち寄り地
2:ルート始点
   (POI情報配列は地点名称・ヨミは無し)
3:ルート削除地点
必須
5   ├ 地点番号int出発地を0とし、立ち寄る順で番号を付与する必須
6   ├ 地点名称string任意
7   ├ 地点ヨミstring地点名の仮名表記任意
8   ├ 地点緯度int[degree] 世界測地系必須
9   ├ 地点経度int[degree] 世界測地系必須
10推測される高速料金int[円]任意
11無料会員基準ルートでの高速料金int[円]任意
12有料会員基準ルートでの高速料金int[円]任意
13無料会員基準ルートでのガソリン消費量int[L]、EVの場合は[kWh]任意
14有料会員基準ルートでのガソリン消費量int[L]、EVの場合は[kWh]任意
Table.6.14 - ルートアクションログのデータリスト (再掲)




IDデータ種別データ型値 [単位]必須/任意
1エンジンタイプint0:「選択しない」/「不明」
1:「ガソリン車」
2:「ディーゼル車」
3:「LPG車」
4:「HV」
5:「PHEV」
6:「EV」
7:「FCEV」
必須
2型式string例:"ABC-AB1"必須
3類別区分番号string例:"0001"必須
4アイドリングストップ有無int0:無し、1:有り、EVの場合は項目自体無し任意
5排気量int[cc]、EVの場合は項目自体無し任意
6車両重量int[kg]必須
7車幅int[cm]必須
8車高int[cm]必須
9最大積載量int[kg]必須
10実積載量int[kg]必須
11車両IDstringUUID必須
12EV最大電池量double[kWh]必須
13ガソリンタンク量double[L]必須
14WLTC値double[km/L]、EVの場合は[Wh/km]必須
Table.6.15 - 車両情報のデータリスト (再掲)



IDデータ種別データ型値 [単位]必須/任意
1GNSS位置 緯度double[degree]必須
2GNSS位置 経度double[degree]必須
3GNSS方位double[degree] デバイスが移動している方向必須
4GNSS高度double[m]必須
5捕捉衛星数int必須
6測位使用衛星数int必須
7電波強度double[dBHz]必須
8GNSS有効int0:無効、1:有効必須
Table.6.16 - GNSS情報のデータリスト (Androidのみ) (再掲)



IDデータ種別データ型値 [単位]必須/任意
1補正後の位置 緯度double[degree]必須
2補正後の位置 経度double[degree]必須
3補正後の方位double[degree] デバイスが移動している方向必須
4補正後の高度double[m]必須
5補正後の速度double[m/s]必須
Table.6.17 - 補正済み位置情報のデータリスト (再掲)



IDデータ種別データ型値 [単位]必須/任意
1~3XYZ方向加速度double[m/s^2]、各xyz方向
座標系はOS依存
必須
4~6回転加速度double[rad/s]、各xyz軸の回転方向
座標系はOS依存
必須
Table.6.18 - 慣性センサ情報のデータリスト (再掲)



IDデータ種別データ型値 [単位]必須/任意
1ActivityStatusintSDKで判定したアクティビティ
0:動作不明
1:歩行中
2:乗車中
必須
2アクティビティ検知結果
(Activity)
intOS標準APIで取得したアクティビティ
取り得る値はOS依存
必須
3アクティビティ検知結果
(confidence)
intOS標準APIで取得したアクティビティの信頼度
取り得る値はOS依存
必須
Table.6.19 - アクティビティ情報のデータリスト (再掲)



IDデータ種別データ型値 [単位]必須/任意
1OS情報int0:不明
1:Android
2:iOS
81:iOSシミュレータ
必須
2OSバージョン情報stringOSバージョン情報必須
3ユーザー識別情報stringAndroid:ANDROID_ID(OSから取得)
iOS:UUID(OSから取得)
必須
Table.6.20 - システム情報のデータリスト (再掲)



License

プローブ収集SDKには以下のサードパーティのライブラリが組み込まれています。

[Android]
Koin
Room
Okhttp
Table.7.1 - OSSライブラリ (Android)


[iOS]
Swinject
GzipSwift
Table.7.2 - OSSライブラリ (iOS)


[Android]

Koin

Source: https://github.com/InsertKoinIO/koin

License

Koin:License
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright 2017-2023 Arnaud GIULIANI

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

Room

Source: https://github.com/androidx-releases/Room

License

Room:License
                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "{}"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright {yyyy} {name of copyright owner}

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.

Okhttp

Source: https://github.com/square/okhttp

License

Okhttp:License

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   APPENDIX: How to apply the Apache License to your work.

      To apply the Apache License to your work, attach the following
      boilerplate notice, with the fields enclosed by brackets "[]"
      replaced with your own identifying information. (Don't include
      the brackets!)  The text should be enclosed in the appropriate
      comment syntax for the file format. We also recommend that a
      file or class name and description of purpose be included on the
      same "printed page" as the copyright notice for easier
      identification within third-party archives.

   Copyright [yyyy] [name of copyright owner]

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


[iOS]

Swinject

Source: https://github.com/Swinject/Swinject

License

Swinject:License
The MIT License (MIT)

Copyright (c) 2015 Swinject Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

GzipSwift

Source: https://github.com/1024jp/GzipSwift

License

GzipSwift:License
The MIT License (MIT)

Copyright (c) 2014-2023 1024jp

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.