2

この問題は、Motorolaマイルストーンでのみ発生します。コード:

// init recorder
recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
    8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
    AudioFormat.ENCODING_PCM_16BIT, 8000);

recordInstance.startRecording();

//more code here

recordInstance.stop();

私が持っているエラー情報(デバッグのためのマイルストーンを自分で持っていないので、今のところこれ以上見つけることができません):

Uncaught handler: thread main exiting due to uncaught exception
java.lang.IllegalStateException: stop() called on an uninitialized AudioRecord.
at android.media.AudioRecord.stop(AudioRecord.java:51 6)

明らかに、この問題を抱えているのは私だけではありません。私が見つけたいくつかの非常によく似たスレッド(解決策なし):

http://groups.google.com/group/android-developers/browse_thread/thread/6dd24aeb484b2e40 http://web.archive.org/web/20100824043744/http://androidcommunity.com:80/forums/f2/problem -using-audiorecord-in-motorola-milestone-30935 / http://community.developer.motorola.com/t5/Android-App-Development-for/Problem-using-AudioRecord-on-Milestone-device/mp/3889 http://www.fring.com/forums/showthread.php?t=16194 http://groups.google.com/group/android-developers/browse_thread/thread/63be273ba59c635e/1c4a010fd470d328

4

4 に答える 4

1

これは機能するはずです:

recordInstance = new AudioRecord(MediaRecorder.AudioSource.MIC,
16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, 16000);

標準のサンプルレートhttp://en.wikipedia.org/wiki/Sampling_rate#Audioに固執するだけです。マイルストーンが8ビットエンコーディングでの記録をサポートしていないのはなぜだろうか。これも私にエラーを与えます-「無効なオーディオフォーマット」。

于 2011-01-04T19:02:55.320 に答える
0

まず、デバッグメッセージが言っているように、ストップの上にtry catchブロックを置いてみてくださいと書かれているように、録音はIllegalStateに入ります。

おそらく、uが例外をキャッチできれば、問題が何であるかを知ることができます。

于 2010-05-04T13:53:51.003 に答える
0

問題はパラメータではありません。問題はモトローラのAndroidのいじくり回しのバグです。モードがIN_CALLの場合、AudioRecordは適切に作成されません。MODE_NORMALの場合は問題ありません。

これは、Motorolasコードの何かが、IN_CALLモードのときに入力を占有するためです。

于 2011-03-29T12:09:59.130 に答える
0

理論的には、音声サンプリングは8kHzであるため、hcplのコードは機能するはずですが、一部のAndroidデバイスはそれを受け入れません。

Android Developers Webサイトから、狂った答えを完成させます。

sampleRateInHz int:ヘルツで表されたサンプルレート。現在、44100Hzがすべてのデバイスで動作することが保証されている唯一のレートですが、22050、16000、11025などの他のレートが一部のデバイスで動作する場合があります。AudioFormat.SAMPLE_RATE_UNSPECIFIEDは、ルートに依存する値を使用することを意味します。これは通常、ソースのサンプルレートです。getSampleRate()を使用して、選択した実際のサンプルレートを取得できます。

于 2018-10-11T12:32:24.550 に答える