我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Android实现自制和播放录音程序

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Android实现自制和播放录音程序

首先,让我们先看下实现的截图:

当有录音文件存在时,会显示在下面的ListView当中。

下面给出实现的完整代码:

1.主程序代码


package irdc.ex07_11;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import android.app.Activity;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.CheckedTextView;
import android.widget.ImageButton;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class EX07_11 extends Activity
{
 private ImageButton myButton1;
 private ImageButton myButton2;
 private ImageButton myButton3;
 private ImageButton myButton4;
 private ListView myListView1;
 private String strTempFile = "ex07_11_";
 private File myRecAudioFile;
 private File myRecAudioDir;
 private File myPlayFile;
 private MediaRecorder mMediaRecorder01;
 private ArrayList<String> recordFiles;
 private ArrayAdapter<String> adapter;
 private TextView myTextView1;
 private boolean sdCardExit;
 private boolean isStopRecord;
 
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);
  myButton1 = (ImageButton) findViewById(R.id.ImageButton01);
  myButton2 = (ImageButton) findViewById(R.id.ImageButton02);
  myButton3 = (ImageButton) findViewById(R.id.ImageButton03);
  myButton4 = (ImageButton) findViewById(R.id.ImageButton04);
  myListView1 = (ListView) findViewById(R.id.ListView01);
  myTextView1 = (TextView) findViewById(R.id.TextView01);
  myButton2.setEnabled(false);
  myButton3.setEnabled(false);
  myButton4.setEnabled(false);
  
  sdCardExit = Environment.getExternalStorageState().equals(
    android.os.Environment.MEDIA_MOUNTED);
  
  if (sdCardExit)
   myRecAudioDir = Environment.getExternalStorageDirectory();
  
  getRecordFiles();
  adapter = new ArrayAdapter<String>(this,
    R.layout.my_simple_list_item, recordFiles);
  
  myListView1.setAdapter(adapter);
  
  myButton1.setOnClickListener(new ImageButton.OnClickListener()
  {
   @Override
   public void onClick(View arg0)
   {
    try
    {
     if (!sdCardExit)
     {
      Toast.makeText(EX07_11.this, "请插入SD Card",
        Toast.LENGTH_LONG).show();
      return;
     }
     
     myRecAudioFile = File.createTempFile(strTempFile, ".amr",
       myRecAudioDir);
     mMediaRecorder01 = new MediaRecorder();
     
     mMediaRecorder01
       .setAudioSource(MediaRecorder.AudioSource.MIC);
     mMediaRecorder01
       .setOutputFormat(MediaRecorder.OutputFormat.DEFAULT);
     mMediaRecorder01
       .setAudioEncoder(MediaRecorder.AudioEncoder.DEFAULT);
     mMediaRecorder01.setOutputFile(myRecAudioFile
       .getAbsolutePath());
     mMediaRecorder01.prepare();
     mMediaRecorder01.start();
     myTextView1.setText("录音中");
     myButton2.setEnabled(true);
     myButton3.setEnabled(false);
     myButton4.setEnabled(false);
     isStopRecord = false;
    } catch (IOException e)
    {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  });
  
  myButton2.setOnClickListener(new ImageButton.OnClickListener()
  {
   @Override
   public void onClick(View arg0)
   {
    // TODO Auto-generated method stub
    if (myRecAudioFile != null)
    {
     
     mMediaRecorder01.stop();
     
     adapter.add(myRecAudioFile.getName());
     mMediaRecorder01.release();
     mMediaRecorder01 = null;
     myTextView1.setText("停止:" + myRecAudioFile.getName());
     myButton2.setEnabled(false);
     isStopRecord = true;
    }
   }
  });
  
  myButton3.setOnClickListener(new ImageButton.OnClickListener()
  {
   @Override
   public void onClick(View arg0)
   {
    // TODO Auto-generated method stub
    if (myPlayFile != null && myPlayFile.exists())
    {
     
     openFile(myPlayFile);
    }
   }
  });
  
  myButton4.setOnClickListener(new ImageButton.OnClickListener()
  {
   @Override
   public void onClick(View arg0)
   {
    // TODO Auto-generated method stub
    if (myPlayFile != null)
    {
     
     adapter.remove(myPlayFile.getName());
     
     if (myPlayFile.exists())
      myPlayFile.delete();
     myTextView1.setText("完成删除");
    }
   }
  });
  myListView1.setOnItemClickListener(new AdapterView.OnItemClickListener()
    {
     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1,
       int arg2, long arg3)
     {
      
      myButton3.setEnabled(true);
      myButton4.setEnabled(true);
      myPlayFile = new File(myRecAudioDir.getAbsolutePath()
        + File.separator
        + ((CheckedTextView) arg1).getText());
      myTextView1.setText("你选的是:"
        + ((CheckedTextView) arg1).getText());
     }
    });
 }
 @Override
 protected void onStop()
 {
  if (mMediaRecorder01 != null && !isStopRecord)
  {
   
   mMediaRecorder01.stop();
   mMediaRecorder01.release();
   mMediaRecorder01 = null;
  }
  super.onStop();
 }
 private void getRecordFiles()
 {
  recordFiles = new ArrayList<String>();
  if (sdCardExit)
  {
   File files[] = myRecAudioDir.listFiles();
   if (files != null)
   {
    for (int i = 0; i < files.length; i++)
    {
     if (files[i].getName().indexOf(".") >= 0)
     {
      
      String fileS = files[i].getName().substring(
        files[i].getName().indexOf("."));
      if (fileS.toLowerCase().equals(".amr"))
       recordFiles.add(files[i].getName());
     }
    }
   }
  }
 }
 
 private void openFile(File f)
 {
  Intent intent = new Intent();
  intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
  intent.setAction(android.content.Intent.ACTION_VIEW);
  String type = getMIMEType(f);
  intent.setDataAndType(Uri.fromFile(f), type);
  startActivity(intent);
 }
 private String getMIMEType(File f)
 {
  String end = f.getName().substring(
    f.getName().lastIndexOf(".") + 1, f.getName().length())
    .toLowerCase();
  String type = "";
  if (end.equals("mp3") || end.equals("aac") || end.equals("aac")
    || end.equals("amr") || end.equals("mpeg")
    || end.equals("mp4"))
  {
   type = "audio";
  } else if (end.equals("jpg") || end.equals("gif")
    || end.equals("png") || end.equals("jpeg"))
  {
   type = "image";
  } else
  {
   type = "*";
  }
  type += "/*";
  return type;
 }
}

2.总体布局文件代码


<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 
 xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent" 
 android:background="@drawable/white">
 <LinearLayout 
 android:id="@+id/LinearLayout01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content">
 <ImageButton 
 android:id="@+id/ImageButton01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:class="lazy" data-src="@drawable/record">
 </ImageButton>
 <ImageButton 
 android:id="@+id/ImageButton02" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:class="lazy" data-src="@drawable/stop">
 </ImageButton>
 <ImageButton 
 android:id="@+id/ImageButton03" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:class="lazy" data-src="@drawable/play">
 </ImageButton>
 <ImageButton 
 android:id="@+id/ImageButton04" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:class="lazy" data-src="@drawable/delete">
 </ImageButton>
 </LinearLayout>
 <TextView 
 android:id="@+id/TextView01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:textColor="@drawable/black">
 </TextView>
 <ListView 
 android:id="@+id/ListView01" 
 android:layout_width="wrap_content" 
 android:layout_height="wrap_content" 
 android:background="@drawable/black">
 </ListView>
</LinearLayout>

3.ListView中的子View的布局


<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView 
 xmlns:android="http://schemas.android.com/apk/res/android" 
 android:id="@+id/myCheckedTextView1" 
 android:layout_width="fill_parent" 
 android:layout_height="fill_parent" 
 android:textColor="@drawable/white"/> 
您可能感兴趣的文章:Android编程录音工具类RecorderUtil定义与用法示例Android编程实现录音及保存播放功能的方法【附demo源码下载】Android编程检测手机录音权限是否打开的方法Android实现录音功能实现实例(MediaRecorder)android语音即时通讯之录音、播放功能实现代码Android6.0编程实现双向通话自动录音功能的方法详解Android使用AudioRecord实现暂停录音功能实例代码Android 录音与播放功能的简单实例Android编程实现通话录音功能的方法利用libmp3lame实现在Android上录音MP3文件示例Android录音--AudioRecord、MediaRecorder的使用android 通过MediaRecorder实现简单的录音示例Android使用MediaRecorder实现录音及播放Android录音播放管理工具Android实现拍照、录像、录音代码范例Android中简单调用图片、视频、音频、录音和拍照的方法Android编程开发录音和播放录音简单示例Android录音mp3格式实例详解


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Android实现自制和播放录音程序

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Android实现自制和播放录音程序

首先,让我们先看下实现的截图:当有录音文件存在时,会显示在下面的ListView当中。 下面给出实现的完整代码: 1.主程序代码package irdc.ex07_11; import java.io.File; import java.i
2022-06-06

Android实现音频录音与播放

这篇文章主要为大家详细介绍了Android实现音频录音与播放,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

微信小程序如何实现录音和播放录音的开发

这篇文章主要介绍了微信小程序如何实现录音和播放录音的开发,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。  关于微信小程序录音与播放录音的开发,小程序中提供了两种录音的API。
2023-06-26

Android使用MediaRecorder实现录音及播放

现在项目中有使用到音视频相关技术,在参考了网上各种大牛的资料及根据自己项目实际情况(兼容安卓6.0以上版本动态权限管理等),把声音录制及播放相关代码做个记录。public class MediaRecorderActivity extend
2022-06-06

Android编程开发录音和播放录音简单示例

本文实例讲述了Android编程开发录音和播放录音的方法。分享给大家供大家参考,具体如下:/** The application needs to have the permission to write to external stora
2022-06-06

Android音乐播放器制作 点击歌曲实现播放(二)

上次我们实现了把手机里的音频扫描到,然后放在list集合里面,用ListView展示在手机界面上,如果没有看过的可以去看看本人的博客:Android音乐播放器制作(一)扫描本地音乐显示在手机上 这次是在上一次的基础上直接继续写代码,几行代码
2022-06-06

Android如何实现仿微信语音消息的录制和播放功能

小编给大家分享一下Android如何实现仿微信语音消息的录制和播放功能,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!一、简述效果:实现功能:长按Button时改变Button显示文字,弹出Dialog(动态更新音量),动态
2023-05-30

微信小程序怎么实现音乐播放控制

这篇文章主要介绍了微信小程序怎么实现音乐播放控制的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇微信小程序怎么实现音乐播放控制文章都会有所收获,下面我们一起来看看吧。基础库 1.2.0 开始支持,低版本需做兼容处
2023-06-26

微信小程序如何实现录音与音频播放功能

这篇文章将为大家详细讲解有关微信小程序如何实现录音与音频播放功能,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。小程序继承了微信强大的语音处理功能,提供了录音、音频播放控制和背景音乐等功能,它们的功能不同,
2023-06-29

小程序播放音频如何实现

今天小编给大家分享一下小程序播放音频如何实现的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。背景音频接口适用于音乐类小程序,如
2023-06-26

Android微信小程序播放背景音乐怎么实现

这篇文章主要介绍“Android微信小程序播放背景音乐怎么实现”,在日常操作中,相信很多人在Android微信小程序播放背景音乐怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Android微信小程序播
2023-06-26

HTML5中怎么实现声音录制/播放功能

这篇文章主要介绍HTML5中怎么实现声音录制/播放功能,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!html代码:
2023-06-09

在Android应用中实现一个录音播放功能

这期内容当中小编将会给大家带来有关在Android应用中实现一个录音播放功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。播放音频文件/** * Created by zhb on 2017/1/16.
2023-05-31

android语音即时通讯之录音、播放功能实现代码

在android中,实现录音与语音播放的功能算是比较简单的,但是作为参考,还是很有必要将语音相关的知识做一个简要的记录。首先,在android中,支持录音支持两种方式。主要包括:字节流模式和文件流模式。用文件流模式进行录音操作比较简单,而且
2023-05-30

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录