Android应用程序间的流媒体音频
你好,溢出堆栈的圣贤们,这里是Android noob 我正在使用CSipSimple,希望将呼叫音频以1秒音频数据块的形式传输到另一个应用程序,以便它能够处理原始pcm数据。 CSipSimple中处理音频的代码是本机代码,因此我更喜欢使用本机方法,而不是回调Java。 我想到了几种方法: 使用音频流,让其他应用程序获得它。 将数据写入文件并让其他应用程序读取。 在其他应用程序AIDL中调用服务 使用意图。 以下是导致我的难题的考虑因素: 流媒体看起来是自然选择,但我找不到Android支持从音频流检索原始pcm数据。意图机制是灵活和方便的,但我不认为这就是它们的目的。使用一个文件似乎很麻烦,尽管它得到了很好的支持。最后,使用服务似乎是一个不错的选择,但它似乎不够灵活,可能需要更多的错误处理和线程管理 你们能指出最好的选择吗?Android应用程序间的流媒体音频,android,android-intent,streaming,sip,aidl,Android,Android Intent,Streaming,Sip,Aidl,你好,溢出堆栈的圣贤们,这里是Android noob 我正在使用CSipSimple,希望将呼叫音频以1秒音频数据块的形式传输到另一个应用程序,以便它能够处理原始pcm数据。 CSipSimple中处理音频的代码是本机代码,因此我更喜欢使用本机方法,而不是回调Java。 我想到了几种方法: 使用音频流,让其他应用程序获得它。 将数据写入文件并让其他应用程序读取。 在其他应用程序AIDL中调用服务 使用意图。 以下是导致我的难题的考虑因素: 流媒体看起来是自然选择,但我找不到Android支持从
如果您有另一个,欢迎您分享。我不知道流式音频API支持,因此我不涉及此案例。 至于将数据写入文件并让其他应用程序读取,这是一种解决问题的可能方法 至于通过AIDL调用服务和使用意图,我认为这不是一个好的解决方案。问题是Binder对事务中可以传递的1MB数据的大小有限制 在我看来,最好的解决方案是使用AshMem,特别是如果您使用的是native。这是专门为Android开发的共享内存驱动程序。因此,在您的服务中,您创建了一个共享内存区域,并将对该区域的引用传递到从该内存读取信息的客户端应用程序中