0
미디어 레코더가 prepare() 행에서 중지됩니다. Log cat은 start() 행에 "invalid state 4"라고 표시되어 출력 파일에 문제가있는 것 같습니다. 나는 내 표현 - 워치 가드 나를 위해 확인을 소리 mFileName은 "/mnt/sdcard/lastConversateRecord.3gp"저를 보여줍니다mediaRecorder 단편, 준비가 실패 함, 유효하지 않은 상태 4
mFileName = Environment.getExternalStorageDirectory() + "/lastConversateRecord.3gp";
내 출력 파일을 구현했습니다.
내 audiorecorder는 정기적 인 작업을했으나 파편으로 바뀌었기 때문에 공격을 받았습니다.
내 매니페스트에서 Record_Audio + WRITE_EXTERNAL_STORAGE 권한을 부여했습니다.
여기 내 코드가 있습니다. 내게 힌트가 있습니까? 고맙습니다!
public class Fragment_2 extends SherlockFragment{
private MediaRecorder mRecorder = null;
private String mFileName;
private String TAG = "App";
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_2, container, false);
Button r1 = (Button) view.findViewById(R.id.record);
r1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//mFileName = getActivity().getExternalCacheDir() + File.separator + System.currentTimeMillis() + ".3gp";
mFileName = Environment.getExternalStorageDirectory() + "/lastConversateRecord.3gp";
Log.d(TAG, "Record started");
mRecorder = new MediaRecorder();
mRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
mRecorder.setOutputFile(mFileName);
mRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
try {
mRecorder.prepare();
} catch (IOException e) {
Log.e(TAG, "prepare() failed");
}
mRecorder.start();
}
});
return view;
}
}