【发布时间】:2013-01-21 20:24:58
【问题描述】:
我目前正在发现 Android >4.0,并且有一些我自己无法弄清楚的问题,也许你可以帮助我。
我发现,一些市场应用程序,例如“AlsaMixer”或“MixGet with ALSA”,将一个名为“libaudio.so”的库放入“/system/lib/”(使用用户帮助)。
我想知道发生了什么,经过一段时间的搜索,似乎每个 Android 公司都可以创建一个 libaudio.so,它实现了某个 C++ 接口并将其放入该路径。
Android 然后将这个库用于音频处理(存在 ALSA、TinyALSA 等的实现)?
但是:在我的手机上没有这样的 libaudio.so - 它是如何工作的?否则采取什么措施? 我发现我在那个目录中有一个“libasound.so”,这是默认的吗?
如果我尝试实现自己的 libaudio.so(目前我的知识很少),我可以引用其中的“默认”库吗?
我认为“嘿,世界上每部手机都有一个有效的音频实现,我只想扩展它而不是重新设计(重新配置)轮子?”
我的意思是:
AudioFlinger -> 我的自定义 libaudio.so -> 默认库 (libasound.so?) -> 扬声器
如果我的手机上已经有 libaudio.so 怎么办?
我会非常感谢每一个有用的答案。 也许有人给我一个地址,初学者可以理解?
提前致谢和亲切的问候!
【问题讨论】:
-
对不起!您必须滚动自己的 ROM 才能利用自定义库,因为整个 Android 系统使用回调并在 AudioFlinger 的上下文中与音频库进行内部交互,即...
-
但是,怎么样?市场上的“AlsaMixer”在我的手机上安装 /system/lib/libaudio.so 和 alsa-config-file (并且永久工作且无需重新启动!)?我有一个有根设备 - 如果这很重要,假设我想为有根设备创建一个库。由于那个 AlsaMixer-app,我敢肯定一定有一种方法没有自定义 ROM。
-
为了使 AlsaMixer 工作,它以大写表示 ROOT & BUSYBOX REQUIRED。!这就是它能够做到的方式!意思是手机必须植根。刚刚在 play store 上注意到,它只在有限的设备上(顺便说一句,你的设备是什么?),有些人已经编译到它(特别是 CM)中,并且可能会利用它......
-
哦,是的,我的手机是 Galaxy Nexus。我已经问过作者为什么它需要“BusyBox”(它只是一个工具箱?)但现在得到了答案。生根对我来说很清楚,因为它需要将该库放入系统路径中。好的,假设我会尝试找到一种方法将传出的音频流式传输到远程扬声器(我厨房里的 Apple Airplay),但我会与其他人分享我的工作,所以不仅仅是为我的手机做。我已经接受了它需要有根电话的问题 - 对我来说没问题。我有什么机会?我敢肯定,有办法(搜索了将近 1 年):)
-
Busybox 是嵌入式世界中用户空间工具(也可以在桌面上使用)的 shell 替代品,例如
busybox rm -rf...或busybox cp -R ...,它比标准用户空间工具更具适应性可在 Android 上使用。
标签: android audio shared-libraries audioflinger