Jeder, der es wert ist, sich in der Android-Entwickler-Community zu etablieren, kennt das Problem 3434 in Bezug auf Audio mit geringer Latenz in Android. Für diejenigen, die das nicht tun, können Sie sich hier weiterbilden. Ссылка
Ich suche nach einer Art temporärer Problemumgehung für mein persönliches Projekt. Ich habe davon gehört, private Schnittstellen zum NDK offen zu legen, indem ich dein eigenes Build von Android rolle und das NDK modifiziere.
Alles, was ich brauche, ist eine Möglichkeit, auf die niedrigen alsa-Treiber zuzugreifen, die bereits mit dem standardmäßigen 2.2-Build ausgeliefert werden. Ich hätte gerne die Möglichkeit, PCM direkt an die Audio-Hardware meines Geräts zu senden. Es ist mir egal, dass die resultierende App nicht über den Marktplatz verteilt werden kann und wahrscheinlich nicht mit einem anderen Gerät als meinem laufen wird.
Hat jemand irgendwelche nützliche Ideen?
-Griff
EDIT: Ich sollte erwähnen, ich weiß, AudioTrack bietet diese Funktionalität, aber ich würde gerne viel niedrigere Latenz - AudioTrack sitzt rund 300ms, ich möchte irgendwo rund 20-30 ms.
Griff, das ist nur das Problem, NDK wird das bekannte Latenzproblem nicht verbessern (das ist sogar dokumentiert). Die Hardware-Abstraktionsschicht in nativem Code erhöht derzeit die Latenz, so dass es nicht nur um den Zugriff auf die Treiber niedriger Ebene geht (übrigens sollten Sie sich nicht darauf verlassen, dass alsa-Treiber sowieso vorhanden sind).
Android: Sound-API (deterministisch, geringe Latenz) deckt die Kompromisse ziemlich gut ab. TL: DR: NDK bietet Ihnen einen kleinen Vorteil, da die Threads mit höherer Priorität ausgeführt werden können, aber dieser Vorteil ist vor Jellybean bedeutungslos, da das gesamte Audiosystem auf Java abgestimmt ist.
Das Galaxy 4.1 mit 4.1 kann ziemlich nah an 30ms Ausgangslatenz kommen.
Tags und Links android android-ndk audio