Android:使用MediaRecorder录制音频
2016-09-18 15:01
302 查看
Android:使用MediaRecorder录制音频
标签(空格分隔): android no陈小默(不足之处恳请批评指正)
Android使用MediaRecorder录制音频
实战演练
MediaRecorder类是Android提供的用来录制音频的组件,其使用步骤基本如下1:
创建MediaRecorder对象
调用MediaRecorder对象的setAudioSource()方法来设置声音来源,一般传入MediaRecorder.AudioSource.MIC参数来指定录制来自麦克风的声音
调用MediaRecorder对象的setOutputFormat()设置录制音频的格式
调用MediaRecorder对象的setAudioEncoder()、setAudioEncodingBitRate(int bitRate)、setAudioSamplingRate(int samplingRate)设置所录声音的编码格式、编码位率、采样率等等,这些参数可以控制录制声音的品质。
调用MediaRecorder的setOutputFile(String path)方法设置录制的音频文件的保存位置。
调用MediaRecorder的prepare()方法准备录制
调用MediaRecorder的start()方法开始录制
调用MediaRecorder的stop()方法停止录制,并在结束后使用release()方法释放资源
–
实战演练
我们创建一套布局<RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"/> <Button android:id="@+id/rRecorder" android:text="按下按钮录制" /> <TextView android:text="0s" android:id="@+id/rTimer" /> </RelativeLayout>
程序代码
class RecorderActivity : AppCompatActivity() { val directory: String = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).absolutePath val recorder = MediaRecorder() var isPause = true var time = 0 val loop: ThreadUtils.Loop = ThreadUtils.Loop(1000).loop { if (!isPause) { rTimer.text = "${time++}" } } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_recoder) rRecorder.setOnTouchListener { view, motionEvent -> when (motionEvent.action) { MotionEvent.ACTION_DOWN -> { start() } MotionEvent.ACTION_UP -> { pause() } } true } recorder.setAudioSource(MediaRecorder.AudioSource.MIC) recorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB) recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB) if (Build.VERSION.SDK_INT >= 10) { recorder.setAudioSamplingRate(44100) recorder.setAudioEncodingBitRate(96000) } else { // older version of Android, use crappy sounding voice codec recorder.setAudioSamplingRate(8000) recorder.setAudioEncodingBitRate(12200) } recorder.setOutputFile("$directory/${DateUtils.getTimeStamp()}.amr") recorder.prepare() } fun start() { if (isPause) { isPause = false recorder.start() loop.start() } } fun pause() { if (!isPause) { isPause = true //recorder.pause() API 24 } } fun stop() { loop.destroy() recorder.stop() recorder.release() } override fun onDestroy() { stop() super.onDestroy() } }
李刚.疯狂安卓讲义.电子工业出版社.453-456 ↩
相关文章推荐
- 26、从头学Android之多媒体--使用MediaRecorder录制音频
- 从头学Android之多媒体--使用MediaRecorder录制音频
- Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频
- 从头学Android之多媒体--使用MediaRecorder录制音频
- 初学Android,多媒体之使用MediaRecorder录制音频(七十八)
- Android音频开发之使用MediaRecorder录制
- Android之多媒体--使用MediaRecorder录制音频
- Android移动开发-使用MediaRecorder录制音频的实现
- Android项目开发五-《星星生活志》1.使用MediaRecorder录制音频
- Android 中使用MediaRecorder进行录像详解(视频录制)
- Android MediaRecorder录制音频
- android多媒体部分学习笔记八------音频录制 mediaRecorder
- Android MediaRecorder录制音频
- Android 中使用MediaRecorder进行录像详解(视频录制)
- Android 中使用MediaRecorder进行录像详解(视频录制)
- android中使用MediaRecorder进行视频录制笔记
- android多媒体部分学习笔记七------音频录制 mediaRecorder
- Android 中使用MediaRecorder进行录像详解(视频录制) (转)
- android多媒体部分学习笔记七------音频录制 mediaRecorder
- Android 中使用MediaRecorder进行录像详解(视频录制)