Android自带的SoundRecoder软件写得很简单,就3个Java文件,最有特色的还算哪个指针了。这里并不是要介绍那个个指针的实现过程,其实也简单,就是一个算法,通过录音过程中获取的振幅来实现指针的偏移。

MediaRecorder.getMaxAmplitude(); // 得到录音时的最大振幅

赶紧上代码吧,两分钟的时间马上就过了...界面设计很简单,3个按钮(开始录音,停止录音,播放录音)。

一、新建工程SoundRecoderDemo

二、main.xml(布局文件)

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="horizontal" ><Buttonandroid:id="@+id/start"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="start" /><Buttonandroid:id="@+id/stop"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="stop" /><Buttonandroid:id="@+id/play"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_weight="1"android:text="play" /></LinearLayout>

三、SoundRecorderActivity(具体录音实现)

import java.io.File;
import java.io.IOException;import android.app.Activity;
import android.media.MediaRecorder;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;public class SoundRecorderActivity extends Activity implements OnClickListener {private Button btnStart;private Button btnStop;private Button btnPlay;private MediaRecorder mMediaRecorder;private File recAudioFile;private MusicPlayer mPlayer;@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);setupViews();}private void setupViews() {btnStart = (Button) findViewById(R.id.start);btnStop = (Button) findViewById(R.id.stop);btnPlay = (Button) findViewById(R.id.play);btnStart.setOnClickListener(this);btnStop.setOnClickListener(this);btnPlay.setOnClickListener(this);recAudioFile = new File("/mnt/sdcard", "new.amr");}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.start:startRecorder();break;case R.id.stop:stopRecorder();break;case R.id.play:mPlayer = new MusicPlayer(SoundRecorderActivity.this);mPlayer.playMicFile(recAudioFile);break;default:break;}}private void startRecorder() {mMediaRecorder = new MediaRecorder();if (recAudioFile.exists()) {recAudioFile.delete();}mMediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC); mMediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);mMediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);mMediaRecorder.setOutputFile(recAudioFile.getAbsolutePath());try {mMediaRecorder.prepare();} catch (IllegalStateException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}mMediaRecorder.start();}private void stopRecorder(){if (recAudioFile!=null) {mMediaRecorder.stop();mMediaRecorder.release();}}
}

四、播放类(MusicPlayer)

import java.io.File;import android.content.Context;
import android.media.MediaPlayer;
import android.media.MediaPlayer.OnCompletionListener;
import android.net.Uri;
import android.util.Log;public class MusicPlayer {private final static String TAG = "MusicPlayer";private static MediaPlayer mMediaPlayer;private Context mContext;public MusicPlayer(Context context){mContext = context;}public void playMicFile(File file){if (file!=null && file.exists()) {Uri uri = Uri.fromFile(file);mMediaPlayer = MediaPlayer.create(mContext, uri);mMediaPlayer.start(); mMediaPlayer.setOnCompletionListener(new OnCompletionListener() {public void onCompletion(MediaPlayer mp) {//TODO:finish Log.i(TAG, "Finish");}});}}public void stopPlayer(){if(mMediaPlayer.isPlaying()){mMediaPlayer.stop();mMediaPlayer.release();}}
}

五、添加录音权限

<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

完成,运行查看效果。代码很简单,没有注释,感兴趣的看API!!

Demo下载地址:http://download.csdn.net/detail/tangcheng_ok/3837435

原创文章,转载请注明出处:htttp://www.blog.csdn.net/tangcheng_ok

Android开发 ---- 两分钟写一个录音演示软件相关推荐

  1. 【Android进阶】如何写一个很屌的动画(3)---高仿腾讯手机管家火箭动画

    系列中其他文章: [Android进阶]如何写一个很屌的动画(1)-先实现一个简易的自定义动画框架 [Android进阶]如何写一个很屌的动画(2)-动画的好帮手们 [Android进阶]如何写一个很 ...

  2. android 最新 九宫格,Android开发中怎么显示一个九宫格图片

    Android开发中怎么显示一个九宫格图片 发布时间:2020-11-21 15:09:33 来源:亿速云 阅读:86 作者:Leah 本篇文章给大家分享的是有关Android开发中怎么显示一个九宫格 ...

  3. 【直播】手把手带你 5 分钟写一个小爬虫,从入门到超神!

    在程序员界流传着这么一个顺口溜:爬虫玩得好,监狱进得早.数据玩得溜,牢饭吃个够--时不时还有 "XX 公司做违法爬虫,程序员坐牢" 的新闻爆出. 在看热闹的同时,很多人都会提出疑问 ...

  4. android 字体倒影,Android开发中怎么实现一个文字倒影效果

    Android开发中怎么实现一个文字倒影效果 发布时间:2020-11-25 17:18:19 来源:亿速云 阅读:140 作者:Leah 这期内容当中小编将会给大家带来有关Android开发中怎么实 ...

  5. python软件界面-用Python写一个语音播放软件

    原标题:用Python写一个语音播放软件 单位经常使用广播进行临时事项的通知(将文字转换为语音然后通过功放广播),但是市面上多数语音播放软件都是收费的,要么发音失真,要么不够稳定--经常出现莫名其妙的 ...

  6. python编写一个软件-python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  7. 怎么用python制作随机点名软件_python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

  8. python随机点名程序 图形化_python写一个随机点名软件,python随机点名,最近有个随机点名软件...

    python写一个随机点名软件,python随机点名,最近有个随机点名软件 最近有个随机点名软件的需求,故写了一个,上代码:github地址# -*- coding: utf-8 -*-# @Time ...

  9. python写软件实例-python写一个随机点名软件的实例

    最近有个随机点名软件的需求,故写了一个,上代码:github地址 # -*- coding: utf-8 -*- # @Time : 18-12-31 下午4:21 # @Author : Felix ...

最新文章

  1. 【转】用VB操作Excel详解
  2. USB基础---设备、配置、接口、端点和字符串描述符
  3. Asp.net中的Cache--HttpRuntim.Cache 和 HttpContext.Current.Cache
  4. DL框架之Caffe:深度学习框架之Caffe的简介、安装、使用方法详细攻略
  5. 好时光·宝髻偏宜宫样 [唐] 李隆基
  6. python 除数总是提示为0_Python错误的处理方法
  7. 在线选课网站用什么服务器,高校网上选课系统 PC服务器替代小型机
  8. sketchup草图家具拆单软件 衣柜橱柜拆单 SU 全屋定制拆单 有屋软件 下料机
  9. Aegisub制作字幕从入门到精通:制作srt字幕,制作ass字幕,压制字幕和视频
  10. Opencv图像处理(全)
  11. 中国风?古典系?AI中文绘图创作尝鲜!⛵
  12. Android穿山甲SDK接入,已封装直接使用
  13. PCI-E的针脚定义的简单讲解(备忘)
  14. 最好的防御就是进攻 任正非
  15. [乐意黎原创]PHP抛PHP Startup:Unable to load dynamic library bcmath,Libmcrypt,mhash,mcrypt等警告及模块动态安装详解
  16. 百度android 定位返回161,重拾百度定位之踩坑篇(下)
  17. 概率函数(密度函数)
  18. 【CV】Mask R-CNN:用于目标实例分割的通用框架
  19. Linux terminal支持中文设置
  20. 第四十一章 贪心算法——排序不等式

热门文章

  1. ITEXT-小图片并排显示,大图片按行显示
  2. 算法题解_哥德巴赫曾猜测
  3. bWAPP靶场——下载与安装(Windows最全)
  4. C语言 逆序输出字符串
  5. Javascript实现简单焦点图
  6. nanovna使用说明_陌筱镜头附件其他 适用于NanoVNA 矢量网络分析仪 天线分析仪 短波 MF HF VHF UHF 天分【价格 图片 品牌 报价】-苏宁易购东运数码专营店...
  7. 滑动窗口滤波算法C代码实现
  8. 期刊bibitem格式参考文献批量生成
  9. Apollo安装部署
  10. 7-20 简单计算器 (20分)