- 浏览: 547670 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是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 3341提示:在访问网络,或者服务器的数据一定要注意 网络权限的声明: ... -
Android 之 AsyncTask 异步任务
2014-03-20 08:44 3479Android ... -
Android 之 Looper Handler Message 之间的关系
2014-03-19 10:16 3613Android 的消息 ... -
Android 之 多线程与Socket联合使用案例
2014-03-19 10:15 2604多线 ... -
Android 之 多线程和Socket套接字的使用介绍
2014-03-19 10:15 4817And ... -
Android 之 实现Runnable 接口与继承Thread的区别
2014-03-19 10:15 2152实现Runnable 接口 相 ... -
Android 之 GSON解析JSON数据
2014-03-19 10:14 4426... -
Android 之 使用Pull 解析xml文件
2014-03-18 21:04 1000/** * 使用Pull进行 xml 文件的解析 ... -
Android 之 使用DOM解析xml文件
2014-03-18 21:02 2693DOM 解析 xml 格式的文件 1、 xml简介:xml ... -
Android 之 百度API 密钥安全码生成
2014-03-04 22:29 2330近期要做个关于旅游助手的应用,开始接触百度API了。大神们 ... -
Android 之 EditText属性用法介绍
2014-01-06 23:49 3947EditText的属性 EditText继承关系:View-- ... -
Android 之 自定义适配器
2014-01-08 10:40 1705自定义适配器 1、实现 * 自定义适配器要继承 BaseA ... -
Android 之 自定义控件用法介绍
2014-01-08 10:40 1681自定义效果:实现:图片和文字混合 首先创建需要组合的子布局: ... -
Android 之 资源自适应与国际化
2014-01-08 10:40 3019<!-- 国际化和资源自适应 ... -
Android 之 Parcelable 序列化
2014-01-08 10:41 2652/* 序列化 * * 作 ... -
Android 之 五大布局案例
2014-01-08 10:41 20961、LinearLayout 线性布局例子: <Lin ... -
Android 之 通知Notification
2014-03-03 22:30 3822Notification 和 NotificationMana ... -
Android 之 手机全屏显示
2014-03-03 22:30 2282/* 1、全屏状态的显示 介绍:Android 中提供了Wi ... -
Android 之 拦截手机短信并自动转发
2014-03-03 22:29 5436拦截短信和发送短信都需要相关的权限: <?xml ve ... -
Android 之 将RAW资源文件写入SD卡工具类
2014-03-01 10:09 3513package com.sun.coptfiletosd; ...
相关推荐
音频录制音频录制音频录制音频录制音频录制音频录制音频录制音频录制音频录制
资源里面有个JAVA文件,导入那个类,根据文档描述的去调用那个类,来实现在android上录制wav格式的录音
代码分为文件录制与播放、字节流录制与播放、音频音量可视化、加速和减速播放
而Android系统的多媒体框架也为开发者提供了MediaRecorder类来实现视频录制功能。在使用MediaRecorder时我们要注意以下几点: 第一:无法使用模拟器进行测试,在使用MediaRecorder进行音视频录制时,需要用真机进行...
Android 音频录制例子
实现wav格式的音频录制: 开始录制: AudioUtil audio = AudioUtil.getInstance() audio.startRecord(name , int) audio.recordData(); 结束录制: audio.stoprecord(); audio.converWaveFile(name);
因为工作中要使用 Android Camera2 API 来实现相机功能,但因为Camera2比较复杂,网上资料也比较乱,有一定入门门槛,所以花了几天时间系统研究了下,这个项目就是我研究的成果。 其中包括一个自己写的Camera2的Demo...
ndk中的一个音频例子,是个很好的学习代码,在android底层用c实现的音频录制与播放
Android手机一般都提供麦克风的硬件,而Android系统可以利用该硬件来录制音频。 为了在Android应用中录制音频,Android提供了MediaRecorder类,使用MediaRecorder录制音频的过程很简单,步骤如下: Step1:创建...
屏幕录制,通过代码实现屏幕的录制功能,android原生没有此功能。
Android录制通用mp3格式音频文件,觉得好用给好评哦
支持开始、暂停、继续录制等操作的音频录制器。纯原生代码,不使用任何第三方库,好用简单,分享予大家!!!
基于Android平台的DRA音频解码器实现及优化.pdf
简介:一款录音的APP,默认把媒体声音设置为60%,动态获取权限,Android10以及10以下,都 是手动同意单个权限,Android11是弹出一个超级权限,手动选中软件,并赋予权限。 主要内容是:输入音频名字,点击开始录音...
android用MediaRecoder录制音频,生成MP3文件
Android提供了MediaRecorder这一个类来实现视频和音频的录制。 由官方配图可知,MediaRecorder用于录制视频时需要调用一系列的API来设置和录制相关的配置,而且调用方法的顺序是固定的,必须按照这个顺序进行...
音频通信_android实现,主要是利用android平台,建立音频通信模式。可以通过手机音频口,通过模数转换,实现信息提取
主要为大家详细介绍了Android利用AudioRecord类实现音频录制程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android相机,音频视频录制,定位,指南针,传感器,WiFi及网络连接开关,手电筒,摇一摇,指南针,音量控制。
Qt Android 读写文件权限与录制音频权限询问Demo