2

後で処理するためにマイクから音声を録音するアプリケーションを構築しようとしています。

次の問題を除いて、すべてがかなりうまく機能します: 音声通話 (インとアウト) の間、録音されたファイルはオーディオ データを取得せず、NULL だけが含まれます。

私は AudioRecorder と MediaRecorder を使用していますが、どちらも同じ問題を抱えています。問題は、これが通常の API の動作なのか、それとも何か不足しているのかということです。

ここにいくつかの追加情報があります: パーミッション:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />

SDK: minSdkVersion="9" targetSdkVersion="15"

Jelly Bean を使用して Nexus S でアプリケーションをテストしています。

前もって感謝します!

PS誰かがより具体的な詳細を必要とする場合は、私に知らせてください.

編集

OK、すべての回答はこれが正常な動作であることを示唆していますが、マイクを使用して音声通話を録音するアプリケーションがたくさんあるので、まだ戸惑っています. 音声通話を録音するつもりはありませんが、音声通話中でもマイクを使用できると思いました。助言がありますか?

編集

Galaxy S Gingerbreadでアプリケーションをテストしたところ、うまくいきました! 今、私は本当に困惑しており、「セグメンテーション」という言葉が何を意味するのか理解し始めています...

4

3 に答える 3

2

これを通常とは呼びませんが、ここではプラットフォーム固有の動作を入力しています。AudioSource.MIC音声通話中にで録音することは、一部のデバイスでは機能しますが、他のデバイスでは機能しません。

この機能が無効になっている可能性がある理由について、私が遭遇したいくつかの理由を挙げてください。

  • 一部のプラットフォームは、常に単一のサンプルレートでのマイクオーディオのキャプチャのみをサポートしています。また、音声通話は他の何よりも優先され(結局のところこれ電話です)、音声通話には8または16 kHzのサンプルレートが必要なため、音声通話の開始時に録音を継続している場合の対処方法は、単純に決定する必要があります。たとえば、アプリが44.1 kHzを取得していると判断したときに、録音が8 kHzデータで満たされないように、録音をミュートします。

  • 音声通話中にレコーダーをアイドル状態(停止しているが解放されていない)のままにすると、一部のプラットフォームでマイクからの音声データの転送が停止し、音声通話のアップリンクが効果的にミュートされる場合があります。これを回避するために、ベンダーは、音声通話中の録音は実際にはどの入力デバイスにもルーティングされず、ゼロで埋められると決定した可能性があります。

免責事項:私はNexus Sを使用したことがないので、その特定のデバイスの理由がわかりません。

于 2012-08-03T13:08:11.280 に答える
0

これは正常な動作だと思います。CALL が接続されている間の音声データは、Android が実行されているアプリケーション プロセッサを介して処理されることはありません。通常、オーディオ チップセットはモデムからのストリームに切り替えます。

于 2012-08-02T11:34:46.613 に答える
0

理論的には、通話自体からフィードを取得できます (http://stackoverflow.com/questions/4194342/how-can-i-record-voice-and-record-call-in-android) が、ほとんどのメーカーは明らかにこれをサポートしないでください。

于 2012-08-02T11:37:34.957 に答える