Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/181.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android应用程序间的流媒体音频_Android_Android Intent_Streaming_Sip_Aidl - Fatal编程技术网

Android应用程序间的流媒体音频

Android应用程序间的流媒体音频,android,android-intent,streaming,sip,aidl,Android,Android Intent,Streaming,Sip,Aidl,你好,溢出堆栈的圣贤们,这里是Android noob 我正在使用CSipSimple,希望将呼叫音频以1秒音频数据块的形式传输到另一个应用程序,以便它能够处理原始pcm数据。 CSipSimple中处理音频的代码是本机代码,因此我更喜欢使用本机方法,而不是回调Java。 我想到了几种方法: 使用音频流,让其他应用程序获得它。 将数据写入文件并让其他应用程序读取。 在其他应用程序AIDL中调用服务 使用意图。 以下是导致我的难题的考虑因素: 流媒体看起来是自然选择,但我找不到Android支持从

你好,溢出堆栈的圣贤们,这里是Android noob

我正在使用CSipSimple,希望将呼叫音频以1秒音频数据块的形式传输到另一个应用程序,以便它能够处理原始pcm数据。 CSipSimple中处理音频的代码是本机代码,因此我更喜欢使用本机方法,而不是回调Java。 我想到了几种方法:

使用音频流,让其他应用程序获得它。 将数据写入文件并让其他应用程序读取。 在其他应用程序AIDL中调用服务 使用意图。 以下是导致我的难题的考虑因素: 流媒体看起来是自然选择,但我找不到Android支持从音频流检索原始pcm数据。意图机制是灵活和方便的,但我不认为这就是它们的目的。使用一个文件似乎很麻烦,尽管它得到了很好的支持。最后,使用服务似乎是一个不错的选择,但它似乎不够灵活,可能需要更多的错误处理和线程管理

你们能指出最好的选择吗?
如果您有另一个,欢迎您分享。

我不知道流式音频API支持,因此我不涉及此案例。 至于将数据写入文件并让其他应用程序读取,这是一种解决问题的可能方法

至于通过AIDL调用服务和使用意图,我认为这不是一个好的解决方案。问题是Binder对事务中可以传递的1MB数据的大小有限制

在我看来,最好的解决方案是使用AshMem,特别是如果您使用的是native。这是专门为Android开发的共享内存驱动程序。因此,在您的服务中,您创建了一个共享内存区域,并将对该区域的引用传递到从该内存读取信息的客户端应用程序中