- 浏览: 560277 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
调用系统自带的程序进行音频的录制:
使用MediaRecoreder实现音频录制:
package com.example.media_record;
package com.example.media_record; import android.app.Activity; import android.content.Intent; import android.media.MediaPlayer; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.Toast; /* 使用自带的音频录制程序 * 利用MediaRecorder 类实现自己的音频录制程序,也可以录制视频; * 创建实例后,调用: * 1、setAudioSource 初始化 * 2、setOuputFormat 音频格式 * 3、setAudioEncoder 初始化; * 4、setOutputFile() 指定存放录制内容的文件; * * */ public class MainActivity extends Activity { private Button system_record,custom_media,custom_audio; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); /* 获取组件对象,并且设置事件监听 */ system_record = (Button) findViewById(R.id.system_mediaRecord); custom_media = (Button) findViewById(R.id.custom_mediaRecord); custom_audio = (Button) findViewById(R.id.custom_audioRecord); /* 设置事件监听 */ system_record.setOnClickListener(listener); custom_audio.setOnClickListener(listener); custom_media.setOnClickListener(listener); } /* 覆盖该方法,接收数据 *//* 这里获取录制到的音频的Uri, 可以进行播放等操作 */ protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if(requestCode == RESULT_OK){ Uri audioPath = data.getData(); MediaPlayer mediaPlayer = MediaPlayer.create(this, audioPath); mediaPlayer.start(); Toast.makeText(MainActivity.this, audioPath.toString(), 1000).show(); } } /* 设置按钮事件监听器 */ OnClickListener listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub switch(v.getId()){ case R.id.system_mediaRecord: /* 调用Android自带的音频录制程序 */ Intent intent1= new Intent(MediaStore.Audio.Media.RECORD_SOUND_ACTION); startActivityForResult(intent1, 0); break; case R.id.custom_mediaRecord: /* 通过MediaRecorder 类实现自己的音频录制程序 */ Intent intent2 = new Intent(); intent2.setClass(MainActivity.this,MyMediarRecorder.class); startActivityForResult(intent2, 1); break; case R.id.custom_audioRecord: /* 通过AudioRecord类实现自己的音频录制程序 */ Intent intent3 = new Intent(); intent3.setClass(MainActivity.this, MyAudioRecord.class); startActivityForResult(intent3, 2); break; } } }; }
使用MediaRecoreder实现音频录制:
package com.example.media_record;
import java.io.File; import android.app.Activity; import android.content.ContentValues; import android.content.Intent; import android.media.MediaPlayer; import android.media.MediaPlayer.OnCompletionListener; import android.media.MediaRecorder; import android.net.Uri; import android.os.Bundle; import android.os.Environment; import android.provider.MediaStore; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.TextView; import android.widget.Toast; /* 启动自定义的音频录制程序来完成录制的工作 * * 权限: 为了可以录制音频需要:RECORD_AUDIO权限 * 权限:为了可以写入SDCard,需要:WRITE_EXTERNAL_STORAGE权限; * * */ public class MyMediarRecorder extends Activity { private TextView stateView; private Button start,stop,play,finish; private MediaRecorder recorder; private File audioFile; private Uri fileUri; private MediaPlayer mediaPlayer; protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.media_recorder_layout); /* 获取组件对象 */ stateView = (TextView) findViewById(R.id.stateView); start = (Button) findViewById(R.id.start); stop = (Button) findViewById(R.id.stop); play = (Button) findViewById(R.id.play); finish = (Button) findViewById(R.id.finish); start.setOnClickListener(listener); stop.setOnClickListener(listener); play.setOnClickListener(listener); finish.setOnClickListener(listener); stop.setEnabled(false); play.setEnabled(false); } /* 事件:处理用户的动作 */ OnClickListener listener = new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.start: /* 开始录制 *//* 需要一个MediaRecorder对象 */ recorder = new MediaRecorder(); /* 指定MIC(Microphone audio source) */ recorder.setAudioSource(MediaRecorder.AudioSource.MIC); /* 指定音频文件保存的格式 */ /* THREE_GPP: 录制后文件是一个3gp 文件,支持视频和音频录制 */ recorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP); /* 指定Audio 编码方式,目前只有AMR_NB格式 */ recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); /* 指定录制文件的存储路径 */ File fpath = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/data/files/"); /* 创建文件夹 */ fpath.mkdirs(); try{ /* 创建临时文件 *//* 参数:前缀 ,后缀,目录地址 */ audioFile = File.createTempFile("recording", ".3gp", fpath); }catch(Exception ex){ Toast.makeText(MyMediarRecorder.this, "临时文件创建失败", 1000).show(); } /* 设置文件的存储位置 */ recorder.setOutputFile(audioFile.getAbsolutePath()); /* 开始录制 */ try{ /* 准备 */ recorder.prepare(); }catch(Exception ex){ Toast.makeText(MyMediarRecorder.this, "录音失败", 1000).show(); } /* 开始 */ recorder.start(); stateView.setText("正在录制..."); start.setEnabled(false); play.setEnabled(false); stop.setEnabled(true); break; /*********************************************************/ case R.id.stop: /* 停止录制 */ recorder.stop(); /* 释放资源 */ recorder.release(); /* 然后将录制的文件存储在MediaStore中 ,实现数据共享*/ ContentValues values = new ContentValues(); values.put(MediaStore.Audio.Media.TITLE, "this is my first recored_audio"); values.put(MediaStore.Audio.Media.DATE_ADDED, System.currentTimeMillis()); values.put(MediaStore.Audio.Media.DATA, audioFile.getAbsolutePath()); /* 获取插入数据的Uri */ fileUri = getContentResolver().insert(MediaStore.Audio.Media.EXTERNAL_CONTENT_URI, values); /* 录制结束后 ,实例化一个MediaPlayer对象,播放*/ mediaPlayer = new MediaPlayer(); mediaPlayer.setOnCompletionListener(new OnCompletionListener() { public void onCompletion(MediaPlayer mp) { /* 更新状态 */ stateView.setText("准备录制..."); play.setEnabled(true); start.setEnabled(true); stop.setEnabled(false); } }); /* 准备播放 */ try{ mediaPlayer.setDataSource(audioFile.getAbsolutePath()); mediaPlayer.prepare(); }catch(Exception ex){ } /* 更新状态 */ stateView.setText("准备播放"); play.setEnabled(true); start.setEnabled(true); stop.setEnabled(false); break; case R.id.play: /* 播放录音 *//* 在录音结束的时候,已经实例化了MediaPlayer , 做好了播放的准备 */ mediaPlayer.start(); /* 更新状态 */ stateView.setText("正在播放"); start.setEnabled(false); stop.setEnabled(false); play.setEnabled(false); break; case R.id.finish: /* 完成录制,返回录制的音频的Uri */ Intent intent = new Intent(); intent.setData(fileUri); this.setResult(RESULT_OK,intent); this.finish(); break; default: break; } } private void finish() { // TODO Auto-generated method stub } private void setResult(int resultOk, Intent intent) { // TODO Auto-generated method stub } }; }
发表评论
-
Android 之 网络访问服务器,解析JSON数据
2014-03-28 22:50 3421提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3525Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3671Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2683多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4889And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2203实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4499... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1052/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2749DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2419近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3996EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1787自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1721自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3087<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2702/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 21361、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3904Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2351/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3622package com.sun.coptfiletosd; ...
相关推荐
在Android平台上进行音频录制涉及到许多核心技术和组件,包括MediaRecorder、AudioRecord以及音频编码格式等。下面将详细探讨这些知识点。 一、MediaRecorder类 MediaRecorder是Android系统提供用于捕捉多媒体数据...
Android Media Framework提供了录音机(Recorder)和媒体播放器(MediaPlayer)类,用于实现音频的录制和播放。在文件录制与播放方面,我们可以使用AudioRecord类来捕获音频数据,然后将其保存到本地文件,例如MP3或...
在Android平台上,录制音频文件是一项常见的任务,特别是对于开发音乐应用或者需要语音交互的应用来说。本教程将聚焦于如何在Android中录制`.wav`格式的音频文件,这是一种无损且广泛应用的音频格式。我们将主要围绕...
本文将深入探讨如何使用纯原生的Android SDK来实现一个支持开始、暂停和继续录制功能的音频录制器,不依赖任何第三方库。 首先,我们要了解Android中的`MediaRecorder`类,它是Android SDK提供的一个核心组件,专门...
本文将深入探讨如何利用Android提供的API接口MediaRecord和AudioRecorder实现音频的录制与播放,并通过源码分析,帮助开发者更好地理解和运用这些功能。 首先,我们来看MediaRecord类。MediaRecord是Android系统...
本文将深入探讨如何在Android中实现音频录制,主要基于提供的"AudioRecordDemo"示例。 首先,我们要理解Android的音频框架。Android音频系统包括AudioRecord类,它是用于低级音频数据录制的API。它允许应用程序直接...
在Android平台上,虽然原生系统并未提供直接的屏幕录制功能,但开发者可以通过一系列技术手段来实现这一需求。本文将深入探讨如何使用代码实现Android屏幕录制功能。 首先,我们需要理解Android的多媒体框架,尤其...
Android音频录制程序是Android开发中的一项重要功能,通过使用AudioRecord类可以实现音频录制程序。下面是Android音频录制程序开发的详细介绍: 一、AudioRecord类简介 AudioRecord类是Android中用于音频录制的类...
而Android系统的多媒体框架也为开发者提供了MediaRecorder类来实现视频录制功能。在使用MediaRecorder时我们要注意以下几点: 第一:无法使用模拟器进行测试,在使用MediaRecorder进行音视频录制时,需要用真机进行...
因为工作中要使用 Android Camera2 API 来实现相机功能,但因为Camera2比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,这个项目就是我研究的成果。 其中包括一个自己写的Camera2的Demo...
本文将深入探讨如何在Android系统上实现原生的音频录制和播放,并支持自定义页面播放,特别关注Android 6.0及以上版本的权限管理。 一、音频录制 1. **权限管理**:在Android 6.0(API级别23)及以后的版本,用户...
在这个“vlc-android实现截图,录制视频Dome程序”中,我们重点探讨如何利用VLC库在Android应用中实现视频播放、截图以及录制功能。 **一、VLC的Android集成** 在Android项目中集成VLC,你需要将提供的源码解压缩并...
在Android平台上,开发基于Qt的应用程序时,由于Android 6.0(API级别23)引入了运行时权限管理,因此对于涉及敏感操作如读写文件和录制音频的功能,需要在运行时请求用户授权。本Demo是针对这些权限管理的一个实例...
本教程将详细介绍如何使用Android SDK来录制AAC格式的音频文件,提供一个完整的实现案例。AAC(Advanced Audio Coding)是一种高效的音频编码标准,它能提供高质量的音频体验,同时占用较少的存储空间。 1. **AAC...
AudioRecord是Android提供的一个API,用于从设备麦克风录制音频数据。它允许开发者设置录音参数,如采样率、位深度和通道数,以满足不同的音频质量需求。在这个示例中,可能创建了一个AudioRecord实例,并设置了合适...
简介:一款录音的APP,默认把媒体声音设置为60%,动态获取权限,Android10以及10以下,都 是手动同意单个权限,Android11是弹出一个超级权限,手动选中软件,并赋予权限。 主要内容是:输入音频名字,点击开始录音...
本文将深入探讨如何使用`AudioRecord`和`MediaRecorder`这两个核心API来实现音频录制,特别是针对PCM和AAC这两种编码格式。 首先,我们要理解PCM( Pulse Code Modulation)和AAC(Advanced Audio Coding)的基本...
1. **录制音频** - **初始化MediaRecorder**: 首先,创建一个MediaRecorder实例,并设置其音频源(如AudioSource.MIC),输出格式(如OUTPUT_FORMAT_AAC_ADTS),音频编码(如ENCODING_PCM_16BIT)以及输出文件路径...
综上所述,实现Android音频实时传输与播放涉及多个技术层面,包括音频录制、编码/解码、网络传输、播放控制以及性能优化。掌握这些知识点对于开发高质量的语音通信应用至关重要。通过研究提供的源代码,开发者可以更...
该项目是一个基于Java语言的Android音频录制应用——AudioRecordDemo的设计源码,包含46个文件,其中包括14个XML布局文件、9个Java源代码文件、3个Gradle构建脚本文件、...该应用旨在实现Android平台上的音频录制功能。