Bu makalede, USB dijital ses ve diğer cihazlar için Android desteği incelenmektedir. USB tabanlı protokoller.
Kitle
Bu makalenin hedef kitlesi Android cihaz OEM'leri, SoC tedarikçileri, USB ses çevre birimi tedarikçileri, gelişmiş ses uygulaması geliştiriciler, ve Android'deki USB dijital ses dahili öğelerini ayrıntılı olarak anlamak isteyen diğer kullanıcılar.
Nexus cihazların son kullanıcıları makaleyi incelemelidir USB ana makine modunu kullanarak ses kaydetme ve oynatma , Bunun yerine Nexus Yardım Merkezi'ni ziyaret edin. Bu makale son kullanıcılara yönelik olmasa da bazı ses tutkunu tüketiciler ilgi alanlarını bulabilir.
USB'ye genel bakış
Evrensel Seri Yol (USB), Wikipedia makalesinde resmi olmayan bir şekilde açıklanmaktadır USB, tarafından yayınlanan standartlarla resmen tanımlanmıştır. USB Implementers Forum, Inc. Kolaylık sağlaması açısından, USB ile ilgili temel kavramları burada özetledik. standartlar da güvenilir referanstır.
Temel kavramlar ve terminoloji
USB bir otobüstür Bu işlem, veri aktarımı işlemlerini ana makine adı verilen tek bir başlatıcıyla başlatır. Toplantıyı düzenleyen kullanıcı, çevre birimlerini kullanıyor.
Not: Cihaz ve aksesuar terimleri genellikle çevre birimi hakkında daha fazla bilgi edinin. Karıştırılma olasılığından dolayı burada bu terimleri kullanmaktan kaçınıyoruz Android cihaz veya Android'e özgü bir kavram olan aksesuar modundan erişebilirsiniz.
Numaralandırma, kritik ana makine rollerinden biridir: otobüse bağlı çevre birimlerini tespit etme süreci ve açıklayıcılar aracılığıyla ifade edilen özelliklerini sorgulayın.
Çevre birimi tek bir fiziksel nesne olabilir Ancak birden fazla mantıksal işlev uygulayabilir. Örneğin, bir web kamerası çevre biriminde hem kamera işlevi hem de mikrofon ses işlevine dokunun.
Her çevre birimi işlevinin belirli bir arayüzü vardır bu işlevle iletişim kuracak protokolü tanımlar.
Ana makine, bir çevre birimiyle iletişim kurar. dikey çizgi uç noktaya bir veri kaynağı veya havuz çevre biriminin işlevlerinden biri tarafından sağlanır.
İki tür dikey çizgi vardır: mesaj ve akış. İki yönlü kontrol ve durum için mesaj hattı kullanılır. Tek yönlü veri aktarımında ise akış borusu kullanılır.
Tüm veri aktarımlarını ana makine Bu nedenle giriş ve çıkış terimleri ana makineye göre ifade edilir. Bir giriş işlemi, verileri çevre biriminden ana makineye aktarır. çıkış işlemi, ana makineden çevre birimine veri aktarır.
Üç ana veri aktarım modu vardır: interrupt, Batch ve isochronous. İkizon modu, ses bağlamında daha ayrıntılı olarak ele alınacaktır.
Çevre biriminde dış dünyaya bağlanan terminaller olabilir, çok daha fazlasını yapar. Bu şekilde çevre birimi USB protokolü ve "gerçek dünya" arasında çeviri yapma sinyallerine geçiş yapacaktır. Terminaller, işlevin mantıksal nesneleridir.
Android USB modları
Geliştirme modu
Geliştirme modu, Android'in ilk sürümünden bu yana kullanımdadır. Android cihaz, USB çevre birimi olarak görünür. veya Linux gibi masaüstü işletim sistemi çalıştıran bir ana bilgisayar Mac OS X veya Windows. Görünür tek çevre birimi işlevi Android hızlı başlatma veya Android Debug Bridge (adb). Fastboot ve adb protokolleri, USB toplu veri aktarım modunda katmanlı olarak yer alır.
Barındırıcı modu
Ana makine modu, Android 3.1'de (API düzeyi 12) kullanıma sunulmuştur.
Android cihazın ana makine olarak çalışması gerekir ve çoğu Android cihaz Doğrudan ana makine çalışmasına izin vermeyen bir mikro USB konnektörü, mobil kullanım amaçlı (OTG) adaptör şunun gibi genellikle gereklidir:
Android cihaz, bir cihazı çalıştırmak için yeterli güç sağlamayabilir. ne kadar güce ihtiyaç duyduğuna bağlı olarak belirli bir çevre biriminin ve Android cihazın ne kadar sağlama kapasitesine sahip olduğu. Hatta yeterli güç varsa Android cihazın pil şarjı kısaltılır. Bu durumlarda, hub'ı aşağıdaki gibi kullanın:
Aksesuar modu
Aksesuar modu, Android 3.1 (API düzeyi 12) sürümünde kullanıma sunulmuş ve Android 2.3.4'e geri bağlantılandırılmıştır. Android cihaz bu modda bir USB çevre birimi olarak çalışır. ana makine olarak işlev gören bir yuva gibi başka bir cihazın kontrolü altında olması gerekir. Geliştirme modu ile aksesuar modu arasındaki fark ek USB işlevlerinin adb dışında ana makine tarafından görülebilmesidir. Android cihaz, geliştirme modunda başlatılır ve ardından geçiş yapması için yeniden pazarlık yapılması gerekir.
Aksesuar modu, Android 4.1'deki ek özelliklerle genişletildi. aşağıda açıklanan diğer sesleri kullanın.
USB ses
USB sınıfları
Her çevre birimi işlevinin ilişkili bir cihaz sınıfı dokümanı vardır standart protokolü belirtir. Bu işlem, sınıfla uyumlu ana makineleri ve çevre birimi işlevlerini etkinleştirir. birbirlerinin çalışmaları hakkında ayrıntılı bilgi sahibi olmadan birlikte çalışmak. Ana makine ve çevre birimi, Google tarafından sağlanan olanak tanır.
Sürücüsüz terimi, sınıf uyumlu ile eş anlamlıdır; Bu da böyle bir çalışmanın standart özelliklerini kullanmanın mümkün olduğunu, işletim sistemine özel bir işlem gerektirmeden çevre birimi sürücü yüklenir. Bir çevre biriminin "sürücüye ihtiyacı yok" şeklinde tanıtıldığı varsayılabilir büyük masaüstü işletim sistemleri için sınıfla uyumlu olacaktır ancak istisnalar olabilir.
USB ses sınıfı
Burada yalnızca bu cihazları kullanan çevre birimleri ve ses sistemi sınıfına uyması gerekir. İki tür USB ses sınıfı spesifikasyonunun sürümleri: sınıf 1 (UAC1) ve 2 (UAC2).
Diğer sınıflarla karşılaştırma
USB, bazıları karıştırılabilecek diğer birçok cihaz sınıfını içerir düzenlemenizi sağlar. İlgili içeriği oluşturmak için kullanılan toplu depolama sınıfı (MSC) ise sektöre yönelik erişimi artırırken Medya Aktarım Protokolü (MTP), medyalara tam dosya erişimi içindir. Ses dosyalarının aktarımı için hem MSC hem de MTP kullanılabilir, ancak gerçek zamanlı akış için yalnızca USB ses sınıfı uygundur.
Ses terminalleri
Ses çevre biriminin terminalleri genellikle analogdur. Çevre biriminin giriş terminalinde sunulan analog sinyal, analog-dijital dönüştürücü (ADC), ve Google'ın API'si ile kullanılacak USB protokolü üzerinden bu bilgilerden faydalanabilirsiniz. ADC bir veri kaynağı seçin. Benzer şekilde, barındırıcı dijital ses sinyalini kullanır. Burada bir dijitalden analog dönüştürücü (DAC) dönüştürüp analog bir çıkış terminaline sunar. DAC, ana makine için bir havuz'dur.
Kanallar
Ses işlevine sahip bir çevre birimi; kaynak terminali, havuz terminali veya her ikisini içerebilir. Her yönün bir kanalı (mono), iki kanalı olabilir (stereo) veya daha fazla. İkiden fazla kanala sahip çevre birimlerine çok kanallı denir. Stereo akışın yapısında genellikle sol ve sağ kanalları ve buna bağlı olarak çok kanallı bir akışı her bir kanala karşılık gelen uzamsal konumlar. Ancak aynı zamanda oldukça uygun (özellikle de USB ses için HDMI) belli bir görev için standart bir uzamsal anlam ifade eder. Bu durumda, Yeşil Ofis her bir kanalın nasıl kullanıldığını tanımlamak için uygulama ve kullanıcı ekleyin. Örneğin, dört kanallı bir USB giriş akışında ilk üçü mikrofonlara bağlı kanalları ve son ses kanal, AM radyodan giriş alıyor.
İki kronik aktarım modu
USB ses, gerçek zamanlı özellikleri için eşzamanlı aktarım modunu kullanır. ortaya çıkarır. Eşzamanlı modda, bant genişliği garanti edilir ve veri iletimi döngüsel artıklık kontrolü (CRC) kullanılarak belirlenir. Ancak mevcut hata durumunda paket onayı veya yeniden iletimi yapılmaz.
Her Kare Başlangıcı (SOF) döneminde iki kronik iletimler gerçekleşir. SOF süresi, tam hız için bir milisaniye, tam hız için 125 mikrosaniyedir. size yardımcı olabilir. Her bir tam hızlı çerçeve 1.023 bayt'a kadar yük taşır. ve yüksek hızlı bir çerçeve 1024 bayta kadar veri taşır. Bunları bir araya getirerek maksimum aktarım hızını 1.023.000 veya 8.192.000 bayt olarak hesaplarız / saniye başına Bu, birleşik ses için teorik bir üst sınır belirler örnek hızı, kanal sayısı ve bit derinliği gibi. Pratik sınır daha düşüktür.
Eşzamanlı modda üç alt mod vardır:
- Uyarlanan
- Eşzamansız
- Eşzamanlı
Uyarlanabilir alt modda, çevre birimi havuzu veya kaynak, potansiyel olarak değişen örnek hızına uyum sağlar belirler.
Eşzamansız (örtülü geri bildirim de denir) alt modda, Örnek hızı havuz veya kaynak tarafından belirlenir. Ana makine de örnek hızı dikkate alır. Eşzamansız alt modun birincil teorik avantajı, fiziksel ve elektriksel olarak daha yakın (ve hatta bazen saatle aynı veya bundan türetilmiş olmalıdır. Bu yakınlık, eşzamansız alt modun daha az duyarlı olacağı anlamına gelir. ses dalgalanmasına neden olur. Ayrıca, DAC veya ADC tarafından kullanılan saat ana makine saatinden daha yüksek doğruluk ve daha düşük kayma için tasarlanmıştır.
Eşzamanlı alt modda her SOF döneminde sabit sayıda bayt aktarılır. Ses örnek hızı, USB saatinden etkili bir şekilde elde edilir. Eşzamanlı alt mod, hem ses hem de USB saatinden bağımsız olarak ana makine ve çevre birimi tarafından kullanılıyor.
Aşağıdaki tabloda iki kronik alt modlar özetlenmiştir:
Alt mod | Paket başına bayt sayısı |
Örnek hızı şuna göre belirlenir: |
Ses için kullanılır |
---|---|---|---|
uyarlanabilir | değişken | düzenleyen : canlı yayın sahibi : sunucu | evet |
eşzamansız | değişken | çevre birimi | evet |
eşzamanlı | sabit | USB saat | hayır |
Uygulamada alt mod elbette önemlidir ancak dikkate alınması gerekir.
USB ses sınıfı için Android desteği
Geliştirme modu
USB ses, geliştirme modunda desteklenmiyor.
Barındırıcı modu
Android 5.0 (API düzeyi 21) ve sonraki sürümler, USB ses sınıfı 1 (UAC1) özelliklerinin bir alt kümesini destekler:
- Android cihaz, ana makine olarak işlem yapmalıdır
- Ses biçimi PCM (arayüz türü I) olmalıdır
- Bit derinliği 16 bit, 24 bit veya 32 bit olmalıdır; 24 bit yararlı ses verisi, en önemli bölümde yaslanmış 32 bitlik kelimenin bitleri
- Örnek hızı 48, 44,1, 32, 24, 22,05, 16, 12, 11,025 veya 8 kHz olmalıdır
- Kanal sayısı 1 (mono) veya 2 (stereo) olmalıdır
Android çerçevesi kaynak kodu Perusal'da ek kod gösterilebilir destekleyebilecekleri sınırlı bir sınır olarak karşı karşıyayız. Ancak bu kod doğrulanmadı. Bu nedenle, daha ileri seviye özelliklerle ilgili henüz hak talebinde bulunulmadı.
Aksesuar modu
Android 4.1 (API düzeyi 16), ana makineye ses çalma için sınırlı destek ekledi. Android, aksesuar modundayken ses çıkışını otomatik olarak USB'ye yönlendirir. Yani Android cihaz, ana makineye bir veri kaynağı (ör. yuva) görevi görür.
Aksesuar modunda ses şu özelliklere sahiptir:
- Android cihaz, aşağıdakileri yapan bilgili bir ana makine tarafından kontrol edilmelidir. önce Android cihazı geliştirme modundan aksesuar moduna geçirebilir, Ardından ana makinenin uygun uç noktadan ses verilerini aktarması gerekir. Dolayısıyla, Android cihaz "sürücüsüz" olarak görünmez. gönderir.
- Yön, ana makineye göre ifade edilen giriş olmalıdır.
- Ses biçimi 16 bit PCM olmalıdır
- Örnek hızı 44,1 kHz olmalıdır
- Kanal sayısı 2 (stereo) olmalıdır
Aksesuar modu sesi yaygın olarak benimsenmemiştir. ve şu anda yeni tasarımlar için önerilmez.
USB dijital ses uygulamaları
Adından da anlaşılacağı gibi, USB dijital ses sinyali temsil edilir. dijital veri akışı tarafından analog yerine ortak TRS mininin kullandığı sinyal mikrofonlu kulaklık bağlayıcısı. Sonuç olarak, herhangi bir dijital sinyalin duyulabilmesi için önce analog sinyale dönüştürülmesi gerekir. Bu dönüşümün nereye yerleştirileceğini seçmede bazı ödünler vardır.
İki DAC'nin öyküsü
Aşağıdaki örnek diyagramda iki tasarımı karşılaştırıyoruz. İlk olarak bir uygulama işlemcisi (AP), yerleşik DAC, amplifikatör ve ve analog TRS konnektörüne takıldı. Ayrıca, Harici USB DAC ve amplifikatöre bağlı USB'ye sahip mobil cihaz, kulaklıkla da yapabilirsiniz.
Hangi tasarım daha iyi? Bu sorunun cevabı, ihtiyaçlarınıza bağlıdır. Her birinin avantajları ve dezavantajları vardır.
Not: Bu yapay bir karşılaştırmadır. gerçek bir Android cihazda muhtemelen her iki seçenek de kullanılabilir.
A'nın ilk tasarımı daha basittir, daha ucuzdur, daha az güç kullanır, ve bileşenlerin de eşit derecede güvenilir olduğu varsayılır. Ancak, ses kalitesiyle ilgili diğer gerekliliklere kıyasla genellikle dengesizlikler vardır. Örneğin, bu büyük ölçekli bir pazar cihazıysa, için değil, genel tüketicinin gereksinimlerini karşılıyor.
İkinci tasarımda ise harici ses çevre birimi C, daha yüksek ses kalitesi ve daha fazla güç çıkışı sağlar. temel kitle pazarına sahip Android cihaz B. Evet, daha pahalı bir tasarım. ama maliyet yalnızca bunu isteyenler tarafından karşılanıyor.
Mobil cihazlar, yayın yoğunluğu devre kartlarına yardımcı oluyor. Bu da ekip parazit sinyal Bitişik analog sinyalleri azaltan bir filtre. Dijital iletişim, 2024 yılında gürültü, Bu nedenle, DAC'yi Android cihaz A'dan harici bir devre kartına C son analog aşamaların fiziksel ve elektriksel olarak gerçekleşmesine izin verir yoğun ve gürültülü devre kartından izole ederek daha yüksek kaliteli ses sağlar.
Diğer yandan ikinci tasarım daha karmaşıktır ve artan karmaşıklık düzeyiyle birlikte fırsatlar yaratmalısınız. Ayrıca ek gecikme de USB denetleyicilerden geliyor.
Ana makine modu uygulamaları
USB ana makine modundaki ses uygulamaları şunları içerir:
- müzik dinleme
- telefon
- anlık mesajlaşma ve sesli sohbet
- kayıt
Android, tüm bu uygulamalar için uyumlu bir USB dijital cihaz algılar. ses çevre biriminin yanı sıra ses çalma ve ses kaydını otomatik olarak yönlendirir uygun şekilde değiştirebilirsiniz. Stereo içerik, çevre biriminin ilk iki kanalında oynatılır.
USB dijital sese özel API yoktur. Gelişmiş kullanım için otomatik yönlendirme, uygulamalarla çakışabilir cihazlardır. Bu tür uygulamalar için otomatik yönlendirmeyi devre dışı bırakın medya bölümündeki ilgili kontrol aracılığıyla Ayarlar / Geliştirici Seçenekleri.
Ana makine modundayken hata ayıkla
USB ana makine modundayken USB üzerinden adb hata ayıklaması yapılamaz. Kablosuz kullanımı bölümüne göz atın / Android Hata Ayıklama Köprüsü isteyebilirsiniz.
USB ses uygulama
Ses çevre birimi satıcıları için öneriler
Ses çevre birimi satıcıları, Android cihazlarla birlikte çalışmak için şunları yapmalıdır:
- ses sınıfına uygunluk için tasarım; şu anda Android 1. sınıfı hedefliyor, ancak 2. sınıf için plan yapmak mantıklıdır
- Quirkslerden kaçının
- Referans ve popüler Android cihazlarla birlikte çalışabilirlik testi
- desteklenen özellikleri, ses sınıfı uyumluluğunu, güç gereksinimlerini vb. açıkça belgeleyin. Böylece tüketiciler bilinçli kararlar verebilir
Android cihaz OEM'leri ve çip üzerinde sistem (SoC) tedarikçileri için öneriler
Cihaz OEM'leri ve SoC tedarikçileri, USB dijital sesi desteklemek için:
- USB ana makine modunu destekleyecek donanım tasarlama
- çerçeve düzeyinde genel USB ana makine desteğini etkinleştir
android.hardware.usb.host.xml
özellik bayrağı aracılığıyla - gereken tüm çekirdek özelliklerini etkinleştirin: USB ana makine modu, USB ses, iki kronik aktarım modu; Android Kernel Yapılandırması adlı makaleyi inceleyin
- En son çekirdek sürümlerini ve yamalarını takip etmek; Sınıflara ve kurallara uygunluk gibi önemli bir hedef olmasına rağmen, günümüzde kullanılan ses çevre birimleri mevcuttur. Quirks ile ve son çekirdeklerin bu tür tuhaflıklar için geçici çözümleri var
- USB ses politikasını aşağıda açıklandığı şekilde etkinleştirin
- device.mk'de audio.usb.default'u PRODUCT_PACKAGES uygulamasına ekle
- Ortak USB ses çevre birimleriyle birlikte çalışabilirlik testi
USB ses politikasını etkinleştir
USB sesi etkinleştirmek için ses politikası yapılandırma dosyası. Bu genelde şu adreste bulabilirsiniz:
device/oem/codename/audio_policy.conf
"oem" yol adı bileşeni ile değiştirilmelidir. Android cihazı üreten OEM'nin ve "kod adı" cihazın kod adıyla değiştirin.
Aşağıda örnek bir giriş gösterilmiştir:
audio_hw_modules { ... usb { outputs { usb_accessory { sampling_rates 44100 channel_masks AUDIO_CHANNEL_OUT_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_OUT_USB_ACCESSORY } usb_device { sampling_rates dynamic channel_masks dynamic formats dynamic devices AUDIO_DEVICE_OUT_USB_DEVICE } } inputs { usb_device { sampling_rates dynamic channel_masks AUDIO_CHANNEL_IN_STEREO formats AUDIO_FORMAT_PCM_16_BIT devices AUDIO_DEVICE_IN_USB_DEVICE } } } ... }
Kaynak kodu
Ses Donanım Soyutlama Katmanı (HAL) USB ses uygulaması için:
hardware/libhardware/modules/usbaudio/
USB ses HAL'si büyük ölçüde tinyalsa, Ses terminolojisinde açıklanmaktadır. USB ses eş zamanlı aktarıma dayansa da bu, ALSA uygulaması ile soyutlanır. USB ses HAL ve tinyalsa için endişelenmenize gerek yoktur. bağlantı kurmalarını sağlar.
USB sesi test et
USB ses için CTS testi hakkında bilgi edinmek için USB Ses CTS Doğrulayıcı Testleri başlıklı makaleye bakın.