如下代码为Android源码的录音代码修改,只要稍微修改即可以运到自己的应用中。

package com.android.phone;import android.app.Activity;
import android.os.Bundle;
import java.io.File;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.media.MediaRecorder;
import android.net.Uri;
import android.os.Bundle;
import android.os.Environment;
import android.os.StatFs;
import android.provider.MediaStore;
import android.provider.MediaStore.MediaColumns;
import android.util.Log;
import android.view.ContextThemeWrapper;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;import java.text.SimpleDateFormat;
import java.util.Date;/*** This is main class which shows how to capture/record audio* * @author The Developer's Info* */
public class CallRecorder {private MediaRecorder mediaRecorder;private File file = null;static String PREFIX = "CR-"; // CallReading by kylinstatic final String EXTENSION = ".amr";// .3gpp by kylinpublic static boolean recorderOn = false;// Add by kylin 2011.10.21 beginprivate String mDisplayName;private String mDisplayNumber;Context mContext;/*** This method starts recording process* * @param displayNumber* @throws Exception*/// Add by kylin 2011.10.21 beginpublic CallRecorder(Context context, String displayName,String displayNumber) {mContext = context;mDisplayName = displayName;mDisplayNumber = displayNumber;if (null != mDisplayName && !mDisplayName.trim().equals("")) {PREFIX = PREFIX + mDisplayName + "-";} else {PREFIX = PREFIX + mDisplayNumber + "-";}}// endpublic void startRecording() throws Exception {mediaRecorder = new MediaRecorder();mediaRecorder.setAudioSource(MediaRecorder.AudioSource.VOICE_CALL);mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.THREE_GPP);mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);// Mod by kylin 2011.10.03 beginString dir = Environment.getExternalStorageDirectory() + "/Recording";if (file == null) {// File rootDir = Environment.getExternalStorageDirectory();File newRootDir = new File(dir);if (!newRootDir.exists()) {newRootDir.mkdir();}file = File.createTempFile(PREFIX, EXTENSION, newRootDir);}mediaRecorder.setOutputFile(file.getAbsolutePath());// mediaRecorder.setOutputFile(dir);// endmediaRecorder.prepare();mediaRecorder.start();}/*** This method stops recording*/public void stopRecording() {mediaRecorder.stop();mediaRecorder.release();mediaRecorder = null;PREFIX = "CR-"; // Add by kylin 2011.10.21}/*** This method sets all metadata for audio file*/public void saveToDB() {ContentValues values = new ContentValues(3);long current = System.currentTimeMillis();long modDate = file.lastModified();Date date = new Date(current);SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String title = formatter.format(date);values.put(MediaStore.Audio.Media.IS_MUSIC, "0");values.put(MediaStore.Audio.Media.TITLE, title);values.put(MediaStore.Audio.Media.DATA, file.getAbsolutePath());values.put(MediaStore.Audio.Media.DATE_ADDED, (int) (current / 1000));values.put(MediaStore.Audio.Media.DATE_MODIFIED, (int) (modDate / 1000));values.put(MediaStore.Audio.Media.MIME_TYPE, "audio/mp3");values.put(MediaStore.Audio.Media.ARTIST, "CallRecord");values.put(MediaStore.Audio.Media.ALBUM, "CallRecorder");ContentResolver contentResolver = mContext.getContentResolver();Uri base = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;Uri newUri = contentResolver.insert(base, values);mContext.sendBroadcast(new Intent(Intent.ACTION_MEDIA_SCANNER_SCAN_FILE, newUri));}}

Android源码修改后的语音录音代码相关推荐

  1. android 编译完后镜像在哪个文件夹,Android源码编译后

    在out/target/product/generic下生成的三个镜像文件:ramdisk.img,system.img,userdata.img以及它们对应的目录树root,system,data. ...

  2. Android 源码修改,使第三方应用可以直接使用su命令

    在android原生系统中,只有root权限和shell权限下才可以使用su命令,虽然在userdebug模式下编译的系统镜像有自带的su文件,但是第三方应用却无法使用.于是在这种场景下,有两种方式可 ...

  3. Android源码修改 替换安装apk时,出现的android小机器人图标。

    首先我们要知道android的apk安装界面是一个单独的app.所以我们在源码中找到该app. 该app在源码下的路径为 packages\apps\PackageInstaller,没错Packag ...

  4. Android源码修改(自动获取usb权限)基于Android5.1定制版系统

    自动获取usb权限 这篇文章参考了这个得到的解决方案 http://blog.csdn.net/hubbybob1/article/details/50263925 这个博主已经写得很清楚啦,但是还有 ...

  5. [Android Pro] Android源码编译后,再重编译所需要做的清理工作

    1.在源码目录的根目录下,make clean; 2.进到源码的\linux\kernel\目录下,执行make mrproper: 3.再退回到根目录,执行source  build/envsetu ...

  6. Android源码修改默认音量大小的方法

    目前网上有一些关于修改系统默认音量大小的方法,比如修改AudioSystem.java的DEFAULT_STREAM_VOLUME: public static int[] DEFAULT_STREA ...

  7. android打开volte代码,Android8.1 源码修改之插入SIM卡默认启用Volte功能

    前言 公用电话产品,插入SIM卡后要求自动打开Volte功能,即插即用,用完拔卡就走 实现 第一步 开关对应的代码 通过打印日志和全局查找,源码位置 vendor/mediatek/proprieta ...

  8. 一对一视频直播源码|手机视频直播平台android源码/可打包视频直播

    源码介绍 一对一视频直播源码|手机视频直播平台android源码集视频.语音.动态.直播.社交等功能于一身. 前端功能说明: 登入注册:手机验证码登入.编辑个人信息.上传头像 首页直播:查看主播用户. ...

  9. 下载Android源码流程(完整版)

      要在Linux环境下操作,要在Linux环境下操作,要在Linux环境下操作~~ 不要想在Windows环境下操作,因为会有各种问题.Windows环境的童鞋又不想装双系统的可以跟着下面的操作,L ...

最新文章

  1. 美团面试题:String s = new String(111)会创建几个对象?
  2. 秋招面经来了,收藏!
  3. 会计的思考(6):阳光是最好的杀虫剂—会计反映
  4. 前端基础知识整理汇总(中)
  5. ASP.NET中添加View与Razor引擎以及View解析和Controller向View传值
  6. 腾讯云智服确保战“疫”期间服务不间断
  7. 运行jmap时弹出:Usage: jmap [option] <pid> (to connect to running process) jmap [option] <
  8. code标签无法渲染html,【菜鸟笔记】记一次django无法正常在ie和edge浏览器渲染html页面-站长资讯中心...
  9. 基于vue单页应用的例子
  10. java list 去除 重复值
  11. python字符串_(Python基础教程之七)Python字符串操作
  12. innerHTML 插入 script 脚本正确执行的处理方式
  13. 关于vs2015每次打开都要配置opencv问题
  14. Linux环境运行jmeter+测试报告查看
  15. 橡皮擦的英语_英语单词这样写,老师想扣卷面分都难!(建议收藏学习)
  16. AI时代,APP运营是否会被淘汰
  17. [渝粤教育] 商丘职业技术学院 Java Web应用程序开发 参考 资料
  18. 启动kafka过一会进程自动挂掉问题原因
  19. nyoj 541 最强DE 战斗力(大数问题)
  20. 流程图规范(国家、ISO标准)

热门文章

  1. 南昌市计算机二级报名入口,南昌12月份计算机二级报名
  2. Windows便捷长时间检测网络丢包
  3. 【失败】尝试改hosts突破迅雷离线的封锁
  4. AM5728(AM5708)开发实战之安装Debian 10桌面操作系统
  5. 高颜值中科院师妹的读博日记!
  6. 通过CAQ六西格玛黑带考试,测量阶段要学到什么程度哪些是重点?
  7. Phpmywind教程:关于广告位调用
  8. 钯碳Pd/C探究将钯化合物制备成钯碳催化剂的方式
  9. Infortrend CS分布式NAS集群强项之性能篇
  10. python中quad_python用quad、dblquad实现一维二维积分的实例详解