Android音频处理--通过AudioRecord去保存PCM文件进行录制,播放,停止,删除功能 音频这方面很博大精深,我这里肯定讲不了什么高级的东西,最多也只是一些基础类知识,首先,我们要介绍一下Android他提供的录音类,实际上他有两个,一个是MediaRecorder,还有一个就是我们今天要用到的AudioRecord,那他们有什么区别呢? 一.区别 MediaRecorder和AudioRecord都可以录制音频,区别是MediaRecorder录制的音频文件是经过压缩后的,需要设置…
前言: 其实在Android中录音可以用MediaRecord录音,操作比较简单.但是不能对音频进行处理.考虑到项目中做的是实时语音只能选择AudioRecord进行录音. 本文算是对AudioRecord来个回顾: public class AudioRecordManager { public static final String TAG = "AudioRecordManager"; private AudioRecord mRecorder; private DataOutp…
AudioRecord 与 MediaRecorder 区别 AudioRecord 基于字节流录制,输出的是pcm数据,未进行压缩,直接保存的pcm文件不能被播放器识别播放. 可以对音频文件进行实时处理,直播类中对录制的声音进行变声编辑. MediaRecorder 是基于AudioRecord之上,进行了封装,使用简单,由于本身对录制的音频进行压缩,编码,无法对音频进行实时处理编辑.适用于普通的音频录制. 配合MediaPlayer 进行播放. public AudioRecord(int…
本篇项目地址,名字是AudioRecord录音(能暂停,将pch转换为wav),求starhttps://github.com/979451341/Audio-and-video-learning-materials 先来段官方说明 1.AndioRecord大概说明 AndioRecord类的主要功能是让各种JAVA应用能够管理音频资源,以便它们通过此类能够录制声音相关的硬件所收集的声音.此功能的实现就是通过”pulling”(读取)AudioRecord对象的声音数据来完成的.在录音过程中,…
1.1 音频框架 转载请注明,From LXS, http://blog.csdn.net/uiop78uiop78/article/details/8796492 Android的音频系统在很长一段时间内都是外界诟病的焦点.的确,早期的Android系统在音频处理上相比于IOS有一定的差距,这也是很多专业的音乐播放软件开发商没有推出Android平台产品的一个重要原因.但这并不代表它的音频框架一无是处,相反,基于Linux系统的Android平台有很多值得我们学习的地方. 1.1.1 Linu…
这个世界音频设备千变万化,Android也不可能为每种设备都提供支持.Android定义了一个框架,这个框架来适配底层的音频设备.该适配层的定义位于: hardware/libhardware_legacy/include/hardware_legacy/AudioHardwareInterface.h 要想视频底层的音频设备必须要继承该文件中定义的AudioStreamOut,AudioStreamIn,AudioHardwareInterface等类,并实现createAudioHardwa…
翻译 By Long Luo 原文链接:Android Audio: Play a WAV file on an AudioTrack 译者注: 1. 因为这是技术文章,所以有些词句使用原文,表达更准确. 2. 因为水平有效,有些地方可能翻译的不够准确,如有不当之处,敬请批评指正. 3. 针对某些语句.适当补充了上下文及更适合中文阅读,尽量做到信达雅. 假设你已经成功地了解了关于AudioTrack的一些话题.那么你可能享受它带来的优点,比如低延迟(在STATIC(静态)模式),可以生成流式音频…
昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1.AudioFlinger   frameworks/base/services/audioflinger/ +-- Android.mk +-- AudioBufferProvider.h +-- AudioFlinger.cpp +-- AudioFlinger.h +-- AudioMixer…
通过API 19新加的MediaRecorder.AudioSource.REMOTE_SUBMIX參数能够让系统App录制系统内置的声音,也就是扬声器的声音.以下是一个巨简单的样例来演示样例怎样通过AudioRecord配合REMOTE_SUBMIX參数进行录制. 1. 编译apk MainActivity.java: package com.example.audiotest; import java.io.FileOutputStream; import java.io.IOExcepti…
最近因为项目需要对声音进行变声,所以边学习边做,发现音频的处理思路并不难,但是做起来还是有些繁琐的(比预期的) 趁着脑子还发热,赶紧把思路总结一下,记录下来. 主要讲三个部分 1,如何变声2,安卓实现变声3,ios实现变声 1.如何变声? 要想自己写一个变声的函数或者库出来,谈何容易,所以采用了大家普遍采用的库SoundTouch. 该库可以实现改变声音的速度,节拍,音调(这个最重要,可以把声音的音调调高调低,使之变成男生女生,可以参照汤姆猫),该库中对外提供方法的类为SoundTouch类,该…
Android音频开发(1):基础知识 导读 人的说话频率基本上为300Hz~3400Hz,但是人耳朵听觉频率基本上为20Hz~20000Hz. 对于人类的语音信号而言,实际处理一般经过以下步骤: 人嘴说话-->声电转换-->抽样(模数转换)-->量化(将数字信号用适当的数值表示)-->编码(数据压缩)--> 传输(网络或者其他方式) --> 解码(数据还原)-->反抽样(数模转换)-->电声转换-->人耳听声. 抽样率 实际中,人发出的声音信号为模拟…
SoundPool 一.基本概念 在Android应用程序的开发过程中,经常需要播放多媒体文件,也许最先想到的会是MediaPlayer类了,该类提供了播放.暂停.停止及重复播放等功能性方法(该类位于android.media包下,详见API文档).也可参考博文http://www.cnblogs.com/tgyf/p/4700177.html. 但使用MediaPlayer类的问题是占用资源较多,对于游戏这样复杂.简短配音多的应用可能不是很适合,这时候就需要用到SoundPool类了,其定义在…
本文重点关注如何在Android平台上播放一帧音频数据.阅读本文之前,建议先读一下<Android音频开发(1):基础知识>,因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的概念后,开发过程中的很多参数和流程就会更加容易理解. Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool,AudioTrack,关于它们的区别可以看这篇文章:<Intro to the three Android Audio APIs>,简单来说…
不知道为什么保存文件后之前打开一直都OK,就突然打开看到变成乱码了,最后解决了 关键:outStream.write(finalContent.getBytes("gbk")); write的时候设置一下:转换格式(UFT-8在android不能用,只能用gbk)!!!我之前试过utf-8,还是乱码,没什么用,就是gbk! 从项目里面抽取了这个把String保存为txt到本地的方法: String sdCardDir =Environment.getExternalStorageDir…
前言: 上一篇文章写了在Android中利用SharedPreferences保存数据,SharedPreferences在保存数据的时候主要是保存一些应用程序的设置信息或者少量的用户信息,并且是以key-value形式保存的String类的信息,比较有局限性.比如你需要保存从网络获取的图片到本地作为缓存数据,并且数量比较大,SharedPreferences就不能满足你的需求了,这个时候就要用到基本上所有平台都会用到的文件保存.   Android中以文件形式把数据保存到磁盘上与其他平台基本上…
原文:http://www.jb51.net/article/46182.htm Android音频录制MediaRecorder之简易的录音软件实现代码 这篇文章主要介绍了Android音频录制MediaRecorder之简易的录音软件实现代码,有需要的朋友可以参考一下 使用MediaRecorder的步骤:1.创建MediaRecorder对象2.调用MediRecorder对象的setAudioSource()方法设置声音的来源,一般传入MediaRecorder.MIC3.调用Media…
原文:http://www.yiibai.com/android/android_audio_capture.html Android有一个内置的麦克风,通过它可以捕获音频和存储,或在手机进行播放.有很多方法可以做到这一点,但最常见的方法是通过MediaRecorder类. Android提供MediaRecorder类录制音频或视频.为了使用MediaRecorder类,首先创建MediaRecorder类的一个实例.其语法如下给出. MediaRecorder myAudioRecorder…
应用中关于数据的持久化保存,不管是简单的SharedPreferences还是数据库SQLiteDatabase,本质上都是将数据保存到系统的某种类型的文件中.因此可以直接使用java.io.File文件类将数据以任意类型存取. 在获取到File文件类的对象后,就可以使用其相关方法执行对文件的读写等相关操作,这部分属于Java语言开发或Kotlin语言开发的基础知识,不再多言.而在Android系统上因为各种原因,获取File对象的方式有所区别,本文将重点介绍. 这里需要注意,File文件类不仅…
转载请注明出处:http://www.cnblogs.com/landptf/p/6384112.html 2017年开年第一篇博客,很早就想总结一下Android音频的相关知识.今天我们先来看一下音频焦点的相关内容,分为上下篇,上篇主要介绍音频焦点在媒体类应用中的使用,下篇进行源码分析,我们学习源码不仅仅是为了更深入的了解,更主要的目的是学习Android的设计架构,为我们在平时开发过程中提供一些优秀的设计思想.一 焦点在Android应用中的作用我们的手机里经常会安装一些媒体类的应用,例如网…
学Android开发的人可以去的几个网站 1.<IT蓝豹>Android开源项目分享平台国内非常好的一个Android开发者分享站,分享android所有特效,每天都有最新的Android开源项目推荐,版块划分完全面向开发者,非常方便,适合初学者和高手进阶的好地方,网站的水平也非常高,也有很多android源码项目可以下载,经常会出一些最新技术教程.地址:http://www.itlanbao.com 2. helloAndroid以教程为最大特色的国外网站对大家系统学习Android知识非常…
>>>内容基本框架: 1.爬虫目的 2.爬取过程 3.代码实现 4.爬取结果  >>>实验环境: python3.6版本,pycharm,电脑可上网. [一 爬虫目的]对喜马拉雅上一个专辑的音频进行爬取并保存到本地 要爬取的喜马拉雅音频数据如下所示: 每页30个音频,共x页. [二 爬取过程] >>>F12打开谷歌功能,点击Network选项: F5刷新后,随便点击一个音频进行播放(这里特别注意): 找到我们要爬取的页面数据的url地址:https:/…
Android日志打印类LogUtils,能够定位到类名,方法名以及出现错误的行数并保存日志文件 在开发中,我们常常用打印log的方式来调试我们的应用.在Java中我们常常使用方法System.out.println()来在控制台打印日志,以便我们的调试.Android中有一个专门的类Log来实现在Android系统下日志的打印,更加方便我们定位程序出现问题的地方.    但是Android官方提供的Log类在实际项目使用中,也不是非常方便.当程序出现错误时,我们最希望的就是这个Log类能帮我们…
大家都知道,现在安装Android系统的手机版本和设备千差万别,在模拟器上运行良好的程序安装到某款手机上说不定就出现崩溃的现象,开发者个人不可能购买所有设备逐个调试,所以在程序发布出去之后,如果出现了崩溃现象,开发者应该及时获取在该设备上导致崩溃的信息,这对于下一个版本的bug修复帮助极大,所以今天就来介绍一下如何在程序崩溃的情况下收集相关的设备参数信息和具体的异常信息,并发送这些信息到服务器供开发者分析和调试程序. 源码下载地址:http://download.csdn.net/detail/…
近期要做一个类似QQ底部有气泡的功能,试了几个方案不太好.我想非常多开发人员使用TabHost都会知道它不保存状态.每次都要又一次载入布局.为了保存状态,使用RadioGroup来实现.状态是能够保存了,问题是无法实现气泡功能.不能自己定义布局,由于RadioGroup里面仅仅能包括RadioButton,不然状态切换不起用作,这个能够查看RadioGroup源代码,为了既能保存状态又能实现气泡功能,所以仅仅能自己改动控件了或者自己写一个类似的切换功能,查看了FragmentTabHost的源代…
用于长时间使用的apk,并且有规律性的数据 1,逐行读取文件内容 //首先定义一个数据类型,用于保存读取文件的内容 class WeightRecord { String timestamp; float weight; public WeightRecord(String timestamp, float weight) { this.timestamp = timestamp; this.weight = weight; } } //开始读取 private WeightRecord[] r…
1.使用Bitmap将自身保存为文件 public boolean saveBitmapAsFile(String name, Bitmap bitmap) { File saveFile = new File(cacheDirectory, name); boolean saved = false; FileOutputStream os = null; try { Log.d("FileCache", "Saving File To Cache " + save…
关于文件存储,Activity提供了openFileOutput()方法可以用于把数据输出到文件中,具体的实现过程与在J2SE环境中保存数据到文件中是一样的. 文件可用来存放大量数据,如文本.图片.音频等. 默认位置:/data/data/<包>/files/***.***. 代码示例: public void save() { try { FileOutputStream outStream=this.openFileOutput("a.txt",Context.MODE…
using System;using System.IO;using System.Text;using System.Windows.Forms;using System.Runtime.InteropServices;namespace Train.wav2pcm{    public partial class frmMain : Form    {            /// <summary>      /// ERROR MESSAGE      /// </summary…
本设计思路:先打开一个普通wav音频文件,从定义的文件头前面的44个字节中,取出文件头的定义消息,置于一个文件头的结构体中.然后打开alsa音频驱动,从文件头结构体取出采样精度,声道数,采样频率三个重要参数,利用alsa音频驱动的API设置好参数,最后打开wav文件,定位到数据区,把音频数据依次写到音频驱动中去,开始播放,当写入完成后,退出写入的循环. 注意:本设计需要alsa的libasound-dev的库,编译链接时需要连接 —lasound. #include<stdio.h>#incl…
1. 音频简介 经常见到这样的描述: 44100HZ 16bit stereo 或者 22050HZ 8bit mono 等等. 44100HZ 16bit stereo: 每秒钟有 44100 次采样, 采样数据用 16 位(2字节)记录, 双声道(立体声); 22050HZ 8bit  mono: 每秒钟有 22050 次采样, 采样数据用 8 位(1字节)记录, 单声道; 当然也可以有 16bit 的单声道或 8bit 的立体声, 等等. 采样率是指:声音信号在“模→数”转换过程中单位时间…