录音
来源:互联网 发布:淘宝品牌004 编辑:程序博客网 时间:2024/04/27 18:25
闲着无聊把以前的写的东西整理下
public classMainActivity extendsAppCompatActivity implements View.OnClickListener {
privateButton bt_start,bt_stop;
privateListView lv;
privateFile mRecAudioPath;
List<String>list= newArrayList<String>();
privateFile mRecAudioFile;
privateMediaRecorder mMediaRecorder;
privateString strTempFile="录音_";
@Override
protected voidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mRecAudioPath= getSDPathFile();
initView();
initData();
initListener();
}
private voidinitView(){
bt_start= (Button) findViewById(R.id.bt_start);
bt_stop= (Button) findViewById(R.id.bt_stop);
lv= (ListView) findViewById(R.id.lv);
bt_start.setEnabled(true);
bt_stop.setEnabled(false);
}
private voidinitData(){
list=getData();
ArrayAdapter adapter =new ArrayAdapter(this,android.R.layout.simple_list_item_1,list);
lv.setAdapter(adapter);
}
private voidinitListener(){
bt_stop.setOnClickListener(this);
bt_start.setOnClickListener(this);
lv.setOnItemClickListener(newAdapterView.OnItemClickListener() {
@Override
public voidonItemClick(AdapterView<?> parent, View view,int position, longid) {
File file =new File(mRecAudioPath.getAbsolutePath()+"/"+list.get(position));
play(file);
}
});
}
@Override
public voidonClick(View v) {
switch(v.getId()){
caseR.id.bt_start:
try{
//1实例化MediaRecorder对象
mMediaRecorder= newMediaRecorder();
//2设置麦克风
mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
//3设置输出文件的格式:
mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);
//4设置音频文件的编码:
mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
//5设置输出文件路径
try{
mRecAudioFile= File.createTempFile(strTempFile,".amr",mRecAudioPath);
}catch (IOException e) {
e.printStackTrace();
}
mMediaRecorder.setOutputFile(mRecAudioFile.getAbsolutePath());
//6准备
mMediaRecorder.prepare();
//7开始
mMediaRecorder.start();
//按钮状态
bt_start.setEnabled(false);
bt_stop.setEnabled(true);
}catch (Exception e) {
e.printStackTrace();
}
break;
caseR.id.bt_stop:
if(mRecAudioFile!=null){
//停止录音
mMediaRecorder.stop();
//释放MediaRecorder
mMediaRecorder.release();
mMediaRecorder=null;
//按钮状态
bt_start.setEnabled(true);
bt_stop.setEnabled(false);
initData();
}
break;
default:break;
}
}
/**
* 1 得到SD卡的路径
*@return
*/
privateFile getSDPathFile(){
File file =null;
//检测是否SD卡是否存在
if(Environment.getExternalStorageState().equals(Environment.MEDIA_MOUNTED)){
file =Environment.getExternalStorageDirectory();
}else{
Toast.makeText(MainActivity.this,"没有SD卡",Toast.LENGTH_LONG).show();
}
returnfile;
}
/**
* 2获取数据源 写一个Filter 接口继承 FilenameFilter
*@return
*/
//Filter接口
public class MusicFilter implementsFilenameFilter {
@Override
public booleanaccept(File dir, String filename) {
returnfilename.endsWith(".amr");
}
}
//数据源
publicList<String> getData(){
List<String> musiclist =new ArrayList<String>();
File file =mRecAudioPath;
if(file.listFiles(newMusicFilter())!=null){
if(file.listFiles(newMusicFilter()).length>0){
for(File file1:file.listFiles(newMusicFilter())){
musiclist.add(file1.getName());
}
}
}
returnmusiclist;
}
/**
* 3播放方法
*@param file
*/
private voidplay(File file){
Intent intent =new Intent(Intent.ACTION_VIEW);
Uri uri = Uri.fromFile(file);
intent.setDataAndType(uri,"audio/mp3");
startActivity(intent);
}
注 最后在 AndroidManifest中加入权限
<uses-permissionandroid:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permissionandroid:name="android.permission.RECORD_AUDIO"/>
阅读全文
0 0
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 录音
- 网页录音,html5录音
- DirectSound 录音
- Android 录音
- MCI录音
- android 录音
- Android 录音
- caf录音
- android 录音
- 详解forin,Object.keys和Object.getOwnPropertyNames的区别
- 递归算法简析
- spring Controller中获取bean对象
- Java技能点汇总
- 【程序员面试金典】 集合的子集
- 录音
- Java学习
- 栈内存是如何被编译器维护的
- Java关于HashMap的面试题
- 排序列表转换为二分查找树
- Linux+Eclipse+Python环境搭建
- c#简单的自定义控件
- Mysql Join语法以及性能优化
- 第五章