テレメトリー サービスは、データ収集の第 2 の手段として構成可能なパブリッシャー レジストリを提供します。アプリケーションとサービスは、レジストリにテレメトリー パブリッシャーとして登録できます。これにより、テレメトリー サービスで使用できるようになります。サポートされているデータソースの種類について詳しくは、データソースをご覧ください。
ライブラリ
テレメトリーは、Binder を介して Configurable Publisher Registry パブリッシャーと通信します。AIDL インターフェースを手動で実装する代わりに、テレメトリー SDK の一部である試験運用版の Configurable Publisher Registry ライブラリを使用することを強くおすすめします。このライブラリは AIDL インターフェースを抽象化し、パブリッシャーの定義、テレメトリー データの公開、protobuf メッセージのワイヤー形式への変換の管理を行うための、クリーンで型安全な API を提供します。
ライブラリの使用方法について詳しくは、構成可能なパブリッシャー レジストリ ライブラリをご覧ください。
ニュース メディアの手動実装と登録
提供されたライブラリを使用しない場合は、必要な Binder インターフェースを手動で実装できます。以降のセクションでは、パブリッシャーを実装して構成可能なパブリッシャー レジストリに登録するために必要な手順の概要について説明します。
登録
メッセージ構造などのメタデータが VSIDL で定義され、システムで使用できる SDV サービスとは異なり、Configurable Publisher Registry を使用するパブリッシャーはメタデータを明示的に提供する必要があります。このメタデータは、登録時に PublisherInfo オブジェクトを介して提供します。
これらのパブリッシャーは、IConfigurablePublisherRegistry
AIDL インターフェースを使用して登録します。そのため、パブリッシャーは、Java、C++、Rust など、AIDL がサポートする任意の言語で記述できます。このインターフェースには、次の 2 つのメソッドがあります。
新しいパブリッシャーを Telemetry サービスに登録するには、
registerPublisherメソッドを使用します。void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)unregisterPublisherメソッドを使用して、以前に登録したパブリッシャーをテレメトリー サービスから登録解除します。void unregisterPublisher(in @utf8InCpp String serviceName)
PublisherInfo オブジェクトは、パブリッシャーの基本情報を指定します。
| フィールド | 説明 |
|---|---|
serviceName |
パブリッシャーのユーザー定義名。この名前を使用して、指標構成から参照します。 |
fileDescriptorSet |
このパブリッシャーが公開するメッセージのメッセージ記述子(messageTypeName フィールドで指定)と、その必要な依存関係をすべて含むシリアル化された google.protobuf.FileDescriptorSet(詳細については、自己記述型メッセージをご覧ください)。テレメトリー サービスは、メッセージ記述子を使用して、パブリッシャーから送信されたデータを逆シリアル化します。ビルド時にこれを生成する方法については、Java protobuf 記述子ジェネレータ ツールをご覧ください。 |
messageTypeName |
パブリッシャーが公開する protobuf メッセージの完全名。このメッセージのメッセージ記述子は fileDescriptorSet で宣言する必要があります。 |
supportsGet |
パブリッシャーが最新のメッセージを購読せずに提供できるかどうかを示します。 |
実装
カスタム パブリッシャーは、次のメソッドを提供して IConfigurablePublisher インターフェースを実装する必要があります。
指標構成でこのパブリッシャーのデータソースの
connection_typeがSUBSCRIPTIONに設定されている場合、テレメトリー サービスはcreateSubscriptionを呼び出してパブリッシャーをサブスクライブします。パブリッシャーに渡されるISubscriber引数はsendData(in byte[] data)メソッドを提供します。このメソッドを使用して、protobuf メッセージをテレメトリー サービスにストリーミングできます。IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)指標構成でこのパブリッシャーのデータソースの
connection_typeがON_DEMANDに設定されている場合、テレメトリー サービスはgetLatestMessageを呼び出してパブリッシャーの最新のメッセージを取得します。テレメトリー サービスはこのメソッドを、パブリッシャーのPublisherInfoがsupportsGet = trueを示している場合にのみ使用します。@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
テレメトリー サービスは、指標構成のデータソースの configuration オプションに configuration 引数を設定します。