0
我有一個庫,它可以記錄實時音頻並計算音頻的實時FFT數據。客戶端必須調用開始方法開始錄製,並使用停止方法結束錄製。音頻/ FFT庫設計
我的設計問題是關於將這些數據返回給客戶端的最佳方法。我已考慮以下方法:
- 有一種方法稱爲
getData(int size)
,客戶端將在它們開始記錄後定期調用。它將返回到最大音頻採樣的大小,或者儘可能多的數據。我的想法是,客戶端將運行AsyncTask
來定期調用更多數據。這種方法存在的問題是效率低得多,對客戶來說更加複雜,但它確實允許他們更多地控制他們收到的數據的時間和數量。 - 讓客戶端將一個輸出流傳遞給我的start方法,只要我有這個方法,我就會立即發送數據。這更簡單但更具限制性。
- 類似地,代替輸出流,客戶端會傳遞某種結構,如
ArrayList
,這些結構只會在我們之間共享,而我會將數據推送到該結構上。 - 最後,我想過讓我的啓動方法返回一個輸出流(或類似於
ArrayList
),客戶端只會讀取。
從客戶的角度來看,您更喜歡哪種?爲什麼?還是有其他一些我完全忽略的選擇?任何意見,將不勝感激,謝謝!