Android学习之路-录音功能实现

宁可枝头抱香死,何曾吹落北风中。这篇文章主要讲述Android学习之路-录音功能实现相关的知识,希望能为你提供帮助。
【Android学习之路-录音功能实现】---恢复内容开始---
今天学习了安卓的录音与播放,记录,备忘。。
Xml代码

1 < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2xmlns:tools="http://schemas.android.com/tools" 3android:layout_width="match_parent" 4android:layout_height="match_parent" android:orientation="vertical" 5tools:context="${relativePackage}.${activityClass}" > 6 7< Button android:id="@+id/Startrecording"android:layout_width="match_parent" 8android:layout_height="wrap_content" android:text="开始录音"/> 9< Button android:id="@+id/stoptrecording"android:layout_width="match_parent" 10android:layout_height="wrap_content" android:text="结束录音"/> 11< Button android:id="@+id/Playtape"android:layout_width="match_parent" 12android:layout_height="wrap_content" android:text="播放录音"/> 13 14 15 < /LinearLayout>

布局非常简单,主要是用来演示,下面是java代码
1 package com.example.androidlulin; 2 3 4 5 import java.io.File; 6 import java.io.IOException; 7 8 9 10 import android.app.Activity; 11 import android.media.MediaPlayer; 12 import android.media.MediaRecorder; 13 import android.os.Bundle; 14 import android.view.Menu; 15 import android.view.MenuItem; 16 import android.view.View; 17 import android.view.View.OnClickListener; 18 import android.widget.Button; 19 import android.widget.Toast; 20 21 public class MainActivity extends Activity implements OnClickListener { 22private Button Startrecording,stoptrecording,Playtape; 23private MediaRecorderrecorder; 24private MediaPlayer player; 25private String voicePath ; 26private long time; 27//private MediaPlayer player; 28 29@Override 30protected void onCreate(Bundle savedInstanceState) { 31super.onCreate(savedInstanceState); 32setContentView(R.layout.activity_main); 33//new一个实例 34player = new MediaPlayer(); 35Startrecording = (Button) findViewById(R.id.Startrecording); 36stoptrecording = (Button) findViewById(R.id.stoptrecording); 37Playtape = (Button) findViewById(R.id.Playtape); 38//点击事件 39Playtape.setOnClickListener(this); 40Startrecording.setOnClickListener(this); 41stoptrecording.setOnClickListener(this); 42 43} 44 45@Override 46public void onClick(View v) { 47switch (v.getId()) { 48case R.id.Startrecording://开始录音 49fasong(); 50break; 51case R.id.stoptrecording://结束录音 52jieshu(); 53break; 54case R.id.Playtape://播放录音 55play(); 56break; 57default: 58break; 59} 60} 61 62/** 63* 发送语音 64*/ 65private void fasong(){ 66if(recorder != null){ 67//不等于空的时候让他变闲置 68recorder.reset(); 69}else{ 70recorder = new MediaRecorder(); 71} 72recorder.setAudiosource(MediaRecorder.AudioSource.MIC); 73//输出格式 74recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); 75//设置音频编码器 76recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 77//缓存目录 78String str = FileUtil.getSDCardPath()+"/A微信/voice"; 79//检查该目录是否存在否则创建 80FileUtil.checkDir(str); 81//设置文件名 82voicePath = str+ System.currentTimeMillis()+".amr"; 83//设置录音的输出路径 84recorder.setOutputFile(voicePath); 85 86try { 87recorder.prepare(); 88} catch (IOException e) { 89// TODO Auto-generated catch block 90e.printStackTrace(); 91} 92recorder.start(); 93time = System.currentTimeMillis(); 94} 95 96/** 97* 结束语音 98*/ 99private void jieshu(){ 100recorder.stop(); 101long shijian =System.currentTimeMillis() - time; 102if(shijian< 1000){//判断,如果录音时间小于一秒,则删除文件提示,过短 103File file = new File(voicePath); 104if(file.exists()){//判断文件是否存在,如果存在删除文件 105file.delete(); //删除文件 106Toast.makeText(MainActivity.this, "录音时间过短",Toast.LENGTH_SHORT).show(); 107} 108} 109//重置 110recorder.release(); 111if(recorder != null){ 112recorder.release(); 113recorder = null; 114System.gc(); 115} 116} 117 118/** 119* 播放录音 120*/ 121private void play(){ 122if(player != null){ 123player.reset(); 124try { 125//设置语言的来源 126player.setDataSource(voicePath); 127//初始化 128player.prepare(); 129//开始播放 130player.start(); 131}catch (IOException e) { 132// TODO Auto-generated catch block 133e.printStackTrace(); 134} 135 136} 137} 138 }

好了,到这录音和播放的功能就已经完美实现了,对了,还需要加上录音权限,百度可以搜到
下面附上源码下载地址:链接: https://pan.baidu.com/s/1qYpMITY 密码: jvg5
 

    推荐阅读