我正在使用Codename One錄製麥克風輸入並將其播放回已連接的耳機。Codename One可以記錄麥克風輸入並同時播放嗎?
首先,如果我從麥克風將音頻錄製到文件,並在錄製結束時播放它,它會按預期工作。這就是爲什麼基於這個2014 question我實現了2個週期性任務(定時器和時間任務),只要2個文件:一個用於記錄,一個用於播放。我將週期性任務週期設置爲100 ms和幾秒之間的值,但在Android設備上的結果非常糟糕。確實存在着隨機差距,這根本不是光滑的,也是不可理解的。
我假設每個週期寫入文件的開銷太高,因此導致該行爲。所以using proper high-level Codename One methods似乎並不適合。
然後在2014年的相同問題中,請求者建議從錄製媒體創建輸入流,並將其用作播放媒體的輸入。但方法MediaManager.createMediaRecorderStream()
似乎不再可用。我試圖通過fs.openInputStream(recFilepath)
使用用於將播放媒體的音頻錄製爲InputStream的文件,但是它沒有在設備上輸出任何聲音或錯誤。
所以我的問題是我是否可以實現我的目標,只有Codename One或我必須使用本機接口?此外,Shai(在上面提到的2014年的問題中)寫道,MediaManager.createMediaRecorderStream()
的第二種方法可能適用於某些平臺:其中的android平臺還是隻針對iOS平臺?
任何幫助表示讚賞和抱歉沒有發佈的代碼,因爲我儘快嘗試清除似乎無法工作。所以我真的搞砸了我的代碼,它現在沒有做我最初的目標。
乾杯,
謝謝@Shai的輸入。它確實可以通過本機界面(至少對Android來說)。如何做到這一點在[我的其他SO問題]中描述(http://stackoverflow.com/questions/40447441/how-to-test-an-android-native-code-snippet-with-codename-one/40454439# 40454439)。延遲是可感知的,但結果實際上很棒。關於貢獻,你的意思是(重新)創建一個'createMediaRecorderStream()'方法,返回一個可以被createMedia()使用的Stream,或者創建一個直接將麥克風輸入回放到揚聲器的方法。 – HelloWorld
是的,如果您認爲我們可以改進我們的API實現中使用的Android本地方法,那麼您可以分叉項目並提供更好的本機Android'createMediaRecorderStream'實現 –