欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > 文章正文

Android语音录制的代码,android语音录制,使用MediaRecor

来源: javaer 分享于  点击 23031 次 点评:279

Android语音录制的代码,android语音录制,使用MediaRecor


使用MediaRecorder的步骤:  1、创建MediaRecorder对象  2、调用MediRecorder对象的setAudioSource()方法设置声音的来源,一般传入MediaRecorder.MIC  3、调用MediaRecorder对象的setOutputFormat()设置所录制的音频文件的格式  4、调用MediaRecorder对象的setAudioRncoder()、setAudioEncodingBitRate(int bitRate)、setAudioSamlingRate(int SamplingRate)设置所录音的编码格式、编码位率、采样率等,  5、调用MediaRecorder对象的setOutputFile(String path)方法设置录制的音频文件的保存位置  6、调用MediaRecoder对象的Prepare()方法准备录制  7、调用MediaRecoder对象的start()方法开始录制  8、调用MediaRecoder对象的stop()方法停止录制,并调用release()方法释放资源  -。启用权限  <uses-permission  android:name="android.permission.MOUNT_FORMAT_FILESYSTEMS"/>      <uses-permission  android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>      <uses-permission  android:name="android.permission.RECORD_AUDIO"/>  布局就不用说了 ,附上代码吧  主要代码:   public class MainActivity extends Activity implements OnClickListener {     private Button start;   private Button stop;   private ListView listView;   // 录音文件播放   private MediaPlayer myPlayer;   // 录音   private MediaRecorder myRecorder;   // 音频文件保存地址   private String path;   private String paths = path;   private File saveFilePath;   // 所录音的文件   String[] listFile = null;     ShowRecorderAdpter showRecord;   AlertDialog aler = null;     @Override   protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    start = (Button) findViewById(R.id.start);    stop = (Button) findViewById(R.id.stop);    listView = (ListView) findViewById(R.id.list);    myPlayer = new MediaPlayer();    myRecorder = new MediaRecorder();    // 从麦克风源进行录音    myRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT);    // 设置输出格式    myRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);    // 设置编码格式    myRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);    showRecord = new ShowRecorderAdpter();    if (Environment.getExternalStorageState().equals(      Environment.MEDIA_MOUNTED)) {     try {      path = Environment.getExternalStorageDirectory()        .getCanonicalPath().toString()        + "/RECORDERS";      File files = new File(path);      if (!files.exists()) {       files.mkdir();      }      listFile = files.list();     } catch (IOException e) {      e.printStackTrace();     }    }      start.setOnClickListener(this);    stop.setOnClickListener(this);    if (listFile != null) {     listView.setAdapter(showRecord);    }     }     @Override   public boolean onCreateOptionsMenu(Menu menu) {    getMenuInflater().inflate(R.menu.main, menu);    return true;   }     class ShowRecorderAdpter extends BaseAdapter {      @Override    public int getCount() {     return listFile.length;    }      @Override    public Object getItem(int arg0) {     return arg0;    }      @Override    public long getItemId(int arg0) {     return arg0;      }      @Override    public View getView(final int postion, View arg1, ViewGroup arg2) {     View views = LayoutInflater.from(MainActivity.this).inflate(       R.layout.list_show_filerecorder, null);     TextView filename = (TextView) views       .findViewById(R.id.show_file_name);     Button plays = (Button) views.findViewById(R.id.bt_list_play);     Button stop = (Button) views.findViewById(R.id.bt_list_stop);       filename.setText(listFile[postion]);     // 播放录音     plays.setOnClickListener(new OnClickListener() {      @Override      public void onClick(View arg0) {       try {        myPlayer.reset();        myPlayer.setDataSource(path + "/" + listFile[postion]);        if (!myPlayer.isPlaying()) {           myPlayer.prepare();         myPlayer.start();        } else {         myPlayer.pause();        }         } catch (IOException e) {        e.printStackTrace();       }      }     });     // 停止播放     stop.setOnClickListener(new OnClickListener() {        @Override      public void onClick(View arg0) {       if (myPlayer.isPlaying()) {        myPlayer.stop();       }      }     });     return views;    }     }     @Override   public void onClick(View v) {    switch (v.getId()) {    case R.id.start:     final EditText filename = new EditText(this);     Builder alerBuidler = new Builder(this);     alerBuidler       .setTitle("请输入要保存的文件名")       .setView(filename)       .setPositiveButton("确定",         new DialogInterface.OnClickListener() {          @Override          public void onClick(DialogInterface dialog,            int which) {           String text = filename.getText().toString();           try {            paths = path              + "/"              + text              + new SimpleDateFormat(                "yyyyMMddHHmmss").format(System                .currentTimeMillis())              + ".amr";            saveFilePath = new File(paths);            Log.e("activity", saveFilePath+"");            myRecorder.setOutputFile(saveFilePath              .getAbsolutePath());            saveFilePath.createNewFile();            myRecorder.prepare();            // 开始录音            myRecorder.start();            start.setText("正在录音中。。");            start.setEnabled(false);            aler.dismiss();            // 重新读取 文件            File files = new File(path);            listFile = files.list();            // 刷新ListView            showRecord.notifyDataSetChanged();           } catch (Exception e) {            e.printStackTrace();           }            }         });     aler = alerBuidler.create();     aler.setCanceledOnTouchOutside(false);     aler.show();     break;    case R.id.stop:     if (saveFilePath.exists() &amp;&amp; saveFilePath != null) {      myRecorder.stop();      myRecorder.release();      // 判断是否保存 如果不保存则删除      new AlertDialog.Builder(this)        .setTitle("是否保存该录音")        .setPositiveButton("确定", null)        .setNegativeButton("取消",          new DialogInterface.OnClickListener() {           @Override           public void onClick(DialogInterface dialog,             int which) {            saveFilePath.delete();            // 重新读取 文件            File files = new File(path);            listFile = files.list();            // 刷新ListView            showRecord.notifyDataSetChanged();           }          }).show();       }     start.setText("录音");     start.setEnabled(true);    default:     break;    }     }     @Override   protected void onDestroy() {    // 释放资源    if (myPlayer.isPlaying()) {     myPlayer.stop();     myPlayer.release();    }    myPlayer.release();    myRecorder.release();    super.onDestroy();   }    }  
相关栏目:

用户点评