2013-06-11 6 views
0

이제 응용 프로그램을 사용하여 주 스레드가 아닌 Android 서비스로 녹음을 시작합니다. 하지만이를 사용하여 서비스를 중지 한 후 : 여기 질문 을 찾을Android 서비스를 사용하여 오디오 녹음 - 파일이 생성되지 않았습니다.

private MediaRecorder recorder; 
@Override 
public IBinder onBind(Intent arg0) { 
    // TODO Auto-generated method stub 
    return null; 
} 



@Override 
public void onStart(Intent intent, int startId) { 
    startRecording();  
    super.onStart(intent, startId); 
} 



@Override 
public void onDestroy() { 
    stopRecording(); 
    stopSelf(); 
    super.onDestroy(); 
} 

private void startRecording(){ 

    try { 
    recorder = new MediaRecorder(); 

    recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
    recorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4); 
    recorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); 


    Date today = Calendar.getInstance().getTime();  
    Format formatter = new SimpleDateFormat("yyyy-MM-dd_HH:mm:ss"); 
    String reportDate = formatter.format(today); 


    File instanceRecordDirectory = new File(Environment.getExternalStorageDirectory() + File.separator + "sound"); 

    if(!instanceRecordDirectory.exists()){ 
     instanceRecordDirectory.mkdirs(); 
    } 

    File instanceRecord = new File(instanceRecordDirectory.getAbsolutePath() + File.separator + reportDate + "_Recondsound.mp4"); 
    if(!instanceRecord.exists()){ 
     instanceRecord.createNewFile(); 
    } 
    recorder.setOutputFile(instanceRecord.getAbsolutePath()); 



     recorder.prepare(); 
     recorder.start(); 
    } catch (IllegalStateException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    }catch (Exception e){ 
      e.printStackTrace(); 
    } 
} 

private void stopRecording() { 
    if (recorder != null) {  
     recorder.stop(); 
     recorder.release(); 
     recorder = null; 
    } 
} 
+0

실패하지 않습니다 않습니다? –

+0

예,이 권한을 추가했습니다 –

+0

그러면 logcat이 흥미로운 것을 인쇄 할 수 있습니까? –

답변

1

= 새 SimpleDateFormat의 "형식 포맷 : 나는 기록 오디오 파일

stopService(new Intent(this,RecordService.class)); 
// stopService(new Intent(this,TimeService.class)); 
    Log.d("TAG" , "RecordSerivce finished"); 
    Log.d("TAG" , "TimeService finished"); 
    pd = ProgressDialog.show(Main4.this, "EOrder", "Uploading , please wait"); 


    new Thread(new Runnable() { 
     @Override 
     public void run() { 
      spandTimeMethod(); 
      handler.sendEmptyMessage(0);     
     } 

    }).start(); 

를 찾을 수 없습니다 아래의 서비스에 대한 내 코드는 ("YYYY-MM-dd_HH : MM : SS");

당신이 사용을 할 수 있어야합니다

이 : ==> SimpleDateFormat의 형식 = 새로운하여 SimpleDateFormat ("YYYY-MM-DD HH : MM : SS");

또는 SimpleDateFormat 형식 = 새 SimpleDateFormat ("yyyy-MM-dd HH : mm : ss"); 당신이 사용하는 경우

("YYYY-MM-dd_HH : MM : SS")는 CREAT 파일, CREAT 파일은 WRITE_EXTERNAL_STORAGE 권한이 있습니까