1
recorder = new MediaRecorder();

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC );
    recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);



recorder.setMaxDuration(10000 * 10); 
recorder.setOnInfoListener(null); 
recorder.setOutputFile(s+"/sh1.3gp");
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);


    try {  
        recorder.setAudioSamplingRate(TRIM_MEMORY_BACKGROUND);
        recorder.setAudioChannels(1);
        recorder.prepare(); 
        recorder.start();
        }  
    catch (Exception e2) {
            tv.setText("OHH"+e2.toString());

            } 

以上是播放录音机的代码。当我启动录音机时,它启动失败:

但是文件 sh1.3gp(一个 3gp 文件)文件是在 android sd 卡中创建的...... 请回复我的解决方案

4

2 回答 2

0

您是否在模拟器上运行此代码?如果是这样,您必须尝试在真实设备上运行,因为您无法在不更改其设置的情况下使用模拟器保存音频。更简单的方法是在真实(硬件)设备上进行测试。

于 2012-09-05T07:14:18.733 回答
0

试试这个代码来录制音频。创建记录器的对象。和
文件 audioFile=null;

File sampleDir = Environment.getExternalStorageDirectory();
try {
audiofile = File.createTempFile("Recording", ".3gp", sampleDir);
recorder = new MediaRecorder();
recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    recorder.setOutputFile(audiofile.getAbsolutePath());
    recorder.prepare();
recorder.start();  
    }
    catch (IOException e)
   {
   Log.e(TAG, "sdcard access error");
   return;
}

您可以使用以下代码将此音频保存在 SD 卡中。

audioFileName=input.getText().toString();
current = System.currentTimeMillis();
String artist = "" + getResources().getText(R.string.artistName);
ContentValues values = new ContentValues();
values.put(MediaStore.MediaColumns.DATA, audiofile.getAbsolutePath());
values.put(MediaStore.MediaColumns.TITLE, audioFileName);
values.put(MediaStore.Audio.Media.DATE_ADDED,  current );
values.put(MediaStore.MediaColumns.MIME_TYPE, "audio/3gpp");
values.put(MediaStore.Audio.Media.ARTIST, artist);              
values.put(MediaStore.Audio.Media.DATA, audiofile.getAbsolutePath());
ConntentResolver contentResolver = getContentResolver();
Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
Uri newUri1 = contentResolver.insert(base, values);
于 2012-09-05T07:34:53.467 回答