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

2024-03-13 11:58

本文主要是介绍Android开发 ---- 两分钟写一个录音演示软件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

    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开发 ---- 两分钟写一个录音演示软件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/804799

相关文章

Python实例题之pygame开发打飞机游戏实例代码

《Python实例题之pygame开发打飞机游戏实例代码》对于python的学习者,能够写出一个飞机大战的程序代码,是不是感觉到非常的开心,:本文主要介绍Python实例题之pygame开发打飞机... 目录题目pygame-aircraft-game使用 Pygame 开发的打飞机游戏脚本代码解释初始化部

使用Python开发一个现代化屏幕取色器

《使用Python开发一个现代化屏幕取色器》在UI设计、网页开发等场景中,颜色拾取是高频需求,:本文主要介绍如何使用Python开发一个现代化屏幕取色器,有需要的小伙伴可以参考一下... 目录一、项目概述二、核心功能解析2.1 实时颜色追踪2.2 智能颜色显示三、效果展示四、实现步骤详解4.1 环境配置4.

Python使用smtplib库开发一个邮件自动发送工具

《Python使用smtplib库开发一个邮件自动发送工具》在现代软件开发中,自动化邮件发送是一个非常实用的功能,无论是系统通知、营销邮件、还是日常工作报告,Python的smtplib库都能帮助我们... 目录代码实现与知识点解析1. 导入必要的库2. 配置邮件服务器参数3. 创建邮件发送类4. 实现邮件

安装centos8设置基础软件仓库时出错的解决方案

《安装centos8设置基础软件仓库时出错的解决方案》:本文主要介绍安装centos8设置基础软件仓库时出错的解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录安装Centos8设置基础软件仓库时出错版本 8版本 8.2.200android4版本 javas

Android学习总结之Java和kotlin区别超详细分析

《Android学习总结之Java和kotlin区别超详细分析》Java和Kotlin都是用于Android开发的编程语言,它们各自具有独特的特点和优势,:本文主要介绍Android学习总结之Ja... 目录一、空安全机制真题 1:Kotlin 如何解决 Java 的 NullPointerExceptio

基于Python开发一个有趣的工作时长计算器

《基于Python开发一个有趣的工作时长计算器》随着远程办公和弹性工作制的兴起,个人及团队对于工作时长的准确统计需求日益增长,本文将使用Python和PyQt5打造一个工作时长计算器,感兴趣的小伙伴可... 目录概述功能介绍界面展示php软件使用步骤说明代码详解1.窗口初始化与布局2.工作时长计算核心逻辑3

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

python web 开发之Flask中间件与请求处理钩子的最佳实践

《pythonweb开发之Flask中间件与请求处理钩子的最佳实践》Flask作为轻量级Web框架,提供了灵活的请求处理机制,中间件和请求钩子允许开发者在请求处理的不同阶段插入自定义逻辑,实现诸如... 目录Flask中间件与请求处理钩子完全指南1. 引言2. 请求处理生命周期概述3. 请求钩子详解3.1

如何基于Python开发一个微信自动化工具

《如何基于Python开发一个微信自动化工具》在当今数字化办公场景中,自动化工具已成为提升工作效率的利器,本文将深入剖析一个基于Python的微信自动化工具开发全过程,有需要的小伙伴可以了解下... 目录概述功能全景1. 核心功能模块2. 特色功能效果展示1. 主界面概览2. 定时任务配置3. 操作日志演示

JavaScript实战:智能密码生成器开发指南

本文通过JavaScript实战开发智能密码生成器,详解如何运用crypto.getRandomValues实现加密级随机密码生成,包含多字符组合、安全强度可视化、易混淆字符排除等企业级功能。学习密码强度检测算法与信息熵计算原理,获取可直接嵌入项目的完整代码,提升Web应用的安全开发能力 目录