2012-01-03 10 views
3

上のMediaPlayerを持つレコードのオーディオ私はこのコードでAndroidのエミュレータ上でマイクから音声を録音しようとしています:オーディオを停止させるためのアンドロイド:エミュレータ

recorder = new MediaRecorder(); 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(Environment.getExternalStorageDirectory() + "/test/test.3gp"); 
try { 
    recorder.prepare(); 
} 
catch (IOException io) { 
    Log.v(LOG_TAG, "Could not prepare the audio " + io.getMessage()); 
} 
recorder.start(); 

、これはコードです:

recorder.stop(); 
recorder.reset(); 
recorder.release(); 

録音プロセスは正常に機能しますが、結果として生じるオーディオは歪んでいます。 60秒間のオーディオを録音して再生すると、再生時間は120秒と表示されます。測定は正確ではありませんが、これはあなたにアイデアを与えることです。

エミュレータでAMR_NBエンコーダのみが動作しています。私はさまざまな出力形式を試しましたが、結果は常に同じです。

エミュレータの制限事項ですか、ここで何か間違っていますか?

編集1: AudioRecordクラスも試しましたが、結果は同じドラッグオーディオです。

ありがとうございました。

答えて

1

私は同じのために働いて、次のコードを使用してみて、解決策を発見されました:これはperfactly取り組んでいる

private void startRecording() 
    { 

     this.recorder = new MediaRecorder(); 
     this.recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     this.recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
     this.recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
     MediaRecorder.getAudioSourceMax(); 
     this.recorder.setOutputFile(this.getFilename()); 
     this.recorder.setOnErrorListener(this.errorListener); 
     this.recorder.setOnInfoListener(this.infoListener); 

     try 
     { 
      this.recorder.prepare(); 
      this.recorder.start(); 
     } catch (final IllegalStateException e) 
     { 
      e.printStackTrace(); 
     } catch (final IOException e) 
     { 
      e.printStackTrace(); 
     } 
    } 

を。希望はそれをあなたに役立ちます:)

+0

ありがとう!私にとって運がない。私は "MediaRecorder.getAudioSourceMax();"を追加しました。オーディオは引き続きドラッグされます。参考までに、私はAndroid 4.0.3、APIレベル15、MacのARMエミュレータでこれを試しています。 – Srisa

関連する問題