Radyo kontrolünün uygulanması

Radyo kontrolü uygulaması, MediaSession ve Medya ve sesli asistan uygulamalarının aşağıdakileri yapmasına izin veren MediaBrowse radyoyu kontrol etmek. Daha fazla bilgi için bkz. developer.android.com adresinde arabalar için medya uygulamaları oluşturun.

Araç yayın radyosu desteğinde bir medya göz atma ağacı uygulaması sağlanmıştır packages/apps/Car/libs kitaplığı. Bu kitaplıkta şunun uzantıları da var: URI'ye ve URI'den dönüştürmek için ProgramSelector. Radyo uygulamalarını kullanarak ilişkilendirilmiş göz atma ağacını oluşturmak için bu kitaplığı kullanın.

Medya kaynağı değiştirici

Radyo ve medyada gösterilen diğer uygulamalar arasında sorunsuz bir geçiş sağlamak için araba medyası ortak kitaplığı, radyoya entegre edilmesi gereken sınıflar içerir uygulamasını indirin. MediaAppSelectorWidget, radyo uygulamasının XML'sine eklenebilir (referans medyalarda ve radyo uygulamalarında kullanılan simge ve açılır menü):

<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" />

Bu widget, görüntülenen AppSelectionFragment uygulamasını başlatır. aktarılabilen medya kaynaklarının listesi. Sağlanandan farklı bir kullanıcı arayüzü istenirse özel bir widget oluşturarak AppSelectionFragment öğesini başlatabilirsiniz. değiştirici görüntülenmelidir.

AppSelectionFragment newFragment = AppSelectionFragment.create(widget,
            packageName, fullScreen);
    newFragment.show(mActivity.getSupportFragmentManager(), null);

Referans radyo uygulaması uygulamasında örnek bir uygulama sağlanmıştır. packages/apps/Car/Radio adresinde bulunuyor.

Ayrıntılı kontrol özellikleri

MediaSession (MediaSession.Callback aracılığıyla) arayüz, şu anda çalan radyo programı için kontrol mekanizmaları sağlar:

  • onPlay, onStop. Radyo çalmanın sesini açın.
  • onPause Zaman kaydırmalı duraklatma (destekleniyorsa).
  • onPlayFromMediaId Üst düzey klasördeki herhangi bir içeriği oynatın. Örneğin, "FM'i çal" veya "Radyo çal" deyin.
  • onPlayFromUri Belirli bir frekansla çalın. Örneğin, "88.5 FM'i çal."
  • onSkipToNext, onSkipToPrevious. Sonraki veya öncekine ayarla istasyon.
  • onSetRating Favoriler'e ekleme veya favorilerden kaldırma.

MediaTarayıcı, Üç tür üst düzey dizin türünde MediaItem:

  • (İsteğe bağlı) Programlar (istasyonlar). Bu mod genellikle Kullanıcının bulunduğu yerdeki mevcut tüm radyo istasyonlarını belirtmek için çift alıcı radyoları
  • Favoriler. Favoriler listesine eklenen radyo programları, bazıları kullanılamıyor (alma aralığının dışında).
  • Kanalları birleştirin. Mevcut bölgede fiziksel olarak mümkün olan tüm kanallar (87,9, 88.1, 88.3, 88.5, 88.7, 88.9, 89.1 vb.). Her grubun ayrı bir üst düzey dizini vardır.
MediaTarayıcı Hizmeti ağaç yapısı
Şekil 2. MediaTarayıcı Hizmeti ağaç yapısı
'nı inceleyin.

Bu klasörlerin (AM/FM/Programlar) her birindeki her öğe, kullanılabilecek URI'ye sahip bir MediaItem öğesidir. ayarlamak için MediaSession'ı kullanabilirsiniz. Her üst düzey klasör (AM/FM/Programlar), oynatma işlemini tetiklemek için MediaSession ile kullanılabilir ve OEM'in şahsi karar verme yetkisine bağlıdır. Örneğin, Örneğin, "FM'i çal", "Öğleden sonra çal", ve "Play Radyo" özel olmayan radyo sorgularının tümü OEM radyo uygulamasına gönderilecek mediaId parametresi. Hangi içeriğin hangi cihazdan çalınacağını radyo uygulamasına bağlıdır. genel isteği ve mediaId değerini içerir.

MedyaOturumu

Yayın akışını duraklatma gibi bir kavram olmadığından Oynat, Duraklat ve Durdur işlemleri radyo için de geçerli olmayabilir. Radyoda, Durdur işlemi akışın sesinin kapatılmasıyla ilişkilendirilir Play, sesi kapatma özelliğinin kaldırılmasıyla ilişkilidir.

Bazı radyo kanalları (veya uygulamalar), daha sonra oynatmak anlamına gelir. Bu tür durumlarda onPause kullanın.

mediaId ve URI işlemlerinden oynatma, bir istasyona ayarlamak için tasarlanmıştır MediaTarayıcı arayüzünden alındı. mediaId rastgele bir dizedir benzersiz bir öğe uygulamak için radyo uygulaması tarafından sağlanır (yani belirli bir kimlik yalnızca bir öğeyi işaret eder) ve kararlı (yani belirli bir öğe tüm oturum boyunca aynı kimliğe sahip olur) değerine kullanabilirsiniz. URI, iyi tanımlanmış bir şemaya ait olacaktır. Kısacası, URI tabanlı biçiminde olur. Bu, eşitlik özelliğini korurken bir yandan da istikrarlı olsa da, istasyon farklı bir frekansa geçiş yaptığında değişebilir.

Tasarım gereği onPlayFromSearch kullanılmaz. Müşterinin sorumluluğundadır. (tamamlayıcı uygulama) kullanarak MediaTarayıcı ağacından arama sonucu seçin. Hareket halinde uygulamasının daha karmaşık bir yapıya yol açacağından, bu görevlerin nasıl ilerlediği konusunda resmî dize sorgularının görünmesi ve farklı donanımlarda kullanıcı deneyiminin eşit olmamasına neden olur platformlar.

Not: Radyo uygulaması, istemciye açık olmayan bir istasyon adını aramak için yararlı olacak bilgiler aracından etiketleri kullanabilirsiniz.

Sonraki veya önceki istasyona atlama, geçerli bağlama göre değişir:

  • Bir uygulama Favoriler listesinden bir istasyona ayarlandığında Favoriler listesinden bir sonraki istasyona geçebilirsiniz.
  • Program listesindeki bir istasyonu dinlemek, sonraki mevcut istasyon, kanal numarasına göre sıralanır.
  • Rastgele bir kanalı dinlemek, bir sonraki fiziksel kanala geçmenizi sağlayabilir. ve yayın sinyali olmasa bile çalışır.

Radyo uygulaması bu işlemleri gerçekleştirir.

Hata işleme

TransportControls işlemleri (Oynat, Durdur ve Sonraki), işlemin başarılı olup olmadığını gösterir. Hata belirtmenin tek yolu MediaSession eyalet STATE_ERROR hata mesajı veriyor.

Radyo uygulaması bu işlemleri gerçekleştirmeli ve bunları yürütmeli veya bir hata durumu ayarlamalıdır. Play komutu hemen yürütülmüyorsa oynatma durumu şu şekilde değiştirilmelidir: STATE_CONNECTING (doğrudan ayar durumunda) veya STATE_SKIPPING_TO_PREVIOUS veya NEXT emin olun.

Müşteri PlaybackState reklamını izlemelidir ve oturumun mevcut programı, istenen veya girilen programla değiştirdiğini doğrulayın. hata durumu. STATE_CONNECTING 30 saniyeyi geçmemelidir. Ancak, belirli bir hedefe ÖÖ/FM frekansı çok daha hızlı performans gösterecektir.

Favorileri ekleme ve kaldırma

MediaSession, Favorileri kontrol etmek için kullanılabilecek derecelendirme desteğine sahiptir. onSetRating şu tür bir puanla çağrıldı: RATING_HEART ayarlı olan istasyonu Favoriler listesine ekler veya listeden kaldırır.

Eski hazır ayarların aksine bu modelde sırasız ve sınırsız Favoriler varsayılır listesi, kaydedilen her favori sayısal bir alana (genellikle 1 ila 6) ayrıldığında. Bu nedenle, hazır ayarlı sistemler onSetRating ile uyumlu olmaz. işlemidir.

MediaSession API sınırlaması şu anda yalnızca istasyonun şu anda ayarlı eklenebilir ya da kaldırılabilir. Örneğin, öğelerin kaldırılabilir. Bu yalnızca MediaTarayıcı istemcisinin bir sınırlamasıdır, tamamlayıcı uygulamadır. Radyo uygulaması benzer bir şekilde kısıtlanmamıştır. Bu kısım isteğe bağlıdır Bir uygulama Favoriler'i desteklemediğinde.

MediaBrowser

Hangi frekansların veya fiziksel kanal adlarının (ayarlar bir radyo teknolojisine uygunsa) geçerli olduğunda her bant için geçerli tüm kanallar (frekanslar) listelenir. ABD bölgesinde bu, 87,8-87 aralığında 101 FM kanalına karşılık gelir. 108,0 MHz aralığı (0,2 MHz aralıkla) ve 117:00 kanalları (530 aralığında) 1700 kHz'e (10 kHz aralık kullanılarak). HD radyo aynı kanal alanını kullandığından ayrı olarak sunulmaz.

Şu anda kullanılabilen radyo programlarının listesi düz bir listedir ve bu izin doğrudan ses yayını (DAB) topluluğuna göre gruplandırma gibi görüntü şemaları.

Favori listesindeki girişler, ayarlanmayabilir. Örneğin, olabilir. Radyo uygulaması, girişin yapılıp yapılmadığını önceden ayarlanabilir. Bu durumda, girişi oynatılabilir olarak işaretlenmeyebilir.

Üst düzey klasörleri tanımlamak için Bluetooth tarafından kullanılan mekanizmanın aynısı uygulanır. Bu, MediaDescription adlı kullanıcının Ekstra paketidir. nesnesi, Bluetooth'un EXTRA_BT_FOLDER_TYPE ile yaptığı gibi kanala özel bir alan içerir. Radyo yayıncılığı söz konusu olduğunda bu durum, Dörtlükte genel API:

  • EXTRA_BCRADIO_FOLDER_TYPE = "android.media.extra.EXTRA_BCRADIO_FOLDER_TYPE" Bir şu değerlerden birini seçin:
    • BCRADIO_FOLDER_TYPE_PROGRAMS = 1 Şu anda kullanılabilen programlar.
    • BCRADIO_FOLDER_TYPE_FAVORITES = 2 Favoriler.
    • BCRADIO_FOLDER_TYPE_BAND = 3 Belirli bir grubun tüm fiziksel kanalları.

    radyoya özgü özel meta veri alanları tanımlamanıza gerek yoktur. alakalı veriler mevcut MediaBrowser.MediaItem şemasına uyar:

    • Program adı (RDS PS, DAB hizmet adı). MediaDescription.getTitle.
    • FM frekansı. URI (bkz. ProgramSelector) veya MediaDescription.getTitle (BROADCASTRADIO_FOLDER_TYPE_BAND klasöründe bir giriş varsa).
    • Radyoya özel tanımlayıcılar (RDS PI, DAB SId). MediaDescription.getMediaUri, ProgramSelector olarak ayrıştırıldı.

    Genellikle, cihazdaki bir giriş için FM frekansını getirme mevcut program veya Favoriler listesi (müşterinin medya üzerinde çalışması gerektiği için) kimlikleri). Ancak bu tür bir ihtiyaç ortaya çıkarsa (örneğin, görüntüleme amacıyla) bu URI'da bulunur ve ProgramSelector olarak ayrıştırılabilir. Bununla birlikte, geçerli öğe veya dizindeki öğeleri seçmek için URI'nın kabul edilir. Ayrıntılar için bkz. ProgramSelector

    Performans veya bağlayıcıyla ilgili sorunlardan kaçınmak için MediaTarayıcı hizmeti sayfalandırmayı desteklemelidir:

    Not: Sayfalara ayırma işlemi varsayılan olarak onLoadChildren() varyantlarını kullanabilirsiniz.

    Her türden listeyle ilgili girişler (ham kanallar, bulunan programlar ve favori) farklı mediaId'lere sahip olabilir (radyo uygulamasına bağlıdır; destek kitaplığının ayarları farklı olur). URI'lar (ProgramSelector biçiminde) farklıdır çoğu durumda bulunan ham kanallar ile programlar arasında (FM ancak RDS olmadan), ancak bulunan programlar ve favoriler arasında çoğunlukla aynıdır (ancak Örneğin, AF güncellendiğinde).

    Farklı liste türlerindeki girişler için farklı mediaId'lere sahip olmak, farklı işlemler yapmanız mümkün olur. Favoriler listesine veya Yakın zamanda oluşturulan klasörlere bağlı olarak onSkipToNext üzerindeki Tüm Programlar listesi seçilen MediaItem (bkz. MediaSession) içerir.

    Özel ayar işlemleri

    Program listesi, kullanıcıların belirli bir istasyona ayar yapmasına olanak tanır, ancak kullanıcıların şunları yapmasına izin vermez: "FM'e ayarla" gibi genel isteklerde bulunursunuz. Bu şekilde yakın zamanda FM bandındaki istasyonu dinledim.

    Bu tür işlemleri desteklemek için bazı üst düzey dizinlerde, FLAG_PLAYABLE bayrak ayarlandı (FLAG_BROWSABLE ile birlikte ) tıklayın.

    İşlem Ayarla: Düzenleme yöntemi
    Radyo çal Tüm radyo kanalları startService(ACTION_PLAY_BROADCASTRADIO)

    VEYA

    playFromMediaId(MediaBrowser.getRoot())
    FM'i çal Herhangi bir FM kanalı FM bandının mediaId adlı şarkısından çal.

    Hangi programa bağlanacağınızı uygulamaya karar verir. Bu genellikle belirtilen listedeki kanala en son yapılan videodur. Ayrıntılı bilgi için ACTION_PLAY_BROADCASTRADIO, bkz. Genel oynama amaçları.

    Keşif ve hizmet bağlantısı

    PackageManager, yayın radyosu sunan MediaTarayıcıService hizmetini doğrudan bulabilir ağacı. Bunu yapmak için resolveService numaralı telefonu arayın (bkz. ACTION_PLAY_BROADCASTRADIO) Genel oynama amaçları) ve MATCH_SYSTEM_ONLY işareti. Radyo hizmeti veren tüm hizmetleri bulmak için ( birden fazla olabilir; örneğin, AM/FM ve uydu arasında ayrı ayrı) queryIntentServices

    Çözümlenen hizmet android.media.browse.MediaBrowserService bağlantısını işler için de geçerlidir. Bu bilgi, GTS ile doğrulanır.

    Seçilen MediaTarayıcıHizmeti'ne bağlanmak için oluştur Belirli bir hizmet bileşeni ve connect için MediaBrowser örneği. Bağlantı kurulduktan sonra MediaSession'a yönelik bir herkese açık kullanıcı adı şuradan edinilebilir: getSessionToken

    Radyo uygulaması, onGetRoot emin olabilirsiniz. Uygulama, sistem uygulamalarının bağlanmasına izin vermelidir beyaz listeye eklemeden önce. Beyaz listeye eklemeyle ilgili ayrıntılar için bkz. Asistan uygulaması paketini ve imzasını kabul edin.

    Kaynağa özgü uygulama (örneğin, bir radyo uygulaması) olmasa da kaynak desteği sunmasa bile, kaynak desteğinin ACTION_PLAY_BROADCASTRADIO niyeti vardı, ancak MediaTarayıcı ağacı radyoya özgü etiketler içermemelidir. Dolayısıyla, belirli bir şeyin teste tabi olup kaynağı bir cihazda mevcut;

    1. Radyo hizmetini keşfedin (telefon görüşmesi için resolveService ACTION_PLAY_BROADCASTRADIO) tıklayın.
    2. MediaBrowser oluşturup ona bağlanın.
    3. EXTRA_BCRADIO_FOLDER_TYPE ile MediaItem varlığını belirleme ekstra

    Not: Çoğu durumda, istemcinin tüm web sayfalarını Medya Tarayıcısı ağaçlarını kullanarak bir cihaz için tüm kullanılabilir kaynakları algılayabilir.

    Müzik grubu adları

    Bant listesi, bir klasör türüne sahip bir üst düzey dizin grubuyla temsil edilir. etiketi BCRADIO_FOLDER_TYPE_BAND olarak ayarlandı. MediaItem kullanıcısının başlıklar grup adlarını temsil eden yerelleştirilmiş dizelerdir. Çoğu durumda İngilizce çeviriyle aynıdır, ancak müşteri bu varsayıma dayalı hareket edemez.

    Belirli bantları ararken sabit bir mekanizma sağlamak için EXTRA_BCRADIO_BAND_NAME_EN adlı bant klasörleri için fazladan etiket eklendi. Bu grubun yerelleştirilmiş olmayan bir adını belirtir ve önceden tanımlanmış şu değerlerden yalnızca birini alabilir:

    • AM
    • FM
    • DAB

    Kayış bu listede yoksa bant adı etiketi ayarlanmamalıdır. Bununla birlikte, bant listede varsa bir etiket ayarlanmış olmalıdır. HD radyo yapmıyor Am/FM ile aynı temel ortamı kullandığı için ayrı bantları numaralandırma.

    Genel oyun amaçları

    Belirli bir kaynağın (radyo veya CD gibi) çalınması için özel olarak tasarlanmış her uygulama bir olası bir içeriği oynatmaya başlamak için genel oynatma niyeti etkin olmama durumu (örneğin, başlatıldıktan sonra) İçerikler uygulama tarafından belirlenir. ancak bu genellikle en son çalınan radyo programı veya CD'dir.CD'de Her ses kaynağı için amaç tanımlanır:

    • android.car.intent.action.PLAY_BROADCASTRADIO
    • android.car.intent.action.PLAY_AUDIOCD: CD-DA veya CD-Metin
    • android.car.intent.action.PLAY_DATADISC: Optik veri diski benzeri CD/DVD var ancak CD-DA değil (Karma Mod CD olabilir)
    • android.car.intent.action.PLAY_AUX: Hangisinin AUX bağlantı noktası
    • android.car.intent.action.PLAY_BLUETOOTH
    • android.car.intent.action.PLAY_USB: Hangisinin USB cihaz
    • android.car.intent.action.PLAY_LOCAL: Yerel medya depolama alanı (yerleşik flaş)

    Amaçlar, kastedildiği için genel oyun komutu için kullanılmak üzere olmak üzere iki sorun vardır: genel play komutunun kendisi ve hizmet keşfi. Böyle bir amaca sahip olmanın bir diğer faydası da, böyle bir anlaşmanın basit bir işlem yapılmasını sağlar.

    Hizmet keşfi, aslında bu çözümlerle çözülen daha önemli problemdir. amaçlar. Hizmet keşfine yönelik süreç bu şekilde kolay ve nettir (bkz. Keşif ve hizmet bağlantısı).

    Bazı istemci uygulamalarını kolaylaştırmak için, Google Dokümanlar ve Google Slaytlar Aşağıdaki gibi Play komutunun yayınlanması (Radyo uygulaması tarafından da uygulanması gerekir): kök düğümün rootId'si ile playFromMediaId verme ( mediaId) kaldırın. Araç kök düğüm oynatılabilir olması amaçlanmamıştır, rootId rastgele bir dizedir Bu, mediaId olarak tüketilmek üzere yapılabilir. Ancak, anlayabiliyorum.

    Program Seçici

    mediaId, listeden bir kanal seçmek için MediaBrowserService, bir oturuma bağlı hale geliyor ve tutarlı değil sağlar. Bazı durumlarda müşterinin mutlak bir işaretçiye (örneğin, mutlak sıklık) kullandığınızdan emin olun.

    Dijital radyo yayınları çağında sadece tek bir frekansla odaklanmak yeterli değildir. belirli bir istasyona ayarla. Bu nedenle, ayarlamak için ProgramSelector kullanın analog veya dijital kanala bağlanabilir. ProgramSelector iki bölümden oluşur:

    • Birincil tanımlayıcı. Belirli bir radyo için benzersiz ve sabit tanımlayıcı istasyonun içeriği değişir, ancak bu istasyona bağlanmak için yeterli olmayabilir. Örneğin, RDS PI kodu (ABD'de çağrı işaretine çevrilebilir).
    • İkincil tanımlayıcılar. Ayarlama için faydalı ek tanımlayıcılar iletişim bilgisi (örneğin, sıklık) kullanılarak radyo teknolojileri. Örneğin, bir DAB istasyonunun analog yayın yedeği olabilir.

    ProgramSelector öğesinin, MediaBrowser veya MediaSession tabanlı çözüm, seri haline getirmek için bir URI şeması tanımlayın. Şema şu şekilde tanımlanır:

    broadcastradio://program/<primary ID type>/<primary ID>?
    <secondary ID type>=<secondary ID>&<secondary ID type>=<secondary ID>
    

    Bu örnekte, ikincil Tanımlayıcılar bölümü (soru işaretinden (?) sonra) isteğe bağlıdır ve mediaId olarak kullanılacak sabit bir tanımlayıcı sağlamak için kaldırılabilir. Örnek:

    • 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

    program yetkili tarafı (ana makine olarak da bilinir), daha fazla bilgi edineceksiniz. Tanımlayıcı türü dizeleri tam olarak belirtilir IdentifierType öğesinin HAL 2.x tanımındaki ve değeri biçimi, ondalık veya onaltılık (0x ön eki olan) bir sayıdır.

    Tedarikçiye özel tüm tanımlayıcılar VENDOR_ ile temsil edilir. ön eki ile değiştirebilirsiniz. Örneğin, VENDOR_START için VENDOR_0 ve VENDOR_START ve 1 için VENDOR_1. Bu tür URI'lar oluşturuldukları ve cihazlar arasında aktarılamayan radyo donanımı çeşitli OEM'ler tarafından üretilmiştir.

    Bu URI'lar, üst düzey radyo altındaki her bir MediaItem öğesine atanmalıdır klasörlerini tıklayın. Buna ek olarak, MediaSession hem playFromMediaId öğesini desteklemelidir ve playFromUri. Bununla birlikte, URI esasen radyo için tasarlanmıştır. meta veri çıkarma (FM frekansı gibi) ve kalıcı depolama. Hayır, URI'nın tüm medya öğeleri için kullanılabileceğini (örneğin, birincil Kimlik türü henüz çerçeve tarafından desteklenmiyor). Diğer yandan, Medya Kimliği her zaman çalışır. Müşterilerin oturum açın. Bunun yerine playFromMediaId politikasını kullanın. Bununla birlikte, sunum uygulaması için isteğe bağlı değildir ve eksik URI'lar haklı gerekçeler için ayrılmıştır.

    İlk tasarımda :// dizisi yerine tek iki nokta üst üste kullanılmıştır seçeneği belirleyin. Ancak ilki Mutlak hiyerarşik URI başvuruları için android.net.Uri.

    Diğer kaynak türleri

    Diğer ses kaynakları benzer şekilde işlenebilir. Örneğin, yardımcı giriş ve ses CD'si çalar.

    Tek bir uygulama, birden fazla kaynak türünü sunabilir. Böyle durumlarda her bir web sitesi için ayrı bir MediaTarayıcıHizmeti oluşturmanız önerilir her bir kaynak türünü gösteriyoruz. Birden fazla sunulan kaynak/MediaTarayıcı Hizmetleri bulunan kurulumda bile, tek bir içinde tek bir MediaSession'ın olması önemle önerilir uygulamasını indirin.

    Ses CD'si

    Ses CD'sine benzer şekilde, bu tür diskleri sunan uygulama MediaTarayıcı'yı tek bir göz atılabilir girişle (veya sistemde CD değiştirici). Eğer her CD’deki parçalar hakkında bilgi sahibi değildir (örneğin, tüm diskler bir kartuşun içine yerleştirilir ve kartuşun tamamını okumazsa) Diskin tamamına ilişkin MediaItem yalnızca PLAYABLE olur, değil BROWSABLE ve PLAYABLE. Bir alan sağlandığında, öğe PLAYABLE veya BROWSABLE olmaz. (ancak her aralık her zaman ağaçta bulunmalıdır).

     Ses CD&#39;si ağaç yapısı
    Şekil 3. Ses CD'si ağaç yapısı.

    Bu girişler, radyo klasörlerini yayınlamaya benzer bir şekilde işaretlenir şunlardır: bunlar MediaDescription API'sinde tanımlanan ek ek alanlar içerir:

    • EXTRA_CD_TRACK: Ses CD'sindeki her MediaItem için, 1 tabanlı parça numarası.
    • EXTRA_CD_DISK: 1 tabanlı disk numarası.

    CD-Text özellikli sistem ve uyumlu disk için, üst düzey MediaItem bir başlığı olur. Benzer şekilde, parçalara ilişkin MediaItems öğesi de başlığı seçin.

    Yardımcı giriş

    Yardımcı giriş sunan uygulama, tek bir girişle (veya daha fazla (birden fazla bağlantı noktası varsa) bağlantı noktasında AUX'u (bağlantı noktası) temsil eder. İlgili MediaSession, mediaId değerini alır ve playFromMediaId isteğini aldıktan sonra bu kaynağa geçer.

    AUX ağaç yapısı
    Şekil 4. AUX ağaç yapısı.

    Her AUX MediaItem girişinde fazladan bir alan olur EXTRA_AUX_PORT_NAME, bağlantı noktasının yerelleştirilmemiş adına ayarlandı "AUX" olmayan kelime öbeğini ekleyin. Örneğin, "AUX 1" "1", "AUX" olarak ayarlanmalıdır. ön" "ön" olarak ve "AUX" gibi kullanabilirsiniz. İngilizce dışındaki dillerde yerel ayar adı etiketi aynı İngilizce dize olarak kalır. Olası değil EXTRA_BCRADIO_BAND_NAME_EN, değerler OEM tarafından tanımlanmıştır önceden tanımlanmış bir listeyle sınırlıdır.

    Donanım, AUX bağlantı noktasına bağlı cihazları algılayabilirse donanım, MediaItem'i PLAYABLE olarak ayarlayın. Donanımın buna bağlı bir şey yoksa yine de numaralandırılmaya devam eder (ancak PLAYABLE değil). bağlantı noktası. Donanımın böyle bir özelliği yoksa MediaItem her zaman PLAYABLE

    Ekstra alanlar

    Aşağıdaki alanları tanımlayın:

    • 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"

    Müşterinin, EXTRA_CD_DISK veya EXTRA_AUX_PORT_NAME ekstra alan ayarlandı.

    Ayrıntılı örnekler

    Aşağıdaki örneklerde, şu özelliklere sahip kaynak türleri için MediaTarayıcı ağaç yapısında bir parçası olacak.

    MediaTarayıcı Hizmeti'ni yayınla (ACTION_PLAY_BROADCASTRADIO işleyicisini işler):

    • İstasyonlar (göz atılabilir)EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_PROGRAMS
      • BBC One (oynanabilir) URI'si: broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=90500
      • ABC 88.1 (oynanabilir) URI'si: broadcastradio://program/RDS_PI/5678?AMFM_FREQUENCY=88100
      • ABC 88.1 HD1 (oynatılabilir) URI'si: broadcastradio://program/HD_STATION_ID_EXT/158241DEADBEEF?AMFM_FREQUENCY=88100&RDS_PI=5678
      • ABC 88.1 HD2 (oynatılabilir) URI'si: broadcastradio://program/HD_STATION_ID_EXT/158242DEADBEFE
      • 90.5 FM (oynatılabilir) - RDSURI olmadan FM: broadcastradio://program/AMFM_FREQUENCY/90500
      • 0620 (oynanabilir) URI: broadcastradio://program/AMFM_FREQUENCY/620
      • BBC One (oynanabilir) URI: broadcastradio://program/DAB_SID_EXT/1E24102?RDS_PI=1234
    • Favoriler (göz atılabilir, oynanabilir)EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_FAVORITES
      • BBC One (oynanabilir) URI: broadcastradio://program/RDS_PI/1234?AMFM_FREQUENCY=101300
      • BBC Two (oynatılabilir değil)URI: broadcastradio://program/RDS_PI/1300?AMFM_FREQUENCY=102100
    • ÖÖ (göz atılabilir, oynatılabilir): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="AM"
      • 530:00 (oynanabilir) URI: broadcastradio://program/AMFM_FREQUENCY/530
      • 540:00 (oynanabilir) URI: broadcastradio://program/AMFM_FREQUENCY/540
      • 550:00 (oynanabilir) URI: broadcastradio://program/AMFM_FREQUENCY/550
    • FM (göz atılabilir, oynatılabilir): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="FM"
      • 87.7 FM (oynatılabilir) URI: broadcastradio://program/AMFM_FREQUENCY/87700
      • 87.9 FM (oynatılabilir) URI: broadcastradio://program/AMFM_FREQUENCY/87900
      • 88.1 FM (oynatılabilir) URI'si: broadcastradio://program/AMFM_FREQUENCY/88100
    • DAB (oynanabilir): EXTRA_BCRADIO_FOLDER_TYPE=BCRADIO_FOLDER_TYPE_BANDEXTRA_BCRADIO_BAND_NAME_EN="DAB"

    Ses CD'si MediaTarayıcıService (ACTION_PLAY_AUDIOCD işleyicisi):

    • Disk 1 (oynanabilir) EXTRA_CD_DISK=1
    • Disk 2 (göz atılabilir, oynatılabilir) EXTRA_CD_DISK=2
      • 1. Parça (hazırlanabilir) EXTRA_CD_TRACK=1
      • 2. Parça (hazırlanabilir) EXTRA_CD_TRACK=2
    • Müzik CD'm (göz atılabilir, çalınabilir) EXTRA_CD_DISK=3
      • Kendim (oynanabilir) EXTRA_CD_TRACK=1
      • Reise, Reise (oynanabilir) EXTRA_CD_TRACK=2
    • Boş yuva 4 (oynatılamaz) EXTRA_CD_DISK=4

    AUX MediaTarayıcıService (ACTION_PLAY_AUX işleyicisi):

    • Yedek (AUX) ön (oynanabilir) EXTRA_AUX_PORT_NAME="front"
    • AUX arka (oynanabilir) EXTRA_AUX_PORT_NAME="rear"