【Android开发小记--13】录制音频
来源:互联网 发布:京东高级java笔试题 编辑:程序博客网 时间:2024/04/27 22:11
首先,编写录制音频类 AudioRecorde.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"/>
具体代码点击
0 0
- 【Android开发小记--13】录制音频
- Android开发笔记-音频录制/播放&音频
- Android开发笔记-音频录制/播放&音频
- 【Android开发小记--15】录制视频
- Android音频开发之使用MediaRecorder录制
- Android音频开发之使用AudioRecord录制
- Android录制音频
- android 音频录制
- Android 录制音频示例
- Android MediaRecorder录制音频
- Android MediaRecorder录制音频
- android MediaRecorder录制音频
- Android 音频的录制
- Android手机录制音频
- Android录制音频示例
- Android移动开发-使用MediaRecorder录制音频的实现
- Android音频录制与播放
- Android之MediaRecorder录制音频
- 学习Hibernate源码——配置文件解析,SessionFactory创建
- Leetcode 322. Coin Change
- 1238 Substrings
- android:qq的欢迎界面
- HDU 5621 KK's Point
- 【Android开发小记--13】录制音频
- Vim简明教程【CoolShell】转自http://blog.csdn.net/niushuai666/article/details/7275406 (飘过的小牛)
- 2.2-call与apply
- HDU 5622 KK's Chemical
- 日记——JavaScript(1)
- Styling Views on Android
- HDU 1348 Wall (水平序Graham算法)
- LeeCode_Spiral Matrix
- Vim plugin configuration note