2012-11-29 27 views
0

有无论如何,我可以发送电子邮件,当我从SD卡按OUTPUT_FILE路径保存按钮。 (我没有实现保存按钮) 我是否应该将字符串更改为Uri而不是发送电子邮件? 我不知道如何实现保存按钮,使其发送附带音频文件的电子邮件。有什么建议么?提前致谢!如何用SD卡中的文件路径发送音频文件?

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

你知道吗? –

相关问题