Implementacja sterowania radiowego opiera się na MediaSession
i
MediaBrowse
, które włączają aplikacjom Asystenta głosowego i multimediów,
sterować radiem. Więcej informacji:
Tworzenie aplikacji do multimediów dla samochodów na developer.android.com
Implementacja drzewa przeglądania multimediów jest zapewniana przez funkcję obsługi samochodu-broadcastradio-
biblioteka w usłudze packages/apps/Car/libs
. Ta biblioteka zawiera również rozszerzenia:
Element ProgramSelector do konwersji na i z URI. Zaleca się, aby reklamy radiowe
za pomocą tej biblioteki do utworzenia powiązanego drzewa przeglądania.
Przełącznik źródła multimediów
Aby umożliwić płynne przejście między radiem a innymi aplikacjami wyświetlanymi w multimediach,
biblioteka car-media-common zawiera klasy, które powinny być zintegrowane z radiem.
. MediaAppSelectorWidget
można umieścić w pliku XML w przypadku aplikacji radiowej
(ikona i menu używane w referencyjnej aplikacji multimedialnej i radiowej):
<com.android.car.media.common.MediaAppSelectorWidget android:id="@+id/app_switch_container" android:layout_width="@dimen/app_switch_widget_width" android:layout_height="wrap_content" android:background="@drawable/app_item_background" android:gravity="center" />
Ten widżet uruchamia interfejs AppSelectionFragment
, który wyświetla
Lista źródeł multimediów, na które można się przełączyć. Jeśli chcesz mieć interfejs inny niż ten,
możesz utworzyć niestandardowy widżet, który będzie uruchamiać aplikację AppSelectionFragment
, gdy
powinien wyświetlić się przełącznik.
AppSelectionFragment newFragment = AppSelectionFragment.create(widget, packageName, fullScreen); newFragment.show(mActivity.getSupportFragmentManager(), null);
Przykładowa implementacja jest podana w referencyjnej implementacji aplikacji radiowej,
w lokalizacji: packages/apps/Car/Radio
.
Szczegółowe specyfikacje dotyczące sterowania
MediaSession
(przez MediaSession.Callback
)
interfejs zawiera mechanizmy sterowania aktualnie odtwarzanym programem radiowym:
onPlay
,onStop
. (Wyłącz) wyciszenie odtwarzania radia.onPause
Wstrzymanie z przesunięciem w czasie (jeśli jest obsługiwane).onPlayFromMediaId
Odtwarzaj dowolne treści z folderu najwyższego poziomu. Na przykład „Włącz FM”. lub „Włącz radio”.onPlayFromUri
Włącz konkretną częstotliwość. Na przykład „Włącz 88,5 FM”.onSkipToNext
,onSkipToPrevious
. Dostrój do następnego lub poprzedniego .onSetRating
dodawać do ulubionych lub usuwać je z ulubionych;
Przeglądarka Media Browser udostępnia MediaItem w 3 typach katalogów najwyższego poziomu:
- (Opcjonalnie) Programy (stacje). Ten tryb jest zwykle używany przez z podwójnym tunerem do wskazywania wszystkich dostępnych stacji radiowych w lokalizacji użytkownika, które można dostroić.
- Ulubione. Programy radiowe dodane do listy Ulubione, niektóre z nich niedostępny (poza zasięgiem odbioru).
- Kanały pasma. Wszystkie fizycznie dostępne kanały w obecnym regionie (87.9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1 i tak dalej). Każde pasmo ma oddzielny katalog najwyższego poziomu.
Każdy element w każdym z tych folderów (AM/FM/Programs) to element MediaItem z identyfikatorem URI, którego można użyć za pomocą MediaSession, Każdy folder najwyższego poziomu (AM/FM/Programs) to element MediaItem z identyfikatorem mediaId, mogą być używane razem z MediaSession do aktywowania odtwarzania. Decyzja należy do producenta OEM. Dla: na przykład „Włącz FM”, „Włącz AM”, i „Włącz radio” to niekonkretne zapytania radiowe, w których użyto mediaId do wysłania do aplikacji radiowej OEM. To aplikacja radiowa określa, co chcesz odtworzyć i mediaId.
Sesja Media
Nie ma koncepcji wstrzymywania transmisji, działania odtwarzania, wstrzymania i zatrzymania. nie zawsze dotyczą radia. W przypadku radia zatrzymanie dotyczy wyciszenia transmisji a Google Play jest powiązane z usunięciem wyciszenia.
Niektóre tunery (lub aplikacje) umożliwiają symulowanie wstrzymywania transmisji przez
buforowanie treści i odtwarzanie ich później. W takich przypadkach należy użyć onPause
.
Odtwarzanie z działań mediaId i identyfikatora URI ma na celu dostrajanie do stacji pobrane z interfejsu Media Browser. Identyfikator mediaId jest dowolnym ciągiem znaków. udostępniane przez aplikację radiową w celu nałożenia unikalnego (np. dany identyfikator wskazuje tylko jeden element) i stały (czyli mieć ten sam identyfikator przez całą sesję) jako wartość, z którą do zidentyfikowania konkretnej stacji. Identyfikator URI musi mieć dobrze zdefiniowany schemat. Krótko mówiąc, identyfikator URI jest to swego rodzaju ProgramSelector. Pozwala to zachować atrybut równości, ale nie musi być stabilna, ale może się zmienić, gdy stacja zmieni częstotliwość.
Z założenia interfejs onPlayFromSearch
nie jest używany. To jest obowiązkiem klienta
(aplikacja towarzysząca), aby wybrać wynik wyszukiwania z drzewa Media Browser. Ruchoma
że odpowiedzialność za tę aplikację radiową komplikuje proces, wymaga zawarcia formalnych umów
powinny pojawiać się w zapytaniach w postaci ciągów znaków, co może powodować nierównomierne korzystanie z różnych urządzeń
platform.
Uwaga: aplikacja radiowa nie zawiera dodatkowych informacje przydatne przy wyszukiwaniu nazwy stacji, która nie jest widoczna dla klienta za pomocą interfejsu Media Browser.
Przejście do następnej lub poprzedniej stacji zależy od bieżącego kontekstu:
- Gdy aplikacja zostanie dostrojona do stacji z listy Ulubione, może przejść do następnej stacji z listy Ulubione.
- Posłuchanie stacji z listy programów może spowodować dostrojenie do następnej dostępnych stacji, posortowanych według numeru kanału.
- Posłuchanie dowolnego kanału może skutkować przejściem na następny kanał fizyczny, nawet gdy nie ma sygnału.
Te działania wykonuje aplikacja radiowa.
Obsługa błędów
TransportControls
działania (Odtwórz, Zatrzymaj i Dalej) nie informują, czy dane działanie
czy nie powiedzie się. Jedynym sposobem na wskazanie błędu jest ustawienie parametru MediaSession
stan na
STATE_ERROR
z komunikatem o błędzie.
Aplikacja radiowa musi obsługiwać te działania i albo je wykonywać, albo ustawiać stan błędu.
Jeśli polecenie odtwarzania nie jest wykonywane natychmiast, stan odtwarzania powinien zostać zmieniony na
STATE_CONNECTING
(w przypadku dostrajania bezpośredniego) lub
STATE_SKIPPING_TO_PREVIOUS
lub
NEXT
w trakcie wykonywania polecenia.
Klient powinien obejrzeć:
PlaybackState
i sprawdź, czy sesja zmieniła bieżący program na ten, o który prosiliśmy lub wpisano.
. Wartość STATE_CONNECTING
nie może przekraczać 30 s. Jednak bezpośrednie melodię
Częstotliwość AM/FM powinna działać znacznie szybciej.
Dodawanie i usuwanie ulubionych
Funkcja MediaSession obsługuje oceny, której można używać do sterowania ulubionymi. onSetRating
wywołana z oceną typu
RATING_HEART
dodaje aktualnie dostrojoną stację do Ulubionych lub ją z niej usuwa.
W przeciwieństwie do starszych gotowych ustawień w tym modelu założono nieuporządkowane i niepowiązane ulubione
kiedy każde zapisane ulubione miejsce zostało przypisane do numeru liczbowego (zwykle od 1 do 6).
W efekcie systemy oparte na gotowych ustawieniach byłyby niezgodne z zasadą onSetRating
.
.
Ograniczenie interfejsu MediaSession API polega na tym, że obecnie nastrojowana jest tylko stacja co można dodać lub usunąć. Na przykład elementy należy najpierw wybrać, zanim zostaną można usunąć. Jest to jedynie ograniczenie klienta Media Browser, takie jak aplikacji towarzyszącej. Aplikacja radiowa nie jest w podobny sposób ograniczona. Ta część jest opcjonalna gdy aplikacja nie obsługuje Ulubionych.
MediaBrowser
Określanie częstotliwości lub nazw kanałów fizycznych (podczas dostrajania do dowolnego kanału odpowiedniego dla danej technologii radiowej) są odpowiednie dla w danym regionie, dla każdego pasma podane są wszystkie prawidłowe kanały (częstotliwości). W regionie Stanów Zjednoczonych jest to 101 kanałów FM z zakresu od 87, 8 do Zakres 108,0 MHz (z odstępem 0,2 MHz) i kanały 117 AM w zakresie 530 MHz do 1700 kHz (z odstępami 10 kHz). Ponieważ radio HD wykorzystuje tę samą przestrzeń kanału, nie jest przedstawiany oddzielnie.
Lista obecnie dostępnych programów radiowych jest płaska, ponieważ niedozwolone są schematy wyświetlania, np. grupowanie według zespołu bezpośredniej transmisji audio (DAB).
Wpisy na liście ulubionych mogą nie być możliwe do strojenia. Jeśli na przykład określony Program znajduje się poza zakresem. Aplikacja radiowa może, ale nie musi, wykryć wpis można wcześniej nastroić. Jeśli tak się stanie, może nie oznaczyć wpisu jako możliwego do odtworzenia.
Do identyfikowania folderów najwyższego poziomu stosowany jest ten sam mechanizm, który jest używany przez Bluetooth.
Oznacza to, że pakiet dodatków to
MediaDescription
zawiera pole dotyczące tunera, tak samo jak Bluetooth w
EXTRA_BT_FOLDER_TYPE
.
W przypadku radia radiowego oznacza to zdefiniowanie następujących nowych pól w sekcji
publiczny interfejs API:
EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE"
Jeden tych wartości:BCRADIO_FOLDER_TYPE_PROGRAMS = 1
Aktualnie dostępne programy.BCRADIO_FOLDER_TYPE_FAVORITES = 2
Ulubione.BCRADIO_FOLDER_TYPE_BAND = 3
Wszystkie kanały fizyczne danego zespołu.
Nie ma potrzeby definiowania żadnych niestandardowych pól metadanych, odpowiednie dane pasują do istniejącego schematu
MediaBrowser.MediaItem
:- Nazwa programu (RDS PS, nazwa usługi DAB).
MediaDescription.getTitle
. - Częstotliwość FM URI (patrz
ProgramSelector) lub
MediaDescription.getTitle
(jeśli wpis znajduje się w folderzeBROADCASTRADIO_FOLDER_TYPE_BAND
). - Identyfikatory radiowe (RDS PI, DAB SId).
MediaDescription.getMediaUri
przeanalizowano jako ProgramSelector.
Zwykle nie ma potrzeby pobierania częstotliwości FM dla wpisu na karcie bieżący program lub lista Ulubionych (ponieważ klient powinien działać na multimediach identyfikatory). Gdyby jednak zaistniała taka potrzeba (na przykład w celach związanych z wyświetlaniem), zawarty w identyfikatorze URI i można go przeanalizować jako
ProgramSelector
. Nie zalecamy jednak używania identyfikatora URI do wybierania elementów w bieżącym . Więcej informacji:ProgramSelector
Aby uniknąć problemów z wydajnością lub sposobami tworzenia plików, usługa Media Browser musi obsługiwać podział na strony:
EXTRA_PAGE
EXTRA_PAGE_SIZE
- Dodatkowe parametry parametru
subscribe()
Uwaga: domyślnie podział na strony jest wdrożony
onLoadChildren()
wersji bez obsługi opcji.Powiązane pozycje ze wszystkich typów list (nieprzetworzone kanały, znalezione programy ulubione) mogą mieć różne identyfikatory mediaId (zależy od aplikacji radiowej; obsługa będą działać inaczej). Identyfikatory URI (w postaci ProgramSelector) różnią się między kanałami nieprzetworzonymi a programami występującymi w większości przypadków (z wyjątkiem FM) bez RDS), ale zasadniczo są takie same w przypadku znalezionych programów i ulubionych (z wyjątkiem np. podczas aktualizowania AF).
Stosowanie różnych identyfikatorów mediaId dla wpisów z różnych typów list sprawia, możesz podejmować różne działania. Możesz przeglądać zarówno listę Ulubione, listy Wszystkie programy na
onSkipToNext
, w zależności od folderu wybranoMediaItem
(zobacz MediaSession).Specjalne działania dostrajania
Lista programów umożliwia użytkownikom dostrajanie do określonej stacji, ale nie umożliwia użytkownikom ogólne żądania, takie jak „Dostrój do FM”, które mogą spowodować słuchał(a) stacji na paśmie FM.
Aby umożliwić obsługę takich działań, niektóre katalogi najwyższego poziomu zawierają atrybut
FLAG_PLAYABLE
ustawiona flaga (wraz zFLAG_BROWSABLE
w przypadku folderów).Działanie Dostraja do Jak wystawić Włącz radio Dowolny kanał radiowy startService(ACTION_PLAY_BROADCASTRADIO)
LUB,
playFromMediaId(MediaBrowser.getRoot())
Włącz radio Dowolny kanał FM Włącz utwór mediaId
z pasma FM.To, do którego programu chcesz dotrzeć, należy do aplikacji. To jest zazwyczaj osoby, które ostatnio były odtwarzane na kanale z danej listy. Więcej informacji:
ACTION_PLAY_BROADCASTRADIO
, zobacz Ogólne intencje związane z Google Play.Wykrywanie i połączenie z usługą
PackageManager
może bezpośrednio znaleźć usługę Media BrowserService obsługującą transmitowanie radiowe drzewo. Aby to zrobić, zadzwoń pod numerresolveService
z intencjąACTION_PLAY_BROADCASTRADIO
(zobacz ogólne intencje związane z Google Play) oraz FlagaMATCH_SYSTEM_ONLY
. Aby znaleźć wszystkie usługi obsługujące radio (na może być więcej niż jeden; np. oddzielne radio AM/FM i satelitarne), użyjqueryIntentServices
Rozwiązana usługa obsługuje powiązanie
android.media.browse.MediaBrowserService
również do Twoich intencji. Ta informacja jest weryfikowana przez GTS.Aby połączyć się z wybraną usługą Media BrowserService, utwórz
MediaBrowser
dla danego komponentu usługi iconnect
. Po nawiązaniu połączenia nick dla MediaSession można uzyskać za pomocągetSessionToken
Aplikacja Radio może ograniczać pakiety klienta, które mogą łączyć się w
onGetRoot
wdrożenia ich usług. Aplikacja powinna zezwalać aplikacjom systemowym na łączenie się bez dodawania do białej listy. Szczegółowe informacje o dodawaniu do białej listy znajdziesz tutaj: Zaakceptuj pakiet aplikacji Asystent i podpis.Jeśli aplikacja źródłowa (na przykład aplikacja radiowa) jest zainstalowana w bez obsługi takiego źródła, reklamuje się jako obsługę intencję
ACTION_PLAY_BROADCASTRADIO
, ale jej drzewo Media Browser nie może zawierać tagów związanych z opcjami radiowymi. Dlatego klient chce sprawdzić, czy dany źródło jest dostępne na urządzeniu, musi:- Znajdź usługę radiową (zadzwoń pod
resolveService
,ACTION_PLAY_BROADCASTRADIO
). - Utwórz urządzenie
MediaBrowser
i połącz się z nim. - Sprawdzaj obecność obiektu
MediaItem
za pomocąEXTRA_BCRADIO_FOLDER_TYPE
dodatkowe.
Uwaga: w większości przypadków klient musi przeskanować wszystkie drzewa Media Browser umożliwiają wykrycie wszystkich dostępnych źródeł dla danego urządzenia.
Nazwy opasek
Lista pasm jest reprezentowana przez zbiór katalogów najwyższego poziomu o typie folderu ustawiono na
BCRADIO_FOLDER_TYPE_BAND
.MediaItem
tego użytkownika to zlokalizowane ciągi znaków reprezentujące nazwy zespołów. W większości przypadków będzie to jak tłumaczenie na angielski, ale klient nie może polegać na tym założeniu.Aby zapewnić stabilny mechanizm wyszukiwania określonych pasm, dodano dodatkowy tag do folderów na pasek,
EXTRA_BCRADIO_BAND_NAME_EN
. To jest niezlokalizowana nazwa pasma i może przyjmować tylko jedną z wcześniej zdefiniowanych wartości:AM
FM
DAB
Jeśli opaski nie ma na tej liście, oznacza to, że nie należy ustawiać plakietki. Jeśli jednak opaska jest na liście, musi mieć ustawiony tag. Radio HD nie Wymieć osobne pasma, ponieważ korzystają z tego samego podstawowego medium co AM/FM.
Ogólne intencje związane z odtwarzaniem
Każda aplikacja przeznaczona do odtwarzania danego źródła (np. radio czy CD) musi obsługiwać ogólna intencja play umożliwiająca rozpoczęcie odtwarzania niektórych treści, prawdopodobnie od stan nieaktywny (np. po uruchomieniu urządzenia). To, jak aplikacja dobierze treści, ale zwykle jest to ostatnio odtwarzany program radiowy lub utwór na płycie CD. zdefiniowaną intencję dla każdego źródła dźwięku:
android.car.intent.action.PLAY_BROADCASTRADIO
android.car.intent.action.PLAY_AUDIOCD
: CD-DA lub CD-Textandroid.car.intent.action.PLAY_DATADISC
: polubienie dysku danych optycznych CD/DVD, ale nie CD-DA (może to być dysk CD/DVD w trybie mieszanym)android.car.intent.action.PLAY_AUX
: bez określenia, które Port AUXandroid.car.intent.action.PLAY_BLUETOOTH
android.car.intent.action.PLAY_USB
: bez określenia, które Urządzenie USBandroid.car.intent.action.PLAY_LOCAL
: lokalna pamięć masowa (wbudowana lampa błyskowa)
Wybraliśmy intencje jako ogólne polecenia w Google Play, ponieważ rozwiązują 2 problemy jednocześnie: ogólne polecenie odtwarzania i odkrywanie usług. Dodatkową korzyścią z takiego zamiaru jest możliwość realizacji takich proste czynności bez otwierania sesji Media Browser.
Wykrywanie usług jest ważniejszym problemem rozwiązywanym przez te intencji. Procedura wykrywania usług jest prosta i jednoznaczna (zobacz Wykrywanie i połączenie z usługą).
Aby uprościć implementacje klienckie, istnieje alternatywny sposób Wydanie takiego polecenia Play (które też musi być zaimplementowane przez aplikację radiową): wydając
playFromMediaId
z identyfikatorem głównym węzła (używanym jako mediaId). Natomiast węzeł główny nie jest przeznaczony do odtwarzania, jego identyfikator główny jest dowolnym ciągiem znaków który może być wykorzystywany jako mediaId. Klienci nie są jednak wymagani żeby zrozumieć ten niuans.Selektor programu
mediaId
wystarczy, aby wybrać kanał zMediaBrowserService
, zostanie powiązany z sesją i nie będzie spójny między dostawcami. W niektórych przypadkach klient może potrzebować wskaźnika bezwzględnego (np. częstotliwość bezwzględna), aby utrzymać ją między sesjami i urządzeniami.W erze cyfrowej audycji radiowej sama częstotliwość nie wystarczy, nastroić konkretną stację. Dlatego użyj usługi
ProgramSelector
, aby dostroić na kanał analogowy lub cyfrowy. PoleProgramSelector
składa się z 2 części:- Identyfikator główny. Niepowtarzalny, niezmienny identyfikator danego radia. stacji, która się nie zmienia, ale może nie wystarczyć, żeby ją nastroić. Przykład: Kod PI RDS, który może być przetłumaczony na znak wywoławczy w Stanach Zjednoczonych.
- Identyfikatory dodatkowe. Dodatkowe identyfikatory przydatne do dostrajania tej stacji (np. częstotliwości). Mogą to być identyfikatory od innych technologiami radiowymi. Na przykład stacja DAB może mieć opcję zastępczą transmisji analogowej.
Aby umożliwić zgodność
ProgramSelector
ze standardemMediaBrowser
- lub rozwiązania opartego naMediaSession
, zdefiniuj schemat identyfikatora URI, aby go zserializować. Schemat to zdefiniowane w następujący sposób:broadcastradio://program/<primary ID type>/<primary ID>? <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
W tym przykładzie dodatkową część Identyfikatorów (po znaku zapytania (
?
)) to opcjonalnie i można je usunąć, by stworzyć stały identyfikator do użycia jakomediaId
. Na przykład:broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=88500&AMFM_FREQUENCY=103300
broadcastradio://program/AMFM_FREQUENCY/102100
broadcastradio://program/DAB_SID_EXT/14895264?RDS_PI=1234
Władze (inaczej host) domeny
program
zapewniają pewne miejsce o uwzględnianiu schematu konwersji w przyszłości. Ciągi znaków typu identyfikatora są dokładnie określone jak ich nazwy w definicji HAL 2.x elementuIdentifierType
oraz wartości format jest liczbą dziesiętną lub szesnastkową (z prefiksem0x
).Wszystkie identyfikatory danego dostawcy są oznaczone symbolem
VENDOR_
. . na przykładVENDOR_0
w przypadku tekstuVENDOR_START
iVENDOR_1
zaVENDOR_START
plus 1. Takie identyfikatory URI dotyczą specyficzne dla sprzęt radiowy, na którym zostały wygenerowane, i nie można go przenosić między urządzeniami. przez różnych producentów OEM.Te identyfikatory URI muszą być przypisane do każdego elementu MediaItem w ramach opcji najwyższego poziomu foldery. Dodatkowo MediaSession musi obsługiwać zarówno
playFromMediaId
, iplayFromUri
. Identyfikator URI jest jednak przeznaczony głównie do komunikacji radiowej. wyodrębnianie metadanych (np. częstotliwości FM) i pamięci trwałej; Brak zagwarantowanie, że identyfikator URI będzie dostępny dla wszystkich elementów multimedialnych (na przykład gdy główny typ identyfikatora nie jest jeszcze obsługiwany przez platformę). Identyfikator mediów zawsze działa. Nie zalecamy korzystania z identyfikatora URI przy wyborze elementów w bieżącej sesji Media Browser. W zamian użyjplayFromMediaId
. Jednak jest to nie jest opcjonalne w przypadku aplikacji obsługującej udostępnianie, a brakujące identyfikatory URI są zarezerwowane tylko w uzasadnionych przypadkach.Początkowy projekt zawierał 1 dwukropek zamiast sekwencji
://
po części schematu. pierwszy z nich nie jest jednak obsługiwany przezandroid.net.Uri
w przypadku bezwzględnych hierarchicznych odwołań do identyfikatora URI.Inne typy źródeł
W podobny sposób można też traktować inne źródła dźwięku. Na przykład pomocnicze wejście i odtwarzacz audio CD.
Pojedyncza aplikacja może korzystać z wielu typów źródeł. W takich przypadkach zaleca się utworzenie osobnego obiektu Media BrowserService dla dla każdego typu źródła. Nawet w konfiguracji z wieloma udostępnianymi źródłami/Media BrowserServices, zdecydowanie zalecamy, aby w ramach pojedynczej sesji MediaSession .
Płyta audio CD
Podobnie jak w przypadku Audio CD, aplikacja obsługująca takie dyski udostępnic Media Browser, pojedynczy wpis możliwy do przeglądania (lub więcej, jeśli system zmieniarkę płyt CD), która z kolei zawiera wszystkie utwory z danego dysku CD. Jeśli system nie dysponuje wiedzą o utworach z każdego dysku CD (np. gdy wszystkie dyski są wkładane do wkładu naraz i nie odczytują ich wszystkich), a potem Wartość MediaItem dla całego dysku wynosiłaby tylko
PLAYABLE
, a nieBROWSABLE
plusPLAYABLE
. Jeśli w w danym boksie element nie będziePLAYABLE
aniBROWSABLE
(ale każdy boks musi być zawsze widoczny w drzewie).Te wpisy byłyby oznaczane w sposób podobny do rozpowszechniania folderów radiowych. to: zawierają dodatkowe pola zdefiniowane w interfejsie MediaDescription API:
EXTRA_CD_TRACK
: za każdeMediaItem
na karcie Audio CD, Numer utworu od 1.EXTRA_CD_DISK
: numer dysku składający się z 1 numeru.
W przypadku systemu z włączoną obsługą CD-Text i zgodnego dysku użycie MediaItem poziomu najwyższego poziomu muszą zawierać tytuł dysku. Podobnie obiekt MediaItems dla utworów miałby tag tytułu utworu.
Pomocnicze wejście
Aplikacja udostępniająca dodatkowe dane wejściowe udostępnia drzewo Media Browser z jednym wpisem (lub więcej, gdy istnieje wiele portów) reprezentującego interfejs AUX w porcie. Odpowiednia sesja MediaSession pobiera mediaId i przejście na to źródło po otrzymaniu żądania
playFromMediaId
.Każdy wpis AUX MediaItem będzie miał dodatkowe pole.
EXTRA_AUX_PORT_NAME
ma niezlokalizowaną nazwę portu bez funkcji AUX do wyrażenia. Na przykład „AUX 1” zostałaby ustawiona na „1”, „AUX z przodu” do „przodu” i „AUX” na pusty ciąg znaków. W innych językach nazwa pozostanie taki sam angielski ciąg. Raczej mało prawdopodobne, jakEXTRA_BCRADIO_BAND_NAME_EN
, wartości są zdefiniowane przez OEM i nie są jest ograniczona do wstępnie zdefiniowanej listy.Jeśli sprzęt może wykrywać urządzenia podłączone do portu AUX, powinien oznaczyć MediaItem jako
PLAYABLE
, tylko wtedy, gdy podłączone jest wejście. Sprzęt powinien będą nadal wyliczane (ale niePLAYABLE
), jeśli nic nie było związane z tym portu. Jeśli sprzęt nie ma takiej możliwości, element MediaItem musi zawsze mieć wartośćPLAYABLE
Dodatkowe pola
Zdefiniuj te pola:
EXTRA_CD_TRACK = "android.media.extra.CD_TRACK"
EXTRA_CD_DISK = "android.media.extra.CD_DISK"
EXTRA_AUX_PORT_NAME = "android.media.extra.AUX_PORT_NAME"
Klient musi sprawdzić MediaItems najwyższego poziomu pod kątem elementów z atrybutem
EXTRA_CD_DISK
lubEXTRA_AUX_PORT_NAME
dodatkowe pole ustawiony.Szczegółowe przykłady
W poniższych przykładach opisano strukturę drzewa Media Browser w przypadku typów źródeł, które który jest częścią tego projektu.
Usługa Media BrowserService (uchwyty
ACTION_PLAY_BROADCASTRADIO
):- Stacje (możliwe do przeglądania)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
- Identyfikator URI BBC One (z możliwością odtworzenia):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
- Identyfikator URI ABC 88.1 (z możliwością odtworzenia):
broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
- Identyfikator URI ABC 88.1 HD1 (z możliwością odtworzenia):
broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
- Identyfikator URI ABC 88.1 HD2 (z możliwością odtworzenia):
broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
- 90,5 FM (odtwarzane) – FM bez RDSURI:
broadcastradio://program/AMFM_FREQUENCY/90500
- Identyfikator URI 620:00 (z możliwością odtworzenia):
broadcastradio://program/AMFM_FREQUENCY/620
- Identyfikator URI BBC One (z możliwością odtworzenia):
broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
- Identyfikator URI BBC One (z możliwością odtworzenia):
- Ulubione (możliwe do przeglądania i odtwarzania)
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
- Identyfikator URI BBC One (z możliwością odtworzenia):
broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
- BBC Two (nie można odtworzyć) URI:
broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
- Identyfikator URI BBC One (z możliwością odtworzenia):
- AM (można przeglądać i odtwarzać):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
- Identyfikator URI 530:00 (z możliwością odtworzenia):
broadcastradio://program/AMFM_FREQUENCY/530
- Identyfikator URI 540:00 (z możliwością odtworzenia):
broadcastradio://program/AMFM_FREQUENCY/540
- Identyfikator URI 550:00 (z możliwością odtworzenia):
broadcastradio://program/AMFM_FREQUENCY/550
- Identyfikator URI 530:00 (z możliwością odtworzenia):
- FM (możliwość przeglądania i odtwarzania):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
- Identyfikator URI 87,7 FM (z możliwością odtwarzania):
broadcastradio://program/AMFM_FREQUENCY/87700
- Identyfikator URI 87,9 FM (z możliwością odtwarzania):
broadcastradio://program/AMFM_FREQUENCY/87900
- Identyfikator URI 88.1 FM (z możliwością odtwarzania):
broadcastradio://program/AMFM_FREQUENCY/88100
- Identyfikator URI 87,7 FM (z możliwością odtwarzania):
- DAB (odtwarzana):
EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"
Usługa Audio CD Media BrowserService (uchwyty
ACTION_PLAY_AUDIOCD
):- Dysk 1 (z możliwością odtworzenia)
EXTRA_CD_DISK=1
- Dysk 2 (możliwy do przeglądania i odtwarzania)
EXTRA_CD_DISK=2
- Ścieżka 1 (można odtworzyć)
EXTRA_CD_TRACK=1
- Ścieżka 2 (można odtworzyć)
EXTRA_CD_TRACK=2
- Ścieżka 1 (można odtworzyć)
- Mój dysk muzyczny (który można przeglądać i odtwarzać)
EXTRA_CD_DISK=3
- Wszystko dla mnie (do gry)
EXTRA_CD_TRACK=1
- Reise, Reise (wersja z grą)
EXTRA_CD_TRACK=2
- Wszystko dla mnie (do gry)
- Puste miejsce 4 (nie można odtwarzać)
EXTRA_CD_DISK=4
AUX Media BrowserService (obsługa
ACTION_PLAY_AUX
):- Przedni AUX (odtwarzany)
EXTRA_AUX_PORT_NAME="front"
- Tylne AUX (można odtwarzać)
EXTRA_AUX_PORT_NAME="rear"