首页 > 代码库 > Android学习之路-录音功能实现
Android学习之路-录音功能实现
---恢复内容开始---
今天学习了安卓的录音与播放,记录,备忘。。
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 block133 e.printStackTrace();134 }135 136 }137 }138 }
好了,到这录音和播放的功能就已经完美实现了,对了,还需要加上录音权限,百度可以搜到
下面附上源码下载地址:链接: https://pan.baidu.com/s/1qYpMITY 密码: jvg5
Android学习之路-录音功能实现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。