Usługa telemetrii udostępnia konfigurowalny rejestr wydawców jako dodatkowy sposób zbierania danych. Aplikacje i usługi mogą zarejestrować się w rejestrze jako wydawcy danych telemetrycznych, co z kolei udostępnia je usłudze telemetrii. Więcej informacji o typach obsługiwanych źródeł danych znajdziesz w artykule Źródła danych.
Biblioteka
Telemetria komunikuje się z wydawcami konfigurowalnego rejestru wydawców za pomocą interfejsu Binder. Zamiast ręcznie implementować interfejsy AIDL, zdecydowanie zalecamy korzystanie z eksperymentalnej biblioteki konfigurowalnego rejestru wydawców, która jest częścią naszego pakietu SDK telemetrii. Biblioteka ta abstrahuje interfejsy AIDL i udostępnia przejrzysty, bezpieczny typowo interfejs API do definiowania wydawców, publikowania danych telemetrycznych i zarządzania konwersją komunikatów protobuf na format przewodowy.
Więcej informacji o korzystaniu z biblioteki znajdziesz w artykule Konfigurowalny rejestr wydawców biblioteki.
Ręczna implementacja i rejestracja wydawcy
Jeśli nie chcesz korzystać z udostępnionej biblioteki, możesz ręcznie zaimplementować niezbędne interfejsy Binder. W kolejnych sekcjach znajdziesz omówienie czynności wymaganych do zaimplementowania wydawcy i zarejestrowania go w konfigurowalnym rejestrze wydawców.
Rejestracja
W przeciwieństwie do usług SDV, które mają metadane (np. strukturę wiadomości) zdefiniowane w VSIDL i dostępne dla systemu, wydawcy korzystający z konfigurowalnego rejestru wydawców muszą wyraźnie podać swoje metadane. Podczas rejestracji podajesz te metadane za pomocą obiektu PublisherInfo.
Rejestrujesz tych wydawców za pomocą interfejsu IConfigurablePublisherRegistry
AIDL. Dzięki temu możesz pisać wydawców w dowolnym języku obsługiwanym przez AIDL, w tym w języku Java, C++ i Rust. Interfejs udostępnia 2 metody:
Użyj metody
registerPublisher, aby zarejestrować nowego wydawcę w usłudze telemetrii:void registerPublisher(in PublisherInfo publisherInfo, in IConfigurablePublisher publisher)Użyj metody
unregisterPublisher, aby wyrejestrować wcześniej zarejestrowanego wydawcę z usługi telemetrii:void unregisterPublisher(in @utf8InCpp String serviceName)
Obiekt PublisherInfo określa podstawowe informacje o wydawcy:
| Pole | Opis |
|---|---|
serviceName |
Nazwa wydawcy zdefiniowana przez użytkownika. Użyj tej nazwy, aby odwoływać się do niej w konfiguracjach statystyk. |
fileDescriptorSet |
Zserializowany obiekt google.protobuf.FileDescriptorSet (więcej informacji znajdziesz w artykule Samoopisujące się wiadomości), który zawiera opis wiadomości (nazwany polem messageTypeName) publikowanej przez tego wydawcę oraz wszystkie niezbędne zależności. Usługa telemetrii używa opisu wiadomości do deserializacji danych wysyłanych przez wydawcę. Więcej informacji o generowaniu tego podczas kompilacji znajdziesz w artykule Narzędzie do generowania opisów protobuf w języku Java. |
messageTypeName |
Pełna nazwa komunikatów protobuf publikowanych przez wydawcę. Opis wiadomości musi być zadeklarowany w fileDescriptorSet. |
supportsGet |
Wskazuje, czy wydawca może udostępnić najnowszą wiadomość bez subskrybowania jej. |
Implementacja
Twój niestandardowy wydawca musi zaimplementować interfejs IConfigurablePublisher, udostępniając te metody:
Usługa telemetrii wywołuje metodę
createSubscription, aby zasubskrybować wydawcę, jeśliconnection_typeźródła danych dla tego wydawcy w konfiguracji statystyk jest ustawiony naSUBSCRIPTION. ArgumentISubscriberprzekazywany do wydawcy udostępnia metodęsendData(in byte[] data), której możesz użyć do przesyłania strumieniowego komunikatów protobuf do usługi telemetrii.IConfigurablePublisherSubscription createSubscription(in ISubscriber subscriber, in @nullable byte[] configuration)Usługa telemetrii wywołuje metodę
getLatestMessage, aby pobrać najnowszą wiadomość wydawcy, jeśliconnection_typeźródła danych dla tego wydawcy w konfiguracji statystyk jest ustawiony naON_DEMAND. Usługa telemetrii używa tej metody tylko wtedy, gdyPublisherInfowydawcy wskazujesupportsGet = true.@nullable byte[] getLatestMessage(in @nullable byte[] configuration)
Usługa telemetrii ustawia argument configuration na opcję configuration źródła danych w konfiguracji statystyk.