0

次のコードを使用してエミュレーターを介してオーディオを録音しようとすると

  AudioRecord recordInstance = new AudioRecord(
    MediaRecorder.AudioSource.MIC, this.getFrequency(), this
      .getChannelConfiguration(), this.getAudioEncoding(),
    bufferSize);

次に、logcat で次の例外が発生します。

12-16 19:07:31.680: INFO/jdwp(223): Ignoring second debugger -- accepting and dropping
12-16 19:07:31.700: ERROR/AudioHardware(34): Error opening input channel
12-16 19:07:31.720: WARN/AudioHardwareInterface(34): getInputBufferSize bad sampling rate: 11025
12-16 19:07:31.730: ERROR/AudioRecord(294): Recording parameters are not supported: sampleRate 11025, channelCount 1, format 1
12-16 19:07:31.730: ERROR/AudioRecord-JNI(294): Error creating AudioRecord instance: initialization check failed.

12-16 19:07:31.730: ERROR/AudioRecord-Java(294): [ android.media.AudioRecord ] Error code -20 when initializing native AudioRecord object.
12-16 19:07:31.730: WARN/dalvikvm(294): threadid=7: thread exiting with uncaught exception (group=0x4001d800)
12-16 19:07:31.770: ERROR/AndroidRuntime(294): FATAL EXCEPTION: Thread-8
12-16 19:07:31.770: ERROR/AndroidRuntime(294): java.lang.IllegalStateException: startRecording() called on an uninitialized AudioRecord.
12-16 19:07:31.770: ERROR/AndroidRuntime(294):     at android.media.AudioRecord.startRecording(AudioRecord.java:495)
12-16 19:07:31.770: ERROR/AndroidRuntime(294):     at com.prospeak.Recorder.run(Recorder.java:84)
12-16 19:07:31.770: ERROR/AndroidRuntime(294):     at java.lang.Thread.run(Thread.java:1096)

このコードのどこが間違っているか分かりますか?

4

7 に答える 7

3

サンプルレートが間違っている場合は、8000Hzを試してください。これはエミュレーターの制限です。

于 2010-12-16T13:50:27.863 に答える
2

また、AndroidManifest.xml で次の権限が設定されていることを確認してください。 <uses-permission android:name="android.permission.RECORD_AUDIO" />

于 2014-01-07T16:34:17.417 に答える
1

マニフェストにオーディオを録音する権限を登録していない場合は、エラーが発生します。

于 2010-12-16T14:35:43.430 に答える
0

であることを確認してくださいaudiorecord.getState() == initialized

そのリンクされた投稿のサンプル コード:

https://stackoverflow.com/questions/tagged/sample-rate+android

于 2011-08-11T14:55:20.743 に答える
0

みんなオーディオレコードのみで動作し、

    AudioRecord recorder = new AudioRecord(MediaRecorder.AudioSource.MIC,
            8000, AudioFormat.CHANNEL_CONFIGURATION_MONO,
            AudioFormat.ENCODING_PCM_16BIT, 500000);
    recorder.startRecording();

私はそれを長い間検索し、最後にそれを見つけましたが、ノイズしか発生しません。良質のオーディオを取得してみてください

于 2011-08-24T02:55:09.617 に答える
0

エラーは次のとおりです。

getInputBufferSize bad sampling rate: 11025

別のサンプルレートが必要です。例外がなくなるまで、潜在的なサンプル レートをループできます。

エミュレーターから記録しようとする限り、Android 開発者サイトには不可能と書かれているので、電話からテストするか、事前に記録されたサンプルを使用するのがおそらく最善でしょう。

于 2010-12-20T08:58:27.207 に答える