Android录音应用实例教程

 更新时间:2014年09月03日 11:30:18   投稿:shichen2014  
这篇文章主要介绍了Android录音应用实例,是Android应用程序开发中非常重要的一个功能,需要的朋友可以参考下

本文以实例形式较为详细的展示了Android录音的实现方法,分享给大家供大家参考之用。具体方法如下:

首先是xml布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  xmlns:tools="http://schemas.android.com/tools"
  android:layout_width="fill_parent"
  android:layout_height="fill_parent"
  android:layout_gravity="center"
  android:gravity="center"
  android:orientation="vertical"
  android:paddingBottom="@dimen/activity_vertical_margin"
  android:paddingLeft="@dimen/activity_horizontal_margin"
  android:paddingRight="@dimen/activity_horizontal_margin"
  android:paddingTop="@dimen/activity_vertical_margin"
  tools:context=".MainActivity" >
 
  <Button
    android:id="@+id/btn_talk"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_gravity="center"
    android:enabled="false"
    android:text="TALK"
    android:textSize="30dp"
    android:textStyle="bold" />
 
</LinearLayout>

运行效果如下图所示:

MainActivity中定义按钮的点击监听器,按下按钮时开始录音,松开按钮时停止录音,类似于微信的操作方法。

// 获得控件
public void get_con(){
   
  btn_talk = (Button)findViewById(R.id.btn_talk);
  btn_talk.setOnTouchListener(new OnTouchListener(){
    @Override
    public boolean onTouch(View v, MotionEvent e) {
      if (e.getAction() == MotionEvent.ACTION_DOWN){
        // 开始录音
        start_record();
      }
      else if (e.getAction() == MotionEvent.ACTION_UP){
        // 停止录音
        stop_record();
      }
      return false;
    }
  });
}

开始录音的方法,使用了android.media.MediaRecorder录音。首先判断SD卡是否存在,如果存在根据当前时间给创建一个录音文件,保存到预定的目录中,用MediaRecorder类开始录音。

// 开始录音
public void start_record(){
  if (!Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED)){     
    show_status("SD卡不存在,请插入SD卡!");     
  }
  else{
    try
    {
      // 获取当前时间
      cur_date = new Date(System.currentTimeMillis());
      str_file = formatter.format(cur_date); 
      // 创建保存录音的音频文件
      send_sound_file = new File(Environment.getExternalStorageDirectory().getCanonicalFile() + "/talk/send");
      // 如果目录不存在
      if (!send_sound_file.exists()){
        send_sound_file.mkdirs();
      }
      send_sound_file = new File(Environment.getExternalStorageDirectory().getCanonicalFile() + "/talk/send/" + str_file + ".amr");
      recorder = new MediaRecorder();
      // 设置录音的声音来源
      recorder.setAudioSource(MediaRecorder.AudioSource.MIC);
      // 设置录制的声音的输出格式(必须在设置声音编码格式之前设置)
      recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
      // 设置声音编码的格式
      recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
      recorder.setOutputFile(send_sound_file.getAbsolutePath());
      recorder.prepare();
      // 开始录音
      recorder.start();
    }
    catch (Exception e)
    {
      show_status(e.toString());
    }
  }
}

停止录音的方法,相对简单。

// 停止录音
public void stop_record(){
  if (send_sound_file != null && send_sound_file.exists())
  {
    ses_id = ses_id + 1;
    // 停止录音
    recorder.stop();
    // 释放资源
    recorder.release();
    recorder = null;
  }
  super.onDestroy();
}

经过测试,录制的3gp文件可以正常播放。

希望本文所述对大家的Android程序设计有所帮助。

相关文章

  • Android ListView position详解及实例代码

    Android ListView position详解及实例代码

    这篇文章主要介绍了Android ListView position的相关资料,在开发Android 应用的时候你真的用对了吗?这里给大家彻底解释下,需要的朋友可以参考下
    2016-10-10
  • 教你轻松制作Android音乐播放器

    教你轻松制作Android音乐播放器

    这篇文章主要教大家轻松制作Android音乐播放器,制作一款属于自己的Android音乐播放器,希望大家喜欢。
    2015-11-11
  • Android编程中图片特效处理方法小结

    Android编程中图片特效处理方法小结

    这篇文章主要介绍了Android编程中图片特效处理方法,实例总结了Android实现图片的转换、缩放、圆角及倒影等效果的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • RollViewPager图片轮播效果开源框架使用方法详解

    RollViewPager图片轮播效果开源框架使用方法详解

    这篇文章主要为大家详细介绍了RollViewPager图片轮播效果开源框架的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-10-10
  • Android Service开发应用实例

    Android Service开发应用实例

    Android的服务是开发Android应用程序的重要组成部分。不同于活动Activity,服务是在后台运行,服务没有接口,生命周期也与活动Activity非常不同。通过使用服务我们可以实现一些后台操作,比如想从远程服务器加载一个网页等,下面来看看详细内容,需要的朋友可以参考下
    2022-12-12
  • Android Dialog里的EdiText输入法的选择

    Android Dialog里的EdiText输入法的选择

    这篇文章主要介绍了Android Dialog里的EdiText输入法的选择的相关资料,需要的朋友可以参考下
    2017-04-04
  • Android三种实现定时器的方法

    Android三种实现定时器的方法

    本文给大家分享了3种Android实现定时器的方法的示例,,需要的朋友可以参考下
    2015-02-02
  • Kotlin 使用高阶函数实现回调方式

    Kotlin 使用高阶函数实现回调方式

    这篇文章主要介绍了Kotlin 使用高阶函数实现回调方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • Android getActivity()为空的问题解决办法

    Android getActivity()为空的问题解决办法

    这篇文章主要介绍了Android getActivity()为空的问题解决办法的相关资料,导致apk空指针崩溃问题,很严重的问题,为了解决这问题,上网搜索了很多资料,需要的朋友可以参考下
    2017-07-07
  • Android View与Compose互相调用实例探究

    Android View与Compose互相调用实例探究

    这篇文章主要介绍了Android View与Compose互相调用,Compose 具有超强的兼容性,兼容现有的所有代码,Compose 能够与现有 View 体系并存,可实现渐进式替换
    2023-01-01

最新评论