【Android开发小记--13】录制音频
2016-02-07 14:02
746 查看
首先,编写录制音频类 AudioRecorde.java :
这里需要 1. 设置存储的目录路径; 2. 开启录制项; 3. 停止录制项
然后,播放音频类 AudioPlayer.java :
这里需要 1. 播放功能 2. 获取读取路径
然后,在 MainActivity.java 中具体实现音频的录制与播放:
最后还需添加权限功能:
读取、写入外部存储,以及录制音频的权限
具体代码点击
这里需要 1. 设置存储的目录路径; 2. 开启录制项; 3. 停止录制项
public class AudioRecorder { private String dir;//路径 private String fileName; private MediaRecorder mediaRecorder; //--------------- 1 ----------------------------------------- public AudioRecorder() { //目录地址 dir = Environment.getExternalStorageDirectory().getAbsolutePath() + "/myrecorder/"; } //--------------- 2 ----------------------------------------- /*开启录制*/ public void start() throws IOException { String state = Environment.getExternalStorageState(); if (!state.equals(Environment.MEDIA_MOUNTED)) { throw new IOException("没有可用的存储空间"); } File myDir = new File(dir); if (!myDir.exists()) { myDir.mkdir(); } //文件的的名字=目录名+系统时间+音频格式 fileName = dir + System.currentTimeMillis() + ".amr"; //实例化 mediaRecorder = new MediaRecorder(); // 设置参数 //录音音频来源 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); //输出格式设置 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_NB); //编码 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); //采样率 mediaRecorder.setAudioSamplingRate(8000); //音频的名字设置到输出文件中 mediaRecorder.setOutputFile(fileName); mediaRecorder.prepare(); mediaRecorder.start();//开启录制 } //--------------- 3 --------------------------------------- /*停止录制*/ public void stop() { if (mediaRecorder != null) { mediaRecorder.stop();//停止 mediaRecorder.release();//释放 mediaRecorder = null;//置空 } } public String getPath(){ return fileName; } }
然后,播放音频类 AudioPlayer.java :
这里需要 1. 播放功能 2. 获取读取路径
public class AudioPlayer { private MediaPlayer mediaplayer;//播放类 private String playerPath;//播放路径 public AudioPlayer() { } public void setPlayerPath(String playerPath) { this.playerPath = playerPath; } /*播放*/ public void play() { if (mediaplayer == null) { mediaplayer = new MediaPlayer(); } try { mediaplayer.setDataSource(playerPath); mediaplayer.prepare(); mediaplayer.start(); mediaplayer.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { @Override public void onCompletion(MediaPlayer mp) { } }); } catch (IOException e) { e.printStackTrace(); } } }
然后,在 MainActivity.java 中具体实现音频的录制与播放:
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btn_recorder; private Button btn_stop_recorder; private Button btn_play_recorder; private AudioRecorder mRecorder; private AudioPlayer mPlayer; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); btn_recorder = (Button) findViewById(R.id.btn_recorder); btn_stop_recorder = (Button) findViewById(R.id.btn_stop_recorder); btn_play_recorder = (Button) findViewById(R.id.btn_play_recorder); btn_recorder.setOnClickListener(this); btn_stop_recorder.setOnClickListener(this); btn_play_recorder.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { //录制音频 case R.id.btn_recorder: if (mRecorder == null) { mRecorder = new AudioRecorder(); } try { mRecorder.start(); } catch (IOException e) { e.printStackTrace(); } break; //停止录音 case R.id.btn_stop_recorder: if (mRecorder != null) { mRecorder.stop(); } break; //播放录音 case R.id.btn_play_recorder: if (mPlayer == null) { mPlayer = new AudioPlayer(); mPlayer.setPlayerPath(mRecorder.getPath()); } mPlayer.play(); break; } } }
最后还需添加权限功能:
读取、写入外部存储,以及录制音频的权限
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.RECORD_AUDIO"/>
具体代码点击
相关文章推荐
- android wifi调试程序问题
- Styling Views on Android
- Android随性笔录之活动返回信息
- 【Android开发小记--12】同步歌词
- android逆向的一些工具
- ANDROID_MARS学习笔记_S01_003layout初步
- 让 Android 手机也具备 Continuum 功能:连接大屏就能当 PC 用
- 【Android】5.8 滑动条(SeekBar)
- 【Android】5.7 图片库(Galery)
- 【Android】5.6 弹出菜单(PopUp Menus)
- 【Android】5.5 状态切换(Switch)和评级条(RatingBar)
- 【Android】5.4 下拉框(Spinner)
- 【Android】5.3 单选和复选
- 【Android】5.2 图像按钮和图片格式
- 【Android】5.1 按钮和文本框
- Android中常用颜色值
- 安卓界面延时跳转
- 在Qt for Android中添加.a或so库文件
- 【Android开发小记--11】调用百度地图定位功能
- 【Android开发小记--10】一键锁屏功能实现