【问题标题】:HandlerThread and Handler: how to use AudioRecord.setRecordPositionUpdateListener?HandlerThread和Handler:如何使用AudioRecord.setRecordPositionUpdateListener?
【发布时间】:2015-05-15 12:10:14
【问题描述】:

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

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

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

【问题讨论】:

    标签: android multithreading handler audiorecord android-handlerthread


    【解决方案1】:

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

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

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

    【讨论】:

    • 确实很简单!我只是在查看Handler 文档,在我看来,我必须实现它的一些方法来创建Handler 实例,即。 e.我不知何故认为这是一个界面。感谢您的澄清。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-07
    • 1970-01-01
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    相关资源
    最近更新 更多