Android录音应用

原创 2013年12月02日 15:12:29

首先是xml布局文件:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<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中定义按钮的点击监听器,按下按钮时开始录音,松开按钮时停止录音,类似于微信的操作方法。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
// 获得控件
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类开始录音。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
// 开始录音
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());
        }
    }
     
}

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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
// 停止录音
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文件可以正常播放。

相关文章推荐

JNI在Android开发中的应用之--用AudioRecord录音,用AudioTrack播放声音.

[java] view plaincopyprint? 下面是主Activity.      package com.example.hellojni;      import andro...

这篇文章给大家介绍Android开发四大组件之实现电话拦截和电话录音,涉及到android四大基本组件在程序中的应用,对android四大基本组件感兴趣的朋友可以参考下本篇文章

这篇文章给大家介绍Android开发四大组件之实现电话拦截和电话录音,涉及到android四大基本组件在程序中的应用,对android四大基本组件感兴趣的朋友可以参考下本篇文章 http...
  • dong_cc
  • dong_cc
  • 2016年03月07日 14:58
  • 396

Android应用开发-----------来电录音(去电录音)

最近手头的活不是很紧,所以有空整理一下 来电录音或去电录音
  • ls703
  • ls703
  • 2014年11月21日 15:52
  • 952

如何在Ubuntu QML应用中进行语言录音

在QML API中,目前并没有一个相应的API来进行录音。我们必须使用Qt C++ API QAudioRecorder来进行录音的工作。在这篇文章中,我们来介绍如何使用这个API来进行录音。...

传感器应用的demo自动录音器

下面我通过一个实例来学会如何使用某一个类型的传感器。我们这里使用加速度传感器来实现这样一个功能:开启我们的录音程序放在你的口袋或者提包里,需要录音的时候把衣服整理一下,或者把提包挪动个位置,那么此时手...

s3c2440的IIS应用——放音与录音

IIS(Inter-IC Sound)由飞利浦公司开发,是一种常用的音频设备接口,主要用于CD、MD、MP3等设备。          s3c2440一共有5个引脚用于IIS:IISDO、IISD...
  • zmq5411
  • zmq5411
  • 2013年08月12日 09:52
  • 680

录音类MediaRecorder的简单应用-录音频

MediaRecorder类可用类录制音频文件,它直接将音频数据写入到文件里去。而AudioRecord类是直接获取到pcm音频数据.对外界来说,MediaRecorder向外提供音频文件,而Audi...

iPhone循环录音应用Heard:记录精彩瞬间

以下为文章全文:   北京时间6月24日早间消息,你希望录下过去所发生的事情的声音吗?比如宝宝最初学语的声音。iPhone循环录音应用Heard(iTunes链接)可以让你轻松做到这一切...
  • yuanya
  • yuanya
  • 2014年03月18日 15:10
  • 462
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android录音应用
举报原因:
原因补充:

(最多只允许输入30个字)