Android(安卓)中歌曲录制。。。
16lz
2021-12-04
packagecom.king.android.media;
importjava.io.File;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.ListActivity;
importandroid.content.Intent;
importandroid.media.MediaRecorder;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.Button;
importandroid.widget.ListView;
importcom.king.android.R;
/**
*描述:声音录制
*作者:Andy.Liu
*时间:2012-7-30上午07:27:06
* */
public classRecordActivity extendsListActivity implementsOnClickListener{
// 录制的音频文件
privateFilemRecAudioFile,mRecAudioPath;
privateMediaRecordermMediaRecoder; // MediaRecorder对象
privateList<String>mMusicList= newArrayList<String>(); // 录音文件列表
privateStringstrTempFile="recaudio_"; // 临时文件前缀
@Override
protected voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mediarecore_layout);
ButtonbtnOperate=(Button)findViewById(R.id.btnStart);
btnOperate.setOnClickListener( this);
btnOperate=(Button)findViewById(R.id.btnStop);
btnOperate.setOnClickListener( this);
mRecAudioPath=Environment.getExternalStorageDirectory();
refreshFile(mRecAudioPath.getAbsolutePath(),".amr");
// musicList();
}
@Override
public voidonClick(Viewv){
switch(v.getId()){
caseR.id.btnStop:
doStop();
break;
caseR.id.btnStart:
doStart();
break;
}
}
// 开始录音
private voiddoStart(){
try{
// 创建录音文件
mRecAudioFile=File.createTempFile(strTempFile,".amr",mRecAudioPath);
// 实例化MediaRecorder对象
mMediaRecoder= newMediaRecorder();
// 设置麦克风
mMediaRecoder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置输出的文件格式
mMediaRecoder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
// 设置音频文件的编码
mMediaRecoder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 文件输出路径
mMediaRecoder.setOutputFile(mRecAudioFile.getAbsolutePath());
// 准备
mMediaRecoder.prepare();
// 开始
mMediaRecoder.start();
} catch(IOExceptione){
e.printStackTrace();
} finally{
}
}
private voiddoStop(){
if( null!=mRecAudioFile){
mMediaRecoder.stop(); // 停止录音
mMusicList.add(mRecAudioFile.getName());
ArrayAdapter<String>musicList= newArrayAdapter<String>(RecordActivity. this,R.layout.list,mMusicList);
setListAdapter(musicList);
mMediaRecoder.release();
mMediaRecoder= null;
}
}
/* 播放录音文件 */
private voidplayMusic(Filefile)
{
Intentintent= newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
/* 设置文件类型 */
intent.setDataAndType(Uri.fromFile(file),"audio");
startActivity(intent);
}
@Override
/* 当我们点击列表时,播放被点击的音乐 */
protected voidonListItemClick(ListViewl,Viewv, intposition, longid)
{
/* 得到被点击的文件 */
Fileplayfile= newFile(mRecAudioPath.getAbsolutePath()+File.separator+mMusicList.get(position));
/* 播放 */
playMusic(playfile);
}
/**
*
*TODO:播放列表
*Author:Andy.Liu
*CreateTime:2012-7-28上午11:27:26
*TAG:
*Return:void
*/
public voidmusicList(){
// 取得指定位置的文件显示到播放列表。
Filehome=mRecAudioPath;
if(home.listFiles( newMusicFilter()).length>0){
for(Filefile:home.listFiles( newMusicFilter())){
mMusicList.add(file.getName());
}
ArrayAdapter<String>musicList= newArrayAdapter<String>(RecordActivity. this,R.layout.list,mMusicList);
setListAdapter(musicList);
}
}
/**
*
递归法获取文件夹文件
*TODO:TODO
*Author:Andy.Liu
*CreateTime:2012-7-29下午11:40:33
*TAG: @param path文件路径,一般选择根目录
*TAG: @param fileType文件类型。
*Return:void
*/
public voidrefreshFile(Stringpath,StringfileType){
Filefile= newFile(path);
File[]files=file.listFiles();
if( null==files)
return;
for( inti=0;i<files.length;i++){
if(files[i].isDirectory()){
refreshFile(files[i].getAbsolutePath(),fileType); // 注意这里的递归方法
} else{
if(files[i].getName().endsWith(fileType))
// allFiles.add(files[i]);
mMusicList.add(file.getName());
}
}
}
// 过渡文件类型
classMusicFilter implementsFilenameFilter{
@Override
public booleanaccept(Filedir,Stringfilename){
returnfilename.endsWith(".amr");
}
}
}
importjava.io.File;
importjava.io.FilenameFilter;
importjava.io.IOException;
importjava.util.ArrayList;
importjava.util.List;
importandroid.app.ListActivity;
importandroid.content.Intent;
importandroid.media.MediaRecorder;
importandroid.net.Uri;
importandroid.os.Bundle;
importandroid.os.Environment;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.widget.ArrayAdapter;
importandroid.widget.Button;
importandroid.widget.ListView;
importcom.king.android.R;
/**
*描述:声音录制
*作者:Andy.Liu
*时间:2012-7-30上午07:27:06
* */
public classRecordActivity extendsListActivity implementsOnClickListener{
// 录制的音频文件
privateFilemRecAudioFile,mRecAudioPath;
privateMediaRecordermMediaRecoder; // MediaRecorder对象
privateList<String>mMusicList= newArrayList<String>(); // 录音文件列表
privateStringstrTempFile="recaudio_"; // 临时文件前缀
@Override
protected voidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.mediarecore_layout);
ButtonbtnOperate=(Button)findViewById(R.id.btnStart);
btnOperate.setOnClickListener( this);
btnOperate=(Button)findViewById(R.id.btnStop);
btnOperate.setOnClickListener( this);
mRecAudioPath=Environment.getExternalStorageDirectory();
refreshFile(mRecAudioPath.getAbsolutePath(),".amr");
// musicList();
}
@Override
public voidonClick(Viewv){
switch(v.getId()){
caseR.id.btnStop:
doStop();
break;
caseR.id.btnStart:
doStart();
break;
}
}
// 开始录音
private voiddoStart(){
try{
// 创建录音文件
mRecAudioFile=File.createTempFile(strTempFile,".amr",mRecAudioPath);
// 实例化MediaRecorder对象
mMediaRecoder= newMediaRecorder();
// 设置麦克风
mMediaRecoder.setAudioSource(MediaRecorder.AudioSource.MIC);
// 设置输出的文件格式
mMediaRecoder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
// 设置音频文件的编码
mMediaRecoder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
// 文件输出路径
mMediaRecoder.setOutputFile(mRecAudioFile.getAbsolutePath());
// 准备
mMediaRecoder.prepare();
// 开始
mMediaRecoder.start();
} catch(IOExceptione){
e.printStackTrace();
} finally{
}
}
private voiddoStop(){
if( null!=mRecAudioFile){
mMediaRecoder.stop(); // 停止录音
mMusicList.add(mRecAudioFile.getName());
ArrayAdapter<String>musicList= newArrayAdapter<String>(RecordActivity. this,R.layout.list,mMusicList);
setListAdapter(musicList);
mMediaRecoder.release();
mMediaRecoder= null;
}
}
/* 播放录音文件 */
private voidplayMusic(Filefile)
{
Intentintent= newIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setAction(android.content.Intent.ACTION_VIEW);
/* 设置文件类型 */
intent.setDataAndType(Uri.fromFile(file),"audio");
startActivity(intent);
}
@Override
/* 当我们点击列表时,播放被点击的音乐 */
protected voidonListItemClick(ListViewl,Viewv, intposition, longid)
{
/* 得到被点击的文件 */
Fileplayfile= newFile(mRecAudioPath.getAbsolutePath()+File.separator+mMusicList.get(position));
/* 播放 */
playMusic(playfile);
}
/**
*
*TODO:播放列表
*Author:Andy.Liu
*CreateTime:2012-7-28上午11:27:26
*TAG:
*Return:void
*/
public voidmusicList(){
// 取得指定位置的文件显示到播放列表。
Filehome=mRecAudioPath;
if(home.listFiles( newMusicFilter()).length>0){
for(Filefile:home.listFiles( newMusicFilter())){
mMusicList.add(file.getName());
}
ArrayAdapter<String>musicList= newArrayAdapter<String>(RecordActivity. this,R.layout.list,mMusicList);
setListAdapter(musicList);
}
}
/**
*
递归法获取文件夹文件
*TODO:TODO
*Author:Andy.Liu
*CreateTime:2012-7-29下午11:40:33
*TAG: @param path文件路径,一般选择根目录
*TAG: @param fileType文件类型。
*Return:void
*/
public voidrefreshFile(Stringpath,StringfileType){
Filefile= newFile(path);
File[]files=file.listFiles();
if( null==files)
return;
for( inti=0;i<files.length;i++){
if(files[i].isDirectory()){
refreshFile(files[i].getAbsolutePath(),fileType); // 注意这里的递归方法
} else{
if(files[i].getName().endsWith(fileType))
// allFiles.add(files[i]);
mMusicList.add(file.getName());
}
}
}
// 过渡文件类型
classMusicFilter implementsFilenameFilter{
@Override
public booleanaccept(Filedir,Stringfilename){
returnfilename.endsWith(".amr");
}
}
}
更多相关文章
- NPM 和webpack 的基础使用
- 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
- Android学习笔记(15)————android工程中新建Class注意事项
- Android实现动画持续旋转
- android volley 上传文件
- Android文件下载
- Android(安卓)密度转换 java文件
- Android(安卓)自定义ToolBar
- android,如果某个文件存在就删除