博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
学习说话录音播放
阅读量:2299 次
发布时间:2019-05-09

本文共 3020 字,大约阅读时间需要 10 分钟。

package com.ouling.ex_recording;//录音效果import android.app.Activity;import android.media.MediaPlayer;import android.media.MediaRecorder;import android.media.MediaPlayer.OnCompletionListener;import android.media.MediaRecorder.AudioSource;import android.media.MediaRecorder.OutputFormat;import android.os.Bundle;import android.view.KeyEvent;import android.view.View;import android.widget.Button;import android.widget.ImageView;import android.widget.Toast;public class Ex_recordingActivity extends Activity {	MediaRecorder mr;//录音	MediaPlayer mplayer;//播放	final String filepath = "/sdcard/androidRecording.amr";	Button btn_record;	ImageView imgview;	boolean is_recording=false;	/** Called when the activity is first created. */	@Override	public void onCreate(Bundle savedInstanceState) {		super.onCreate(savedInstanceState);		setContentView(R.layout.main);		btn_record=(Button)findViewById(R.id.record);		imgview=(ImageView)findViewById(R.id.pic);				btn_record.setOnClickListener(new View.OnClickListener() {						@Override			public void onClick(View v) {				// TODO Auto-generated method stub				switch (v.getId()) {				case R.id.record:					if (is_recording) {						btn_record.setText("播放中...");						mrstop();						vplay(filepath);						is_recording=false;					}else {						btn_record.setText("学习中。。。");						mrstart();						is_recording=true;					}										break;				default:					break;				}			}		});	}			// 开发录音	private boolean mrstart() {		// TODO Auto-generated method stub		mr = new MediaRecorder();		mr.setAudioSource(AudioSource.MIC);		// 设置音源,这里是来自麦克风		mr.setOutputFormat(OutputFormat.RAW_AMR);		// 输出格式		mr.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);		// 编码		mr.setOutputFile(filepath);		// 输出文件路径		try {			mr.prepare();			// 做些准备工作			mr.start();			// 开始			return true;		} catch (Exception e) {			e.printStackTrace();			return false;		}	}	// 停止录音	private void mrstop() {		// TODO Auto-generated method stub		if (mr != null) {			mr.stop();// 停止			mr.release();// 释放		}	}		//播放录音	void vplay(String path) {		try {			mplayer= new MediaPlayer();			mplayer.reset();			mplayer.setDataSource(path);			mplayer.prepare();// 准备同步			mplayer.start();			//播放完成			mplayer.setOnCompletionListener(new OnCompletionListener() {				@Override				public void onCompletion(MediaPlayer arg0) {					// TODO Auto-generated method stub					mplayer.release();					btn_record.setText("开始学习说话");					is_recording=false;									}			});		} catch (Exception e) {			System.out.println(e.toString());			if (mplayer!=null) {				mplayer.release();							}			btn_record.setText("开始学习说话");			is_recording=false;			Toast.makeText(Ex_recordingActivity.this, "无法播放", 1000).show();		}	}	// 当用户返回时	@Override	public boolean onKeyDown(int keyCode, KeyEvent event) {		// TODO Auto-generated method stub		if (keyCode == KeyEvent.KEYCODE_BACK) {			if (mplayer!=null) {				mplayer.stop();				mplayer.release();							}			if (mr!=null ) {				mr.stop();				mr.release();			}			this.finish();			return true;		}		return super.onKeyDown(keyCode, event);	}}

转载地址:http://bbkib.baihongyu.com/

你可能感兴趣的文章
UIApplication和程序启动过程
查看>>
cocoaPods安装2017 以及遇到的坑
查看>>
Android中自定义可以选择中文的NumberPicker屏蔽弹出软键盘
查看>>
Scrapy教程——搭建环境、创建项目、爬取内容、保存文件(txt)
查看>>
SQL SERVER 2012 附加数据AdventureWorks2012失败解决方案
查看>>
C++内联函数(inline)的工作原理与例子
查看>>
Eclipse中使用svn主要命令的详细介绍
查看>>
Cors跨域请求,配置Access-Control-Allow-Origin:"*",无效解决方案
查看>>
Maven私服Nexus配置教程
查看>>
MySql_插入记录时,存在就更新(或不做任何动作),不存在就添加
查看>>
WIN10无法上ipv6,解决方法,亲测有效
查看>>
LeetCode相关的KSum总结
查看>>
Nexus私服搭建、配置、上传snapshot
查看>>
Java调用C++动态链接库dll,有详细过程。VS2015+Eclipse以及失败解决方案
查看>>
常用位运算
查看>>
Java webservice 调用自定义dll(有其他依赖)方法全解,无需设置环境变量
查看>>
数据结构常用算法
查看>>
补码原理(转载)
查看>>
全排列算法所有实现方式
查看>>
二叉树的先序后序中序遍历(递归非递归)
查看>>