2011-10-31 2 views
1

Android 에뮬레이터를 사용하여 소리를 녹음하려고합니다. 나는이 질문이 인터넷을 통해 대중적이라는 것을 알고, 나는 많은 게시물을 조사했다. 오직 한 사람 만이 성공했다고 생각한다 : Can the Android emulator record and play back audio using pc hardware?. (; 문자열 fTmpFile하는 것은 아니고,Android 에뮬레이터에서 MediaRecorder를 사용할 수 없습니다. 저장 위치가 잘못 되었습니까?

나는 또한 시도 그가

파일 fTmFile을 사용 생각한다). 필립의 충고와 공식 사이트 튜토리얼 http://developer.android.com/guide/topics/media/audio-capture.html과 다른 자료들에 이어, 나는 아직도 기록 할 수 없다. 내 응용 프로그램이 줄에서 예외가 발생합니다 :

fMediaRecorder.prepare(); 

더 exactley, 이것은 내가 먼저 무엇을 얻을 수 있습니다 :

W/System.err에 (1042) : java.io.FileNotFoundException :/MNT/SDCARD/심지어 내가 크기 256 MiB 크기와 에뮬레이터에 대한 'SD 카드 지원'속성을 추가하기 때문에 audiorecordtest.3gp, 나를 생각하게

은 저장 위치에 뭔가 문제가있다 (권한 거부), 나는 액세스를 할 수 아니에요 그것도, 에뮬레이터에서 메시지를 볼 수 있습니다 : "귀하의 휴대 전화 음악을 들었을 때 SD 카드가 삽입되어 있지 않습니다.

AndroidManifest.xml에 오디오 레코드와 외부 저장소 권한을 추가하고 Windows 7의 에뮬레이터 2.3.3에 오디오 (레코드 + 재생) 하드웨어 설정을 모두 추가했습니다. 내 앱에서 잘못된 점이 있습니까? 파일이나 다른 것? 제발, 만약 누군가가 자유롭게 공유 할 생각이 있다면, 그것은 인정 될 것입니다.

다음은 전체 소스 코드입니다

import java.io.File; 
import java.io.FileDescriptor; 
import java.io.IOException; 
import android.app.Activity; 
import android.media.MediaRecorder; 
import android.os.Bundle; 
import android.os.Environment; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.Toast; 

public class RecordSoundActivity extends Activity { 

    private MediaRecorder fMediaRecorder = null; 
    private Button btnrecord; 
    private Button btnstop; 
    String fTmpFile; 

    public RecordSoundActivity() { 

    fTmpFile = Environment.getExternalStorageDirectory().getPath(); 
    fTmpFile += "/audiorecordtest.3gp"; 
    } 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    btnrecord = (Button) findViewById(R.id.button1); 
    btnstop = (Button) findViewById(R.id.button2); 

    btnrecord.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     Toast.makeText(RecordSoundActivity.this, "Recording...", Toast.LENGTH_LONG).show(); 
     Recording(); 
     } 
    }); 

    btnstop.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
     // TODO Auto-generated method stub 
     fMediaRecorder.stop(); 
     fMediaRecorder.release(); 
     } 
    }); 
    } 

    public void Recording() { 
    fMediaRecorder = new MediaRecorder(); 
    fMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    fMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
    fMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 

    fMediaRecorder.setAudioChannels(1); 
    fMediaRecorder.setAudioSamplingRate(8000); 

    fMediaRecorder.setOutputFile(fTmpFile); 

    try { 
     fMediaRecorder.prepare(); 
    } catch (IOException e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 
    try { 
     fMediaRecorder.start(); 
    } catch (IllegalStateException e) { 
     // TODO: handle exception 
     e.printStackTrace(); 
    } 

    //fMediaRecorder.stop(); 
    //fMediaRecorder.release(); 
    } 
} 

답변

0

시도하고 안드로이드 4.0 작동되는지 확인합니다. 에뮬레이터의 카메라에 문제가 있다는 것을 알고 있습니다. 낮은 버전 (4.0 이하)에서는 노트북 웹캠을 인식하지 못합니다. 그러나 4.0에서 AVD를로드 할 때 팝업 메시지가 나타나 웹캠을 AVD에 연결할지 묻는 메시지가 나타나고 동의했다면 동의했습니다.

SO의 또 다른 포스터는 카메라에 관한이 질문도했고 AVD 버전을 4.0으로 변경하면 도움이되었습니다.

두 가지 모두 일반적인 PC의 외부 하드웨어이므로 오디오 녹음의 경우에도 마찬가지입니다.

+0

감사합니다,하지만 내 4.0Android 에뮬레이터가 작동하지 않습니다. 이유는 모르겠지만 SDK를 업데이트했지만 출시하려고 할 때 충돌이 발생합니다. Android Emulator 4와 작동하도록 Eclipse를 업데이트해야합니까? – AlexAndro

+0

예, ADT를 업데이트해야합니다. Eclipse로 이동하여 "도움말"메뉴를 선택하고 "업데이트 확인"을 선택한 다음 ADT를 업데이트하십시오. – Jong

+0

SDK가 완전히 업데이트되고 모든 Android4.0 기능이 설치되며 사용할 수있는 업데이트가 없지만 여전히 이상한 행동을합니다. 사람들이 저장소 위치에 문제가 있는지 확인하기 위해 계속 기다리고 있습니다. 감사. – AlexAndro

관련 문제