Mobile 使用Codename One是否可以录制麦克风输入并同时播放?

Mobile 使用Codename One是否可以录制麦克风输入并同时播放?,mobile,codenameone,audio-recording,Mobile,Codenameone,Audio Recording,我正在使用Codename One录制麦克风输入,并将其播放回连接的耳机 首先,如果我将麦克风中的音频录制到一个文件中,并在录制结束后播放,它就会正常工作。这就是为什么基于此,我实现了两个周期性任务(定时器和定时器任务),只要两个文件:一个用于录制,一个用于播放。我将周期任务周期设置为100毫秒到几秒钟之间,但在Android设备上的结果非常糟糕。确实存在随机的差距,这一点也不顺利,也不可理解 我假设每个周期写入文件的开销太高,因此会导致这种行为。因此,这似乎不是一条可行之路 然后在2014年的

我正在使用Codename One录制麦克风输入,并将其播放回连接的耳机

首先,如果我将麦克风中的音频录制到一个文件中,并在录制结束后播放,它就会正常工作。这就是为什么基于此,我实现了两个周期性任务(定时器和定时器任务),只要两个文件:一个用于录制,一个用于播放。我将周期任务周期设置为100毫秒到几秒钟之间,但在Android设备上的结果非常糟糕。确实存在随机的差距,这一点也不顺利,也不可理解

我假设每个周期写入文件的开销太高,因此会导致这种行为。因此,这似乎不是一条可行之路

然后在2014年的同一个问题中,请求者建议从记录媒体创建一个inputstream,并将其用作播放媒体的输入。但是,方法
MediaManager.createMediaRecorderStream()
似乎不再可用。我试图通过
fs.openInputStream(recFilepath)
将用于录制音频的文件用作播放媒体的输入流,但它没有在设备上输出任何声音或错误

所以我的问题是,我是否可以用裸代码名1实现我的目标,还是必须使用本机接口?此外,Shai(在2014年的上述问题中)写道,使用
MediaManager.createMediaRecorderStream()
的第二种方法可能适用于某些平台:android平台是其中之一,还是仅针对iOS平台

任何帮助,感谢和抱歉没有张贴代码,因为我清除了它,一旦尝试似乎不起作用。所以我真的把我的代码搞砸了,现在我的代码没有做我最初设定的任何事情


干杯,

据我回忆,当时的Android不支持媒体输入流,后来只允许以未压缩的WAV直接捕获输入,这使得全双工使用变得不切实际。这可能已经改变,因为我记得他们对媒体库进行了一些大修

我不确定这是否在我们的高级代码中公开。除了使用本机接口,您还可以通过分叉和破解来帮助我们改进Codename One,例如,这是Android项目中的相关代码:

这是Codename One的贡献指南,涵盖了在模拟器中运行,但这是一个良好的开端:


您可以在Android设备上测试您的更改,说明如下:

感谢@Shai的输入。这确实可以通过本机接口实现(至少对于Android是如此)。中介绍了如何执行此操作。延迟是可以感知的,但结果却是令人敬畏的。关于贡献,您的意思是(重新)创建一个
createMediaRecorderStream()
方法,该方法返回可由
createMedia()
使用的流,或者创建一个直接将麦克风输入播放到扬声器的方法?是,如果您认为我们可以改进API实现中使用的Android本机方法,那么您只需完成项目并提供本机Android的更好实现
createMediaRecorderStream