- 浏览: 118738 次
- 性别:
- 来自: 南京
文章分类
- 全部博客 (135)
- java (135)
- [转]c# 画圆角矩形 (1)
- 设计模式生活实例 (1)
- .nET2.0小技巧 (1)
- 从另一个角度看敏捷实践(一)--IPM:承诺的仪式 (1)
- javascript字符串转json对象 (1)
- 使用BeanUtils时,Date类型值为空的解决方法 (1)
- Lenovo V460+Ubuntu 11.10 无线网问题 (1)
- Lucene 索引和搜索过程核心类详解 (1)
- Android短信编解码方式 (1)
- 股神巴菲特十大致富秘籍 (1)
- Map遍历的三种方法 (1)
- Android中用Toast.cancel()方法优化toast内容的显示 (1)
- ViewFlipper “Receiver not registered” Error (1)
- javax.xml.transform.TransformerFactoryConfigurationError (1)
- JNI调用的注意事项 (1)
- JUnit单元测试感悟 (1)
- 用C#写定时关机的程序 (1)
- ASP.NET开发工具Web Matrix介绍 (1)
- MapXtreme2004代码 MapControl控件中显示地图文件 (1)
- 《使用 Microsoft .NET 的企业解决方案模式》读书笔记3 (1)
- 微创短信开发平台 (1)
- 谈谈Q+平台的技术实现 (1)
- 手机防盗软件实现(源码) (1)
- 虚析构函数(总结 帖子) (1)
- c语言中去除const修饰 (1)
- ORA-01012: not logged on 解决办法 (1)
- paypal提现如何省钱 (1)
- 数独suduku (1)
- MyISAM InnoDB 区别 (1)
- 随 笔 (1)
- Android上的log,日志相关 (1)
- 百度质量部实习居然通过了~ (1)
最新评论
-
野狐禅:
ext.get('imagebrowse') is null
ExtJs上传图片预览功能 -
zhuyl_wind:
不切实际,呵呵
[]5年内买车买房-理财篇 -
in南京:
关键你那两千块钱就够交一个多月的房租!换个城市你那六百也远远不 ...
[]5年内买车买房-理财篇 -
javac_xinyun:
呵呵,看完了,确实不错,貌似第一年的房租每月算进去 ,人际关系 ...
[]5年内买车买房-理财篇 -
dishikun:
貌似很不错,就是没把房租算进去!
[]5年内买车买房-理财篇
2011.08.12(3)——— android audiotrack 播放音频
参考:
http://blog.sina.com.cn/s/blog_74b752870100qxrv.html
http://crazier9527.iteye.com/blog/467061
http://www.cnblogs.com/mcodec/articles/1933741.html
播放mp3的总是噪音,不知道原因,后来播放wav的倒是可以,
wav是没有压缩的pcm
参考:
http://blog.sina.com.cn/s/blog_74b752870100qxrv.html
http://crazier9527.iteye.com/blog/467061
http://www.cnblogs.com/mcodec/articles/1933741.html
播放mp3的总是噪音,不知道原因,后来播放wav的倒是可以,
wav是没有压缩的pcm
package com.lp;import java.io.ioexception;import java.io.inputstream;import android.app.activity;import android.content.context;import android.media.audioformat;import android.media.audiomanager;import android.media.audiotrack;import android.media.audiotrack.onplaybackpositionupdatelistener;import android.os.bundle;import android.view.view;import android.view.view.onclicklistener;import android.widget.button;public class mainactivity extends activity { private button play; private button stop; private audiotrack at; private audiomanager am; @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); am = (audiomanager)getsystemservice(context.audio_service); play = (button)findviewbyid(r.id.main_play); stop = (button)findviewbyid(r.id.main_stop); play.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { if(am.isspeakerphoneon()){ am.setspeakerphoneon(false); } setvolumecontrolstream(audiomanager.stream_voice_call); am.setmode(audiomanager.mode_in_call); system.out.println(am.getstreammaxvolume(audiomanager.stream_voice_call)); system.out.println("&&&&&&&&&&&&&"); system.out.println(am.getstreamvolume(audiomanager.stream_voice_call)); int buffersizeinbytes = audiotrack.getminbuffersize(44100, audioformat.channel_out_mono, audioformat.encoding_pcm_16bit); if(at==null){ at = new audiotrack(audiomanager.stream_voice_call, 44100, audioformat.channel_out_mono, audioformat.encoding_pcm_16bit, buffersizeinbytes, audiotrack.mode_stream); system.out.println("22222"); new audiotrackthread().start(); }else{ if(at.getplaystate()==audiotrack.playstate_playing){ system.out.println("111111111"); }else{ system.out.println("33333"); at = new audiotrack(audiomanager.stream_voice_call, 44100, audioformat.channel_out_mono, audioformat.encoding_pcm_16bit, buffersizeinbytes, audiotrack.mode_stream); new audiotrackthread().start(); } } } }); stop.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { at.stop(); at.release(); am.setmode(audiomanager.mode_normal); } }); } class audiotrackthread extends thread{ @override public void run() { byte[] out_bytes = new byte[44100]; inputstream is = getresources().openrawresource(r.raw.start); int length ; at.play(); try { while((length = is.read(out_bytes))!=-1){ system.out.println(length); at.write(out_bytes, 0, length); } } catch (ioexception e) { e.printstacktrace(); } if(at.getplaystate()==audiotrack.playstate_playing){ at.stop(); at.release(); am.setmode(audiomanager.mode_normal); } } } }
发表评论
-
百度质量部实习居然通过了~
2012-02-08 12:23 985[size=small;]? ? ?本来打算在软工所苦 ... -
Android上的log,日志相关
2012-02-07 14:18 1524摘自:http://blog.csdn.net/met ... -
随 笔
2012-02-04 13:39 595金风玉露一相逢,便胜却人间无数。英文版: chemis ... -
MyISAM InnoDB 区别
2012-02-02 16:59 731<h1 id="artibody ... -
数独suduku
2012-01-31 14:38 914sudu sudu sudu sudu sudu su ... -
paypal提现如何省钱
2011-12-28 16:58 1221据PayPal中文注册得知,如今很多收样品费的外贸商户 ... -
ORA-01012: not logged on 解决办法
2011-12-28 13:08 3490<span style="font-f ... -
c语言中去除const修饰
2011-12-21 10:54 1425[size=16px;]<span style= ... -
虚析构函数(总结 帖子)
2011-12-21 09:54 698<span style="" ... -
手机防盗软件实现(源码)
2011-12-20 12:54 935<a href="http://blo ... -
谈谈Q+平台的技术实现
2011-12-20 09:49 960这篇文章是我个人 ... -
微创短信开发平台
2011-12-19 11:39 767在网上闲逛,发现了一个站点,微创短信开发平台(http ... -
《使用 Microsoft .NET 的企业解决方案模式》读书笔记3
2011-12-19 10:24 776第3章 Web表示模式 没有一个设计策略能够适合所有情 ... -
MapXtreme2004代码 MapControl控件中显示地图文件
2011-12-15 14:29 901::<?xml:namespace prefix ... -
ASP.NET开发工具Web Matrix介绍
2011-12-15 13:39 965<p class="MsoPlain ... -
用C#写定时关机的程序
2011-12-15 11:14 702</span></font>& ... -
JUnit单元测试感悟
2011-12-14 11:29 860<p class="MsoNorma ... -
JNI调用的注意事项
2011-12-14 09:34 749JNI的简单教程网上很多,看看就能够明白,照着操作也基 ... -
javax.xml.transform.TransformerFactoryConfigurationError
2011-12-13 13:34 848<span style="" ... -
ViewFlipper “Receiver not registered” Error
2011-12-12 10:59 1122偶尔出现这个错误: <span> < ...
相关推荐
android基于AudioTrack播放PCM音频文件的源码实例,播放扩展名为rm格式的文件,不使用android 内置的Audio和video来播放PCM音频数据,通过通过解码得到PCM数据源,使用AudioTrack类实现音频文件的播放,本源码就是...
Android音频系统AudioTrack使用方法详解 Android音频系统中,...AudioTrack是Android音频系统中播放音频的重要组件,了解AudioTrack的使用方法和工作原理,可以帮助开发者更好地使用AudioTrack进行音频播放。
这篇博客"android使用AudioTrack低延迟播放音频文件"详细介绍了如何利用`AudioTrack`来实现这一目标。 首先,`AudioTrack`的创建需要指定一些关键参数,包括音频格式(如采样率、位深度、声道数)、音频流类型(如...
代码可能包含了读取AAC数据、配置MediaCodec、管理输入和输出缓冲区、以及使用AudioTrack播放音频的逻辑。 通过这个过程,开发者可以构建自己的音频播放器,利用硬件加速功能提高效率,同时避免了将整个音频文件...
3. **资源释放**:播放结束时,记得调用`AudioTrack.stop()`和`AudioTrack.release()`释放资源。 通过以上方法,我们可以利用Android的`AudioTrack`类实现不同频率的正弦波音频播放,同时在指定范围内实现无缝切换...
在Android平台上,`AudioTrack`类是用于播放音频数据的核心组件。它允许开发者将音频数据送入设备的音频硬件进行播放,支持多种音频格式。在本文中,我们将深入探讨`AudioTrack`的工作原理、使用方法以及如何处理PCM...
在Android平台上,`AudioTrack`类是用于在设备上播放音频数据的核心组件。当你需要将PCM(脉冲编码调制)格式的音频流播放出来时,`AudioTrack`扮演了关键角色。PCM是一种常见的无损音频编码方式,它直接存储声音...
RT,一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧
一旦`AudioTrack`实例化完成,就可以开始准备播放音频数据。`AudioTrack`支持两种播放模式:流式(MODE_STREAM)和静态(MODE_STATIC)。流式模式适用于大文件,因为它允许分批写入数据;静态模式则适用于小文件,...
3. **计算缓冲区大小**:确保缓冲区大小适应音频硬件,可以使用`AudioTrack.getMinBufferSize()`获取最小值。 4. **创建AudioTrack实例**:使用以上参数构造`AudioTrack`对象。 5. **准备和播放音频**:调用`...
在Android系统中,`AudioTrack`是用于在设备上播放音频数据的核心类。它允许开发者直接控制音频硬件,实现低延迟、高性能的音频播放。本文将深入探讨`AudioTrack`的工作原理、使用方法以及相关注意事项。 一、`...
`AudioTrack`是Android系统提供的用于播放音频数据的类,它可以将PCM(脉冲编码调制)数据发送到音频硬件进行播放。创建`AudioTrack`对象时,需要提供音频格式(如采样率、位深度、通道数)、缓冲区大小以及播放模式...
在Android平台上,AudioTrack类是用于播放音频数据的核心组件,特别是在处理原始PCM(脉冲编码调制)音频文件时。本文将深入探讨如何利用AudioTrack类实现PCM音频文件的播放,以及涉及的相关技术要点。 首先,了解...
Android的音频处理框架包括AudioRecord和AudioTrack API,它们分别用于录制和播放音频。在降噪过程中,通常会使用AudioRecord来捕获原始音频数据,然后通过自定义的降噪算法对数据进行处理,最后使用AudioTrack将...
AudioRecord和AudioTrack是Android SDK提供的两个核心类,分别用于音频录制和播放。本篇文章将详细解析如何利用这两个类在Android中实现一个完整的录音和播放功能的Demo。 首先,我们来了解AudioRecord。Audio...
目录一、动态路由的初始化1、获取路由策略2、向AudioPolicyManager注册路由策略二、动态路由的路由流程,以AudioTrack创建为例创建AudioTrack的路由选择如何定制音频路由1、policy路由配置2、修改AudioControl的...
3. **AudioTrack与AudioManager**: `AudioTrack`用于播放音频数据,而`AudioManager`则用于管理设备的音频设置,如音量控制、音频流类型等。在测试工程中,可能会用到这两个类来定制音频播放行为。 4. **MediaCodec...
读取wav文件,用static模式播放.注意需要添加权限,<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>
Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。 封装好的Java代码,可同时录制PCM和WAV文件。自己定义存储位置。 Android提供了AudioRecord和MediaRecord。MediaRecord...