我正在申请一些语音处理。对于语音录制使用Android AudioRecord
类。 AudioRecord
实例放在服务中。一个单独的线程用于调用read()
类的AudioRecord
方法(SO上有足够的示例)。读取样本转发到我的本机代码以进行进一步处理,并将它们放入某个队列中。在本机代码中,一个线程正在进行处理。问题是这个线程永远不会得到处理器时间。
完成我的应用程序后,我调用一些功能来清理我的本机资源。但事实上整个清洁过程没有完成(我使用调用建立它)。当我再次启动应用程序时,我的原生处理开始了(读取新样本尚未开始)。
阅读线程是否可能仅为自己使用处理器?我可以为我的本机(处理器)线程设置更高的优先级。或者它可能是其他一些问题。
我甚至尝试使用AudioRecord.OnRecordPositionUpdateListener
和onPeriodicNotification
,但没有成功。
答案 0 :(得分:0)
我找到了解决方案。这是我移植的库中的一个错误。处理块之一调用sleep
方法。该库首先在windows下使用,休眠时间以毫秒为单位。移植后此时间为秒。所以我的本机线程正在睡50秒而不是50毫秒。