2012-11-29 3 views
0

어쨌든 sdcard에서 OUTPUT_FILE 경로가있는 저장 버튼을 누르면 이메일을 보낼 수 있습니다. (아직 저장 버튼을 구현하지 않았습니다.) 이메일을 보내지 않고 String을 Uri로 변경해야합니까? 오디오 파일이 첨부 된 전자 메일을 보내기 위해 저장 단추를 구현하는 방법을 모르겠습니다. 어떤 제안? 미리 감사드립니다! 이 도움이sdcard에서 파일 경로가있는 오디오 파일을 전자 메일로 보내는 방법은 무엇입니까?

public class FulfillAudioTaskActivity extends Activity { 

    private MediaPlayer mediaPlayer; 
    private MediaRecorder recorder; 
    private String OUTPUT_FILE; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_fulfill_audio_task); 



     OUTPUT_FILE = Environment.getExternalStorageDirectory()+"/audiorecorder.3gpp"; 

    } 

    public void buttonTapped(View view){ 
     switch(view.getId()) { 
     case R.id.startBtn: 
      try { 
       beginRecording();   
      }catch (Exception e){ 
       e.printStackTrace(); 
      } 
      break; 
     case R.id.finishBtn: 
      try { 
       stopRecording(); 

      } catch (Exception e){ 
       e.printStackTrace(); 
      } 
      break; 
     case R.id.playBtn: 
      try { 
       playRecording(); 

      } catch (Exception e){ 
       e.printStackTrace(); 
      } 
      break; 
     case R.id.stopBtn: 
      try { 
       stopPlayback(); 

      } catch (Exception e){ 
       e.printStackTrace(); 
      } 
      break; 
     } 
    } 

    private void stopPlayback() { 
     if(mediaPlayer != null) 
      mediaPlayer.stop(); 

    } 

    private void playRecording() throws Exception{ 
     ditchMediaPlayer(); 
     mediaPlayer = new MediaPlayer(); 
     mediaPlayer.setDataSource(OUTPUT_FILE); 
     mediaPlayer.prepare(); 
     mediaPlayer.start(); 
    } 
    private void ditchMediaPlayer() { 
     if(mediaPlayer != null) 
     { 
      try { 
       mediaPlayer.release(); 

      }catch(Exception e){ 
       e.printStackTrace(); 
      } 
     } 
    } 

    // stop recording if there's a recorder running 
    private void stopRecording() { 

     if (recorder != null) 
      recorder.stop(); 
    } 

    private void beginRecording() throws Exception { 

     ditchMediaRecorder(); 
     File outFile = new File(OUTPUT_FILE); 

     //check if there's a file already recorded, and if it is we want to get rid of it. 
     if(outFile.exists()) 
      outFile.delete(); 

     //create a new MediaRecorder object. 
     recorder = new MediaRecorder(); 
     recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 
     recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); 
     recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB); 
     recorder.setOutputFile(OUTPUT_FILE); 
     recorder.prepare(); 
     recorder.start(); 

    } 

    private void ditchMediaRecorder() { 
     // TODO Auto-generated method stub 
     if(recorder != null) 
      recorder.release(); 


    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.activity_fulfill_audio_task, menu); 
     return true; 
    } 
} 

답변

2
Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("audio/rfc822"); 
    i.putExtra(Intent.EXTRA_EMAIL, new String[] {"[email protected]"}); 
    i.putExtra(Intent.EXTRA_SUBJECT, "MySubject"); 
    i.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "audiorecorder.3gpp"); 
    startActivity(i); 

희망!

+0

sdcard (OUTPUT_FILE = Environment.getExternalStorageDirectory() + "/ audiorecorder.3gpp";)에서 파일 경로를 Uri로 변환하여 코드를 사용해야합니까? –

+0

예. 그건 단지 예일뿐입니다 !! – ThePCWizard

+0

알고 계십니까? –

관련 문제