Android 使用录音机

主要代码:

package com.shao.mediarecord;

import java.io.File;
import java.io.IOException;

import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.Toast;

public class MainActivity extends Activity {

	public Button btnStartMedia = null;

	public Button btnStopMedia = null;

	public MediaRecorder mediaRecorder = null;

	private OnClickListener onclickListener = new OnClickListener() {

		@Override
		public void onClick(View v) {
			switch(v.getId()) {
				case R.id.btnStartMedia:
					startMediaRecord();
					break;
				case R.id.btnStopMedia:
					stopMediaRecord();
					break;
				default:
					break;
			}
		}
	};

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		this.btnStartMedia = (Button) findViewById(R.id.btnStartMedia);
		this.btnStopMedia = (Button) findViewById(R.id.btnStopMedia);
		this.btnStartMedia.setOnClickListener(onclickListener);
		this.btnStopMedia.setOnClickListener(onclickListener);
	}

	public void startMediaRecord() {
		if(mediaRecorder!=null) {
			Toast.makeText(this, "ERR", Toast.LENGTH_LONG).show();
			return ;
		}
		mediaRecorder = new MediaRecorder();
		mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
		mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
		mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);

		File file = new File(Environment.getExternalStorageDirectory(), "bianbian");
		if(!file.exists()) {
			file.mkdirs();
		}
		File filePath = new File(file, System.currentTimeMillis()+".amr");
		if(filePath!=null) {
			try {
				filePath.createNewFile();
			} catch (IOException e) {
				e.printStackTrace();
			}
		}
		mediaRecorder.setOutputFile(filePath.getAbsolutePath());
		try {
			mediaRecorder.prepare();
			mediaRecorder.start();
		} catch (IllegalStateException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	public void stopMediaRecord() {
		this.mediaRecorder.stop();
		this.mediaRecorder.release();
		this.mediaRecorder = null;
	}
}

介绍:打开app出现两个按钮,一个开始录音,一个停止录音。点击了开始录音后,说话,能够把声音输出到文件。

实现介绍:

开始播放声音,主要用到MediaRecorder类,可以看到这个类是可以直接实例化的。setAudioSource是设置声音源、setOutputFormat是设置输出文件格式、setAudioEncoder是设置声音编码。

mediaRecorder = new MediaRecorder();
mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.AMR_WB);
mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_WB);

然后 设置输出文件和路径,调用start播放方法即可。

mediaRecorder.setOutputFile(filePath.getAbsolutePath());
mediaRecorder.prepare();
mediaRecorder.start();

附上布局配置文件

<LinearLayout 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.shao.mediarecord.MainActivity"
    android:orientation="vertical" >

    <Button
        android:id="@+id/btnStartMedia"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="开始录制" />

    <Button
        android:id="@+id/btnStopMedia"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:text="停止录制" />

</LinearLayout>

最好要说的是,读取设备和存储文件。都要增加相应的权限。

<uses-permission android:name="android.permission.RECORD_AUDIO"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
时间: 2024-08-05 07:22:55

Android 使用录音机的相关文章

android SoundRecorder (录音机)添加录音列表菜单项

在录音机中添加一个录音列表项,点击后用户可以看到已经存在的录音文件. 效果图如下: 修改代码参照如下: 最初的录音机是没有录音列表选项的,所以我们要加上去. SoundRecorder\res\menu\main_menu.xml添加录音菜单选项 <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/menu_item_filetyp

Android 广播&amp;服务

BroadCastReceiver 广播接收者,Android四大组件之一 用于接收广播Intent的,广播Intent的发送是通过调用sendBroadCast/sendOrderBroadCast来实现的,通常一个广播Intent可以被订阅了此Intent的多个广播接收者所接收. 广播 Android中系统通过广播发布信息,只需要注册广播接受者 Android系统运行过程中可能产生很多事件,当这些事件发生时,系统希望通知到其他应用知道这个事件,所以会发出广播. 如:开机.电量改变.收发短信.

Android多媒体系统的业务

请支持原创,尊重原创,转载请注明出处:http://blog.csdn.net/kangweijian(来自kangweijian的csdn博客) Android 多媒体应用的主要业务 Music Player Video Player Camera Sound Recorder VideoCamera Media Metadate 媒体播放器结构 媒体播放器是多媒体中最重要的一个环节,媒体播放器涉及以下内容: 本地媒体框架中的媒体播放器部分 PVPlayer(实现的核心代码) 音频.视频编解码

imx8系列软件资源介绍(米尔MYD-JX8MX)

为响应行业应用和满足客户需求,作为 NXP 官方合作的设计公司,米尔电子推出了基于 NXP 公司 i.MX8M 系列芯片的开发平台 MYD-JX8MX 系列开发板,以满足这一类高性能产品的板卡要求.该开发板采用核心板(MYC-JX8MX)加底板(MYB-JX8MX)的形式,提供了 HDMI,LVDS(或 MIPI).双摄像头输入(CSI).4G 模块扩展(带 SIM 卡卡座).WIFI 蓝牙模块.多路 USB.多串口等外设接口.与此同时,米尔提供了 Linux 的完整软件包及配套说明文档.以帮助

【腾讯bugly干货分享】Android自绘动画实现与优化实战——以Tencent OS录音机波形动

前言 本文为腾讯bugly的原创内容,非经过本文作者同意禁止转载,原文地址为:http://bugly.qq.com/bbs/forum.php?mod=viewthread&tid=1180 我们所熟知的,Android 的图形绘制主要是基于 View 这个类实现. 每个 View 的绘制都需要经过 onMeasure.onLayout.onDraw 三步曲,分别对应到测量大小.布局.绘制. Android 系统为了简化线程开发,降低应用开发的难度,将这三个过程都放在应用的主线程(UI 线程)

优秀的 Android 开源项目

摘要  转载http://www.trinea.cn/android/android-open-source-projects-view/,方便大家找到自己合适的资料 目录[-] 一.ListView 二.ActionBar 三.Menu 四.ViewPager .Gallery 五.GridView 六.ImageView 七.ProgressBar 八.其他 GitHub上优秀Android开源项目 3. Android开发神器 1.Xabber客户端 2.oschina客户端 3.手机安全

2016年最牛逼的分类Android项目源码免费一次性打包下载!

之前发过一个帖子,但是那个帖子有点问题我就重新发一个吧,下面的源码是我从今年开始不断整理源码区和其他网站上的安卓例子源码,目前总共有810套左右,根据实现的功能被我分成了100多个类,总共接近2.5G,还在不断更新.初学者可以快速方便的找到自己想要的例子,大神也可以看一下别人的方法实现.虽然的例子都是我一个人辛辛苦苦花了很多时间和精力整理的,但是既然这些例子是来自于社区那就让他们免费回归社区吧,(是的!特么的不要一分钱!最看不起那些挂羊头卖狗的)你可以在本帖里面按Ctrl+F查找你需要的关键字,

Android系统源代码目录结构 “Android源代码”“目录结构”

在讲述Android源码编译的三个步骤之前,将先介绍Android源码目录结构,以便读者理清Android编译系统核心代码在Android源代码的位置. Android源代码顶层目录结构如下所示: ├──abi #应用二进制接口,不同的操作系统,应用二进制接口不同,因此linux上的二进制可执行文件在windows上无法执行 ├──android #存放了一些xml文件,用于描述工程路径及其对应的远程仓库地址,repo工具将使用这些信息同步代码 ├──bionic #bionic C库,Andr

Android讯飞语音云语音听写学习

讯飞语音云语音听写学习         这几天两个舍友都买了iPhone 6S,玩起了"Hey, Siri",我依旧对我的Nexus 5喊着"OK,Google".但种种原因,国内的"OK,Google"并不能展示出他的全部威力,于是上网搜索国内Android平台的语音助手,个人觉得评价最好的是讯飞的--灵犀语音助手.其实讯飞语音云平台早就注册过了,并下载了相应的SDK,只是没仔细研究.今天突然想好好学习一下,以方便以后集成到自己开发的APP中,