0

リアルタイム オーディオを録音し、オーディオのリアルタイム FFT データを計算するライブラリがあります。クライアントは、記録を開始するには start メソッドを呼び出し、記録を終了するには stop メソッドを呼び出す必要があります。

私の設計上の質問は、このデータをクライアントに戻す最善の方法に関するものです。次のアプローチを検討しました。

  1. getData(int size)クライアントが記録を開始した後に定期的に呼び出すメソッドを呼び出します。最大サイズのオーディオ サンプル、または利用可能なデータを返します。これについての私の考えは、クライアントが を実行してAsyncTask、より多くのデータを定期的に呼び出すことです。このアプローチの問題点は、効率が大幅に低下し、クライアントにとってより複雑になることですが、いつ、どのくらいのデータを受信するかをより詳細に制御できます。
  2. クライアントに出力ストリームを start メソッドに渡させ、データを取得したらすぐにデータを送信します。これはより単純ですが、より制限的です。
  3. 同様に、出力ストリームの代わりに、 のようなある種の構造をクライアントに渡します。この構造は、ArrayList私たちの間で共有され、データをプッシュします。
  4. 最後に、クライアントが読み取る出力ストリーム (またはArrayList同様のもの) を start メソッドに返させることを考えました。

クライアントの観点から、どちらを好みますか?またその理由は何ですか? または、私が完全に見落としている他の選択肢はありますか? 任意の入力をいただければ幸いです、ありがとう!

4

1 に答える 1

1

1- 呼び出して定期的にデータをチェックgetDataすると、クライアントが非効率的で複雑になるため、これはお勧めしません。

2-共有の使用MemoryStreamは調査可能なソリューションです

別の代替の、おそらくもっと簡単な解決策はcallback、新しいデータが利用可能になるたびに呼び出されるライブラリにオブジェクトを渡すことです。つまり、event-driven通信です。

于 2013-03-01T20:07:15.020 に答える