---恢复内容开始---
今天学习了安卓的录音与播放,记录,备忘。。
Xml代码
1 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 2 xmlns:tools="http://schemas.android.com/tools" 3 android:layout_width="match_parent" 4 android:layout_height="match_parent" android:orientation="vertical" 5 tools:context="${relativePackage}.${activityClass}" > 6 7 <Button android:id="@+id/Startrecording" android:layout_width="match_parent" 8 android:layout_height="wrap_content" android:text="开始录音"/> 9 <Button android:id="@+id/stoptrecording" android:layout_width="match_parent" 10 android:layout_height="wrap_content" android:text="结束录音"/> 11 <Button android:id="@+id/Playtape" android:layout_width="match_parent" 12 android: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 { 22 private Button Startrecording,stoptrecording,Playtape; 23 private MediaRecorder recorder; 24 private MediaPlayer player; 25 private String voicePath ; 26 private long time; 27 //private MediaPlayer player; 28 29 @Override 30 protected void onCreate(Bundle savedInstanceState) { 31 super.onCreate(savedInstanceState); 32 setContentView(R.layout.activity_main); 33 //new一个实例 34 player = new MediaPlayer(); 35 Startrecording = (Button) findViewById(R.id.Startrecording); 36 stoptrecording = (Button) findViewById(R.id.stoptrecording); 37 Playtape = (Button) findViewById(R.id.Playtape); 38 //点击事件 39 Playtape.setOnClickListener(this); 40 Startrecording.setOnClickListener(this); 41 stoptrecording.setOnClickListener(this); 42 43 } 44 45 @Override 46 public void onClick(View v) { 47 switch (v.getId()) { 48 case R.id.Startrecording://开始录音 49 fasong(); 50 break; 51 case R.id.stoptrecording://结束录音 52 jieshu(); 53 break; 54 case R.id.Playtape://播放录音 55 play(); 56 break; 57 default: 58 break; 59 } 60 } 61 62 /** 63 * 发送语音 64 */ 65 private void fasong(){ 66 if(recorder != null){ 67 //不等于空的时候让他变闲置 68 recorder.reset(); 69 }else{ 70 recorder = new MediaRecorder(); 71 } 72 recorder.setAudioSource(MediaRecorder.AudioSource.MIC); 73 //输出格式 74 recorder.setOutputFormat(MediaRecorder.OutputFormat.RAW_AMR); 75 //设置音频编码器 76 recorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB); 77 //缓存目录 78 String str = FileUtil.getSDCardPath()+"/A微信/voice"; 79 //检查该目录是否存在 否则创建 80 FileUtil.checkDir(str); 81 //设置文件名 82 voicePath = str+ System.currentTimeMillis()+".amr"; 83 //设置录音的输出路径 84 recorder.setOutputFile(voicePath); 85 86 try { 87 recorder.prepare(); 88 } catch (IOException e) { 89 // TODO Auto-generated catch block 90 e.printStackTrace(); 91 } 92 recorder.start(); 93 time = System.currentTimeMillis(); 94 } 95 96 /** 97 * 结束语音 98 */ 99 private void jieshu(){ 100 recorder.stop(); 101 long shijian =System.currentTimeMillis() - time; 102 if(shijian<1000){//判断,如果录音时间小于一秒,则删除文件提示,过短 103 File file = new File(voicePath); 104 if(file.exists()){//判断文件是否存在,如果存在删除文件 105 file.delete();//删除文件 106 Toast.makeText(MainActivity.this, "录音时间过短",Toast.LENGTH_SHORT).show(); 107 } 108 } 109 //重置 110 recorder.release(); 111 if(recorder != null){ 112 recorder.release(); 113 recorder = null; 114 System.gc(); 115 } 116 } 117 118 /** 119 * 播放录音 120 */ 121 private void play(){ 122 if(player != null){ 123 player.reset(); 124 try { 125 //设置语言的来源 126 player.setDataSource(voicePath); 127 //初始化 128 player.prepare(); 129 //开始播放 130 player.start(); 131 }catch (IOException e) { 132 // TODO Auto-generated catch block 133 e.printStackTrace(); 134 } 135 136 } 137 } 138 }
好了,到这录音和播放的功能就已经完美实现了,对了,还需要加上录音权限,百度可以搜到
下面附上源码下载地址:链接: https://pan.baidu.com/s/1qYpMITY 密码: jvg5