实现定制Android';s libaudio.so或;Android上的音频是如何工作的?”;

实现定制Android';s libaudio.so或;Android上的音频是如何工作的?”;,android,audio,shared-libraries,audioflinger,Android,Audio,Shared Libraries,Audioflinger,我正在发现Android>4.0,有一些问题我自己无法解决,也许你可以帮助我 我发现,一些市场应用程序,如“AlsaMixer”或“MixGet with ALSA”,将一个名为“libaudio.so”的库放入“/system/lib/”(有用户帮助) 我想知道发生了什么,搜索了一段时间后,似乎每个安卓公司都可以创建一个libaudio.so,它实现了一个特定的C++接口,并将它放到了那个路径中 Android然后将此库用于音频处理(存在 ALSA、TinyALSA和其他产品的实施情况) 但是

我正在发现Android>4.0,有一些问题我自己无法解决,也许你可以帮助我

我发现,一些市场应用程序,如“AlsaMixer”或“MixGet with ALSA”,将一个名为“libaudio.so”的库放入“/system/lib/”(有用户帮助)

我想知道发生了什么,搜索了一段时间后,似乎每个安卓公司都可以创建一个libaudio.so,它实现了一个特定的C++接口,并将它放到了那个路径中

Android然后将此库用于音频处理(存在 ALSA、TinyALSA和其他产品的实施情况)

但是:在我的手机上没有这样的libaudio。那么-这是如何工作的呢?否则怎么办? 我发现我在那个目录中有一个“libasound.so”,这是默认值吗

如果我尝试实现我自己的libaudio.so(目前我所知甚少),我可以引用其中的“默认”库吗

我想“嘿,世界上的每一部手机都有一个工作的音频实现,我只是想扩展它,而不是重新设计(重新配置)轮子?”

我的意思是:

AudioFlinger->my custom libaudio.so->默认库 (libasound.so?)->扬声器

如果我的手机上已经有libaudio.so怎么办

我真的很感激每一个有用的答案。 也许有人有我的地址,初学者可以理解


提前感谢并致以亲切的问候

我现在发现了一个很好的、可以理解的图形,其中有很多描述,例如音频是如何通过安卓系统传送的:

(第10+11页)


但也非常感谢t0mm13b,他阻止了我在libaudio上走错了路。所以。

对不起!您必须滚动自己的ROM以利用自定义库,因为整个Android系统使用回拨,并在AudioFlinger的上下文中与音频库进行内部交互。但是,如何在我的手机上安装/system/lib/libaudio.so和alsa配置文件的market working中的“AlsaMixer”(并且可以永久工作,无需重新启动!)?我有一个根设备-如果这很重要,让我们假设我想为根设备创建一个库。因为AlsaMixer应用程序,我确信一定有一种方法没有自定义ROM。为了工作,它说它需要根和BUSYBOX。大写!这就是它能够做到的!这意味着手机必须根。刚刚在pl上注意到ay store,它只在有限的设备上(顺便说一句,你的设备是什么?),有些还编译成它(特别是CM)并可能利用它…哦,是的,我的手机是Galaxy Nexus。我已经问过作者为什么它需要“BusyBox”(它只是一个工具箱?)但现在还没有得到答案。我很清楚,因为它需要将库放入系统路径。好的,让我们假设我将尝试找到一种方法,将传出的音频流传输到远程扬声器(我厨房中的Apple Airplay),但我会和其他人分享我的工作,所以不只是为我的手机做。我已经接受了一个问题,那就是它需要一个根手机——对我来说没有问题。我有什么机会?我相信,有一种方法(搜索了近一年):)Busybox是嵌入式世界中用户空间工具的外壳替代品(也可以在桌面上使用)例如
busybox-rm-rf…
busybox-cp-R…
它比Android上可用的标准用户空间工具适应性更强。