【发布时间】:2013-02-12 01:07:37
【问题描述】:
我正在申请一些语音处理。语音录制使用 Android AudioRecord 类。 AudioRecord 实例被放入服务中。一个单独的线程用于调用AudioRecord 类的read() 方法(SO 上有足够的示例)。读取的样本被转发到我的本机代码以进行进一步处理,并将它们放入某个队列中。在本机代码中,一个线程正在执行处理。问题是这个线程永远不会得到处理器时间。
在完成我的应用程序后,我调用了一些函数来清理我的原生资源。但是碰巧整个清洁过程还没有完成(我使用调用建立了它)。当我再次启动应用程序时,我的本机处理已启动(尚未开始读取新样本)。
读取线程是否可能只为自己使用处理器?我可以为我的本机(处理器)线程设置更高的优先级吗?或者可能是其他问题。
我什至尝试过使用AudioRecord.OnRecordPositionUpdateListener 和onPeriodicNotification,但没有成功。
【问题讨论】:
-
您是否尝试过附加执行处理的本机线程,看看这是否让它被安排?你有多少本机线程在工作?你如何附加访问队列的那个?
-
我只有一个本地线程。我没有附加访问队列的线程,因为我没有来自 java 代码的任何信息。我为什么要这样做?
标签: multithreading android-ndk android-audiorecord