2014-04-20 3 views
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; 

    } 
} 

답변

0

해결책 : 저는 에뮬레이터 공간을 sdcard에 제공해야했습니다.

관련 문제