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");
}
}

}

更多相关文章

  1. NPM 和webpack 的基础使用
  2. 【阿里云镜像】使用阿里巴巴DNS镜像源——DNS配置教程
  3. Android学习笔记(15)————android工程中新建Class注意事项
  4. Android实现动画持续旋转
  5. android volley 上传文件
  6. Android文件下载
  7. Android(安卓)密度转换 java文件
  8. Android(安卓)自定义ToolBar
  9. android,如果某个文件存在就删除

随机推荐

  1. Activity中的四种启动模式和onNewIntent(
  2. Android联系人数据库全解析-2.0以上
  3. Android 存储目录
  4. Android AudioPolicyService和AudioPolic
  5. Android模拟器——QEMU
  6. Android四种启动模式及其注意事项
  7. 安卓布局被软键盘顶上去的解决方案
  8. ProGuard代码混淆详细攻略
  9. android切换到后台,返回后图片纹理丢失
  10. Android Studio 开发常用快捷键