Android编程实现录音及保存播放功能的方法【附demo源码下载】

Android编程实现录音及保存播放功能的方法【附demo源码下载】,第1张

概述本文实例讲述了Android编程实现录音及保存播放功能的方法。分享给大家供大家参考,具体如下:

本文实例讲述了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源码下载】所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1143018.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存