2016-04-26 57 views
0

我正在開發一個小型實時應用程序來記錄聲波。它有兩個模塊:錄音,收聽。 這裏是它應該如何工作:Java - 記錄和捕獲

  1. 程序開始監聽。
  2. 聲波到達。
  3. 該程序識別信號已到達,並開始 記錄它。
  4. 當信號結束(沒有更大的聲音)時,程序停止記錄並將結果保存到文件中。

因此,爲了識別信號何時結束 - 我們應該隨着錄音一起聽波(捕捉),以便我們可以檢測聲音何時結束。

爲了實現這一點,iv'e使用的Java API的聲音,但我有一個問題:

  • 目標數據線對象被記錄線程和所述捕獲 - 之間共享線程。在這種情況下,兩個線程在同一個目標數據行上工作:捕獲和記錄器線程。 哪些情況下存在一些實時問題。

我試圖打開兩個目標數據行,一個用於記錄,另一個用於捕獲,但是當試圖打開第二個目標時,程序會引發異常。

我該如何解決這個問題? 請幫忙。

回答

0

您需要使用一個可以獨佔訪問TargetDataLine的線程。然後,此線程可以生成您的錄製和偵聽線程可以訂閱的事件。