Android录音,和实现微信长按录音效果!

 

Android录音,和实现微信长按录音效果!

分类: Android   248人阅读  评论(0)  收藏  举报


录音源码!

[java]  view plain copy
  1. package cn.com.chenzheng_java.media;   
  2.   
  3. import java.io.IOException;   
  4.   
  5. import android.app.Activity;   
  6. import android.media.MediaRecorder;   
  7. import android.os.Bundle;   
  8. /**  
  9. * @description 对通过android系统手机进行录音的一点说明测试  
  10. * @author chenzheng_java  
  11. * @since 2011/03/23  
  12. */   
  13. public class MediaRecordActivity extends Activity {   
  14.   
  15. MediaRecorder mediaRecorder ;   
  16. @Override   
  17. public void onCreate(Bundle savedInstanceState) {   
  18. super.onCreate(savedInstanceState);   
  19. setContentView(R.layout.main);   
  20.   
  21. mediaRecorder = new MediaRecorder();   
  22. record();   
  23.   
  24. }   
  25.   
  26. /**  
  27. * 开始录制  
  28. */   
  29. private void record(){   
  30. /**  
  31. * mediaRecorder.setAudioSource设置声音来源。  
  32. * MediaRecorder.AudioSource这个内部类详细的介绍了声音来源。  
  33. * 该类中有许多音频来源,不过最主要使用的还是手机上的麦克风,MediaRecorder.AudioSource.MIC  
  34. */   
  35. mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);   
  36. /**  
  37. * mediaRecorder.setOutputFormat代表输出文件的格式。该语句必须在setAudioSource之后,在prepare之前。  
  38. * OutputFormat内部类,定义了音频输出的格式,主要包含MPEG_4、THREE_GPP、RAW_AMR……等。  
  39. */   
  40. mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);   
  41. /**  
  42. * mediaRecorder.setAddioEncoder()方法可以设置音频的编码  
  43. * AudioEncoder内部类详细定义了两种编码:AudioEncoder.DEFAULT、AudioEncoder.AMR_NB  
  44. */   
  45. mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);   
  46. /**  
  47. * 设置录音之后,保存音频文件的位置  
  48. */   
  49. mediaRecorder.setOutputFile("file:///sdcard/myvido/a.3pg");   
  50.   
  51. /**  
  52. * 调用start开始录音之前,一定要调用prepare方法。  
  53. */   
  54. try {   
  55. mediaRecorder.prepare();   
  56. mediaRecorder.start();   
  57. catch (IllegalStateException e) {   
  58. e.printStackTrace();   
  59. catch (IOException e) {   
  60. e.printStackTrace();   
  61. }   
  62.   
  63. }   
  64.   
  65. /***  
  66. * 此外,还有和MediaRecorder有关的几个参数与方法,我们一起来看一下:  
  67. * sampleRateInHz :音频的采样频率,每秒钟能够采样的次数,采样率越高,音质越高。  
  68. * 给出的实例是44100、22050、11025但不限于这几个参数。例如要采集低质量的音频就可以使用4000、8000等低采样率  
  69.  
  70. * channelConfig :声道设置:android支持双声道立体声和单声道。MONO单声道,STEREO立体声  
  71.  
  72. * recorder.stop();停止录音  
  73. * recorder.reset(); 重置录音 ,会重置到setAudioSource这一步  
  74. * recorder.release(); 解除对录音资源的占用  
  75. */   
  76.   
  77.   
  78.   
  79.   
  80. }   


 

相关的权限

[html]  view plain copy
  1. <uses-permission android:name="android.permission.RECORD_AUDIO"></uses-permission>  
  2.    

 

微信效果

boolean isLongClick=false;

imageButton.setOnLongClickListener(new OnLongClickListener() {
   @Override
   public boolean onLongClick(View v) {
    MainActivity.this.flag = "talk";
    MainActivity.this.setImageButtonBackground();
    System.out.println("长按。。。。。。。。。。。");

isLongClick=true;
    //开始录音
    return true;
   }
  });

imageButton.setOnTouchListener(new MyClickListener());

class MyClickListener implements OnTouchListener{
  public boolean onTouch(View v, MotionEvent event) {

if(isLongClick)
   switch (event.getAction()) {
   case MotionEvent.ACTION_UP:
    flag = "listen";
    setImageButtonBackground();
    System.out.println("抬起。。。。。。。。。。。。。。。。");

isLongClick=false;
    break;
   default:
    break;
   }
   return false;
  }
  
    }

 

你可能感兴趣的:(android)