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(); } }
감사합니다,하지만 내 4.0Android 에뮬레이터가 작동하지 않습니다. 이유는 모르겠지만 SDK를 업데이트했지만 출시하려고 할 때 충돌이 발생합니다. Android Emulator 4와 작동하도록 Eclipse를 업데이트해야합니까? – AlexAndro
예, ADT를 업데이트해야합니다. Eclipse로 이동하여 "도움말"메뉴를 선택하고 "업데이트 확인"을 선택한 다음 ADT를 업데이트하십시오. – Jong
SDK가 완전히 업데이트되고 모든 Android4.0 기능이 설치되며 사용할 수있는 업데이트가 없지만 여전히 이상한 행동을합니다. 사람들이 저장소 위치에 문제가 있는지 확인하기 위해 계속 기다리고 있습니다. 감사. – AlexAndro