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文件可以正常播放。

android 两种调用系统资源实现录音

 在移动APP开发中,每逢APP应用设计到多媒体开发的时候,都会让很多的程序员头疼不已,而且项目的开发进度会放慢、项目 的难度也会加大蛮多,同时APP的测试也会增加。Android中的多媒体开...
  • qq_26336495
  • qq_26336495
  • 2015年05月05日 16:33
  • 2277

判断Android手机是否有录音权限

判断手机是否有录音权限的工具类,兼容6.0以上以及以下android系统 package com.qhcloud.home.utils; import android.content.Context...
  • jdfkldjlkjdl
  • jdfkldjlkjdl
  • 2017年01月19日 18:35
  • 7803

android 开发录音那些事(录音权限授权及判断录音权限是否拒绝处理)

在项目开发录音功能是,OnTouchListener调用时使用录音功能,接下来就总结下开发过程中遇到的问题及解决办法: (1)第一次点击时会跳出选择是否授权录音权限的对话款,操作后会发现程序崩掉,怎...
  • u012195640
  • u012195640
  • 2015年09月04日 09:27
  • 4595

Android录音工具类

以下工具类都是经过实战开发验证都是可以直接复制使用的。      录音工具类介绍:      录音工具类主要平时用来开发语音聊天的,在微信和QQ上该工具类都是常用的,因为语音聊天。      使用硬件...
  • SYIF88
  • SYIF88
  • 2016年09月09日 14:14
  • 1156

android 权限录音权限检测

最近在项目中要用到语音通话功能,后来测试发现通话过程中有听不到对方声音的情况,经过检测 其中有部分原因是因为有些手机在app安装后会被手机直接禁止录音权限,发现问题后去解决的过程发现,系统自己提供的检...
  • wanzhuanit
  • wanzhuanit
  • 2016年04月22日 10:53
  • 14642

Android 录音实现方法、仿微信语音、麦克风录音、发送语音、解决5.0以上BUG

本文修改自:http://www.jianshu.com/p/06eca50ddda4 效果图(注!由于使用的模拟器录制,所以图片中的录音时候话筒上下波动比较小,手机上正常!): ...
  • fan7983377
  • fan7983377
  • 2016年06月24日 10:33
  • 21783

Android使用MediaRecorder实现录音及播放

现在项目中有使用到音视频相关技术,在参考了网上各种大牛的资料及根据自己项目实际情况(兼容安卓6.0以上版本动态权限管理等), 把声音录制及播放相关代码做个记录。 public class Medi...
  • true100
  • true100
  • 2017年02月10日 09:52
  • 4491

android 6.0以下,拒绝录音权限后处理

搜了很久,都是牛头不对马嘴的复制黏贴。 大概感觉就是android 6.0以下要获取权限是否被拒绝了很难。。 最后找到个这个方法,凑活着用。 MediaRecorder mRecorder = ...
  • yu7k666
  • yu7k666
  • 2016年10月10日 14:52
  • 2467

Android实现录音的方法(最重要的是对MediaRecorder的试用方法)

package cn.eoe.record; import java.io.File; import java.io.IOException; import android.app.Activit...
  • lixiaodaoaaa
  • lixiaodaoaaa
  • 2014年11月17日 18:36
  • 1671

Android AudioRecord实现录音

转至:http://blog.sina.com.cn/s/blog_4c070656010127tn.html  Android系统提供了一些类以便应用去实现录音的功能。AndioRecord就...
  • h183288132
  • h183288132
  • 2016年04月14日 15:33
  • 1789
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android录音应用
举报原因:
原因补充:

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