本文实例讲述了AndroID编程实现录音及保存播放功能的方法。分享给大家供大家参考,具体如下:
在androID中进行录音相对来说是比较简单的,使用系统提供的MediaRecorder类进行录音并保存,然后调用MediaPlayer进行播放。以下为xml配置文件代码:
<relativeLayout xmlns:androID="http://schemas.androID.com/apk/res/androID" xmlns:tools="http://schemas.androID.com/tools" androID:layout_wIDth="match_parent" androID:layout_height="match_parent" tools:context="com.example.kk.soundrecording.MainActivity" > <button androID:ID="@+ID/start" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_centerHorizontal="true" androID:layout_margintop="40dp" androID:text="@string/start" /> <button androID:ID="@+ID/stop" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@+ID/start" androID:layout_centerHorizontal="true" androID:layout_margintop="40dp" androID:text="@string/stop" /> <button androID:ID="@+ID/paly" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@+ID/stop" androID:layout_centerHorizontal="true" androID:layout_margintop="40dp" androID:text="@string/paly" /> <button androID:ID="@+ID/pause_paly" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@+ID/paly" androID:layout_centerHorizontal="true" androID:layout_margintop="40dp" androID:text="@string/pause_paly" /> <button androID:ID="@+ID/stop_paly" androID:layout_wIDth="wrap_content" androID:layout_height="wrap_content" androID:layout_below="@+ID/pause_paly" androID:layout_centerHorizontal="true" androID:layout_margintop="40dp" androID:text="@string/stop_paly" /></relativeLayout>
在MainActivity中进行录音,代码如下:
package com.example.kk.soundrecording;import java.io.file;import java.io.IOException;import com.example.kk.util.Recordplayer;import androID.app.Activity;import androID.media.MediaRecorder;import androID.os.Bundle;import androID.vIEw.VIEw;import androID.vIEw.VIEw.OnClickListener;import androID.Widget.button;/** * * @author kk * */public class MainActivity extends Activity implements OnClickListener { // 开始录音 private button start; // 停止按钮 private button stop; // 播放按钮 private button paly; // 暂停播放 private button pause_paly; // 停止播放 private button stop_paly; // 录音类 private MediaRecorder mediaRecorder; // 以文件的形式保存 private file recordfile; private Recordplayer player; @OverrIDe protected voID onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentVIEw(R.layout.activity_main); recordfile = new file("/mnt/sdcard","kk.amr"); initVIEw(); Listener(); } private voID initVIEw() { start = (button) findVIEwByID(R.ID.start); stop = (button) findVIEwByID(R.ID.stop); paly = (button) findVIEwByID(R.ID.paly); pause_paly = (button) findVIEwByID(R.ID.pause_paly); stop_paly = (button) findVIEwByID(R.ID.stop_paly); } private voID Listener() { start.setonClickListener(this); stop.setonClickListener(this); paly.setonClickListener(this); pause_paly.setonClickListener(this); stop_paly.setonClickListener(this); } @OverrIDe public voID onClick(VIEw v) { player = new Recordplayer(MainActivity.this); int ID = v.getID(); switch (ID) { case R.ID.start: startRecording(); break; case R.ID.stop: stopRecording(); break; case R.ID.paly: playRecording(); break; case R.ID.pause_paly: pauseplayer(); break; case R.ID.stop_paly: stopplayer(); break; } } private voID startRecording() { mediaRecorder = new MediaRecorder(); // 判断,若当前文件已存在,则删除 if (recordfile.exists()) { recordfile.delete(); } mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mediaRecorder.setoutputFormat(MediaRecorder.OutputFormat.DEFAulT); mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAulT); mediaRecorder.setoutputfile(recordfile.getabsolutePath()); try { // 准备好开始录音 mediaRecorder.prepare(); mediaRecorder.start(); } catch (IllegalStateException e) { // Todo auto-generated catch block e.printstacktrace(); } catch (IOException e) { // Todo auto-generated catch block e.printstacktrace(); } } private voID stopRecording() { if (recordfile != null) { mediaRecorder.stop(); mediaRecorder.release(); } } private voID playRecording() { player.playRecordfile(recordfile); } private voID pauseplayer() { player.pausePalyer(); } private voID stopplayer() { // Todo auto-generated method stub player.stopPalyer(); }}
同时,新建一个Recordplayer类,用来播放保存好的录音,如下:
package com.example.kk.util;import java.io.file;import androID.content.Context;import androID.media.MediaPlayer;import androID.media.MediaPlayer.OnCompletionListener;import androID.net.Uri;import androID.util.Log;import androID.Widget.Toast;import com.example.kk.soundrecording.R;/** * * * @author kk 录音播放类 * */public class Recordplayer { private static MediaPlayer mediaPlayer; private Context mcontext; public Recordplayer(Context context) { this.mcontext = context; } // 播放录音文件 public voID playRecordfile(file file) { if (file.exists() && file != null) { if (mediaPlayer == null) { Uri uri = Uri.fromfile(file); mediaPlayer = MediaPlayer.create(mcontext,uri); } mediaPlayer.start(); //监听MediaPlayer播放完成 mediaPlayer.setonCompletionListener(new OnCompletionListener() { @OverrIDe public voID onCompletion(MediaPlayer paramMediaPlayer) { // Todo auto-generated method stub //d窗提示 Toast.makeText(mcontext,mcontext.getResources().getString(R.string.ok),Toast.LENGTH_SHORT).show(); } }); } } // 暂停播放录音 public voID pausePalyer() { if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); Log.e("TAG","暂停播放"); } } // 停止播放录音 public voID stopPalyer() { // 这里不调用stop(),调用seekto(0),把播放进度还原到最开始 if (mediaPlayer.isPlaying()) { mediaPlayer.pause(); mediaPlayer.seekTo(0); Log.e("TAG","停止播放"); } }}
此时,功能代码都已实现,但是运行时会报错!为什么呢,这个是被很多初学者会忘记的,那就是androID开发中调用相应的功能时,必须在主配置文件中授予相应的权限,在配置文件中添加如下代码:
<uses-permission androID:name="androID.permission.RECORD_AUdio" /><uses-permission androID:name="androID.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission androID:name="androID.permission.WAKE_LOCK" />
另外,AndroID权限控制的详细说明可以参考Android Manifest功能与权限描述大全
附:Demo源码点击此处本站下载。
更多关于AndroID相关内容感兴趣的读者可查看本站专题:《Android开发入门与进阶教程》、《Android多媒体 *** 作技巧汇总(音频,视频,录音等)》、《Android视图View技巧总结》、《Android编程之activity *** 作技巧总结》、《Android *** 作json格式数据技巧总结》、《Android资源 *** 作技巧汇总》及《Android控件用法总结》
希望本文所述对大家AndroID程序设计有所帮助。
您可能感兴趣的文章:Android实现录音功能实现实例(MediaRecorder)Android6.0编程实现双向通话自动录音功能的方法详解Android 录音与播放功能的简单实例Android编程实现通话录音功能的方法利用libmp3lame实现在Android上录音MP3文件示例Android开发四大组件之实现电话拦截和电话录音Android录音时获取分贝值的方法代码实例Android开发之MediaPlayer多媒体(音频,视频)播放工具类Android开发之多媒体文件获取工具类实例【音频,图片等】Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等 *** 作功能】Android编程录音工具类RecorderUtil定义与用法示例 总结以上是内存溢出为你收集整理的Android编程实现录音及保存播放功能的方法【附demo源码下载】全部内容,希望文章能够帮你解决Android编程实现录音及保存播放功能的方法【附demo源码下载】所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)