2012-03-23 149 views
0

我試圖通過創建一個android應用程序來錄製聲音。 這裏是代碼:使用android模擬器錄製聲音

這是輔助類

package com.recorder; 

import java.io.File; 
import java.io.IOException; 
import android.media.MediaRecorder; 
import android.os.Environment; 

public class AudioRecorder { 

final MediaRecorder recorder = new MediaRecorder(); 
final String path; 

/** 
* Creates a new audio recording at the given path (relative to root of SD card). 
*/ 
public AudioRecorder(String path) { 

    this.path = sanitizePath(path); 
    } 

    private String sanitizePath(String path) { 
    if (!path.startsWith("/")) { 
     path = "/" + path; 
    } 
    if (!path.contains(".")) { 
     path += ".3gp"; 
    } 

    return Environment.getDataDirectory().getAbsolutePath() + path; 
    } 

    public void start() throws IOException { 
    String state = android.os.Environment.getExternalStorageState(); 
    if(!state.equals(android.os.Environment.MEDIA_MOUNTED)) { 
     throw new IOException("SD Card is not mounted. It is " + state + "."); 
    } 

    // make sure the directory we plan to store the recording in exists 
    File directory = new File(path).getParentFile(); 
    if (!directory.exists() && !directory.mkdirs()) { 
     throw new IOException("Path to file could not be created."); 
    } 
recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 
recorder.setOutputFile(path); 
recorder.prepare(); 
recorder.start(); 
} 

/** 
* Stops a recording that has been previously started. 
*/ 
public void stop() throws IOException { 
recorder.stop(); 
recorder.release(); 
} 
} 

,這是我的活動:

package com.recorder; 

import java.io.IOException; 

import android.app.Activity; 
import android.media.MediaPlayer; 
import android.os.Bundle; 
import android.os.Environment; 
import android.view.View; 
import android.widget.ImageButton; 
import android.widget.Toast; 

public class RecorderActivity extends Activity { 
    MediaPlayer mp=new MediaPlayer(); 
    ImageButton mic; 
    private AudioRecorder recorder; 

    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 

    setContentView(R.layout.main); 

    recorder = new AudioRecorder("/Mysounds1");//here is the path 
    //to sdcard where we will save the recording 
    } 
    // Action listener for a button which record sound 
     public void mic(View view){ 
     Toast.makeText(this,"Recording started...",Toast.LENGTH_LONG).show(); 
     try { 
     recorder.start(); 
     } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
     } 
    } 

當我運行代碼,我得到以下異常:

java.io.IOException:未安裝SD卡。它被刪除。

我該如何解決這個問題?

回答

3

您還需要模擬SD卡。轉到AVD - >編輯 - > SD卡插槽中,給任何數字來模擬SD卡的內存量。完成

+0

問題被解決..但現在我得到新的異常: java.io.FileNotFoundException/Mysounds1(權限被拒絕) – Developer 2012-03-23 17:00:32

+1

這意味着該文件不存在於您的模擬SD卡。把你的文件推入SD卡,它應該可以工作。同時檢查DDMS的FIle EXplorer中的文件。 – Akhil 2012-03-23 17:24:03