HandlerThread和Handler:如何使用AudioRecord.setRecordPositionUpdateListener?

时间:2015-05-15 12:10:14

标签: android multithreading handler audiorecord android-handlerthread

我对HandlerHandlerThread类的使用感到困惑。我尝试使用它们的原因是我想使用AudioRecord类及其setRecordPositionUpdateListener方法(reference)。方法描述说:

  

使用此方法接收与另一个线程相关联的Handler中的AudioRecord事件,而不是您创建AudioTrack实例的线程。

这正是我想要的 - 在主线程中设置AudioRecord,但在工作线程中接收数据。我想我需要一个HandlerThread所以我创建并开始了一个。我还定义了一个实现AudioRecord.OnRecordPositionUpdateListener接口的回调方法。我希望从worker HandlerThread调用此回调。我现在不明白的是如何创建传递给Handler的{​​{1}}。

1 个答案:

答案 0 :(得分:3)

要将Handler与某个主题相关联,您应该通过在constructor中传递相应的Looper来创建它。因此,如果您已经有HandlerThread,则可以通过以下方式完成:

Looper looper = myHandlerThread.getLooper();
Handler handler = new Handler(looper);

就是这样,只需在setRecordPositionUpdateListener方法中使用此处理程序,并在工作线程中执行回调。如果您需要对HandlerLooperHandlerThread进行更多说明,可以查看here