2012-03-23 8 views
0

アンドロイドアプリケーションを作成してサウンドを録音しようとしています。ここ はコードです:アンドロイドエミュレータを使用してサウンドを録音する

これは

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

あなたはまた、sdcardをエミュレートする必要があります。 AVD - >編集 - > SDカードスロットに移動し、その数をsdcardとしてエミュレートする番号を付けます。 Done

+0

問題がスローされましたが、今では新しい例外が発生します: java.io.FileNotFoundException/Mysounds1(許可が拒否されました) – Developer

+1

これは、ファイルがエミュレートされたsdcardに存在しないことを意味します。あなたのファイルをSDカードにプッシュするとうまくいくはずです。また、DDMSのFIle EXplorerからファイルをチェックしてください。 – Akhil

関連する問題