首页 > 代码库 > 第六十五讲:Android之多媒体(Media)(三)
第六十五讲:Android之多媒体(Media)(三)
知识使用才有价值,智能共享方显实力!
本讲内容:MediaRecoder 类 录音的使用
一、使用MediaRecorder录制音频实现步骤:
1、创建MediaRecorder对象
2、通过MediaRecoder对象的setAudioSource()方法设置录音的来源
3、通过MediaRecoder对象的setOutputFormat()设置输出格式
4、通过MediaRecoder对象的setAudioEncoder()、setAudioEncodeingBitRate(int bitRate)、setAudioAudioSamling(int samplingRate)设置所录制的声音的编码格式、编码位率、采样率
5、通过MediaRecorder对象的setOutputFile(String path)方法设置录制的音频文件的保存位置
6、调用MeidaRecorder对象的prepare()做预期准备录制
7、调用MediaRecorder对象的start()开始录制声音
我们通过一个例子感受一下,代码的讲解都写在注释里了
下面是MainActivity.java主界面文件:
public class MainActivity extends Activity implements OnClickListener { private Button start; private Button stop; private MediaRecorder mediaRecorder; @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); start.setOnClickListener(this); stop.setOnClickListener(this); } @Override public void onClick(View v) { switch (v.getId()) { case R.id.start: // 先检测下是否含有SDCard if (!Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED)) { Toast.makeText(MainActivity.this, "SD卡不存在,请插入SD卡", Toast.LENGTH_LONG).show(); return; } // 创建音频输出的文件路径 File file = new File("/sdcard/"+ "dan" + new DateFormat().format("yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA))+ ".amr"); Toast.makeText(getApplicationContext(), "正在录音,录音文件在" + file.getAbsolutePath(), Toast.LENGTH_LONG).show(); // 创建录音对象 mediaRecorder = new MediaRecorder(); // 从麦克风源进行录音 mediaRecorder.setAudioSource(MediaRecorder.AudioSource.DEFAULT); // 设置录制的声音输出格式 mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT); // 设置声音的编码格式 mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT); // 设置录音的输出(保存)的文件路径 mediaRecorder.setOutputFile(file.getAbsolutePath()); try { // 创建文件 file.createNewFile(); // 准备录制 mediaRecorder.prepare(); } catch (Exception e) { // TODO: handle exception } // 开始录制 mediaRecorder.start(); start.setText("录音中……"); break; case R.id.stop: if (mediaRecorder != null) { mediaRecorder.stop(); // 释放资源 mediaRecorder.release(); mediaRecorder = null; start.setText("录音"); Toast.makeText(getApplicationContext(), "录音完毕",Toast.LENGTH_LONG).show(); } break; } } @Override protected void onDestroy() {// 更加完美可以写 if (mediaRecorder != null) { mediaRecorder.stop(); // 释放资源 mediaRecorder.release(); mediaRecorder = null; start.setText("录音"); Toast.makeText(getApplicationContext(), "录音完毕", Toast.LENGTH_LONG).show(); } super.onDestroy(); } }
因为录音和写存储卡都需要权限声明,在AndroidManifest.xml注册:
<uses-permission android:name="android.permission.RECORD_AUDIO"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
下面是运行结果:
录音文件在存储卡的根目录几个以dan开头的amr文件
本讲就到这里,Take your time and enjoy it
第六十五讲:Android之多媒体(Media)(三)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。