当AudioRecord运行时,本机线程永远不会获得处理器时间

时间:2013-02-26 14:25:55

标签: multithreading android-ndk android-audiorecord

我正在申请一些语音处理。对于语音录制使用Android AudioRecord类。 AudioRecord实例放在服务中。一个单独的线程用于调用read()类的AudioRecord方法(SO上有足够的示例)。读取样本转发到我的本机代码以进行进一步处理,并将它们放入某个队列中。在本机代码中,一个线程正在进行处理。问题是这个线程永远不会得到处理器时间。 完成我的应用程序后,我调用一些功能来清理我的本机资源。但事实上整个清洁过程没有完成(我使用调用建立它)。当我再次启动应用程序时,我的原生处理开始了(读取新样本尚未开始)。

阅读线程是否可能仅为自己使用处理器?我可以为我的本机(处理器)线程设置更高的优先级。或者它可能是其他一些问题。

我甚至尝试使用AudioRecord.OnRecordPositionUpdateListeneronPeriodicNotification,但没有成功。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案。这是我移植的库中的一个错误。处理块之一调用sleep方法。该库首先在windows下使用,休眠时间以毫秒为单位。移植后此时间为秒。所以我的本机线程正在睡50秒而不是50毫秒。