`
iloveoracle
  • 浏览: 118738 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

2011.08.12(3)——— android AudioTrack 播放音频

    博客分类:
  • java
阅读更多
    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

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);			}		}    	    }				}
 
0
14
分享到:
评论

相关推荐

    android AudioTrack播放PCM音频文件 rm格式视频.rar

    android基于AudioTrack播放PCM音频文件的源码实例,播放扩展名为rm格式的文件,不使用android 内置的Audio和video来播放PCM音频数据,通过通过解码得到PCM数据源,使用AudioTrack类实现音频文件的播放,本源码就是...

    Android音频系统AudioTrack使用方法详解

    Android音频系统AudioTrack使用方法详解 Android音频系统中,...AudioTrack是Android音频系统中播放音频的重要组件,了解AudioTrack的使用方法和工作原理,可以帮助开发者更好地使用AudioTrack进行音频播放。

    android使用AudioTrack低延迟播放音频文件

    这篇博客"android使用AudioTrack低延迟播放音频文件"详细介绍了如何利用`AudioTrack`来实现这一目标。 首先,`AudioTrack`的创建需要指定一些关键参数,包括音频格式(如采样率、位深度、声道数)、音频流类型(如...

    Android MediaCodec解码AAC,AudioTrack播放PCM音频

    代码可能包含了读取AAC数据、配置MediaCodec、管理输入和输出缓冲区、以及使用AudioTrack播放音频的逻辑。 通过这个过程,开发者可以构建自己的音频播放器,利用硬件加速功能提高效率,同时避免了将整个音频文件...

    Android实现使用AudioTrack实现不同频率正弦音播放

    3. **资源释放**:播放结束时,记得调用`AudioTrack.stop()`和`AudioTrack.release()`释放资源。 通过以上方法,我们可以利用Android的`AudioTrack`类实现不同频率的正弦波音频播放,同时在指定范围内实现无缝切换...

    Audiotrack 播放音频流

    在Android平台上,`AudioTrack`类是用于播放音频数据的核心组件。它允许开发者将音频数据送入设备的音频硬件进行播放,支持多种音频格式。在本文中,我们将深入探讨`AudioTrack`的工作原理、使用方法以及如何处理PCM...

    Android audiotrack 播放pcm

    在Android平台上,`AudioTrack`类是用于在设备上播放音频数据的核心组件。当你需要将PCM(脉冲编码调制)格式的音频流播放出来时,`AudioTrack`扮演了关键角色。PCM是一种常见的无损音频编码方式,它直接存储声音...

    使用audiotrack播放pcm音频数据(android)

    RT,一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧

    android使用AudioTrack低延迟播放音频文件.rar

    一旦`AudioTrack`实例化完成,就可以开始准备播放音频数据。`AudioTrack`支持两种播放模式:流式(MODE_STREAM)和静态(MODE_STATIC)。流式模式适用于大文件,因为它允许分批写入数据;静态模式则适用于小文件,...

    android使用audioRecord和audioTrack实现语音录音播放与即时播放

    3. **计算缓冲区大小**:确保缓冲区大小适应音频硬件,可以使用`AudioTrack.getMinBufferSize()`获取最小值。 4. **创建AudioTrack实例**:使用以上参数构造`AudioTrack`对象。 5. **准备和播放音频**:调用`...

    audiotrack 播放音频

    在Android系统中,`AudioTrack`是用于在设备上播放音频数据的核心类。它允许开发者直接控制音频硬件,实现低延迟、高性能的音频播放。本文将深入探讨`AudioTrack`的工作原理、使用方法以及相关注意事项。 一、`...

    android 使用 audiotrack和audiorecord c++代码

    `AudioTrack`是Android系统提供的用于播放音频数据的类,它可以将PCM(脉冲编码调制)数据发送到音频硬件进行播放。创建`AudioTrack`对象时,需要提供音频格式(如采样率、位深度、通道数)、缓冲区大小以及播放模式...

    AudioTrack实现播放PCM音频文件

    在Android平台上,AudioTrack类是用于播放音频数据的核心组件,特别是在处理原始PCM(脉冲编码调制)音频文件时。本文将深入探讨如何利用AudioTrack类实现PCM音频文件的播放,以及涉及的相关技术要点。 首先,了解...

    Android 音频降噪源码

    Android的音频处理框架包括AudioRecord和AudioTrack API,它们分别用于录制和播放音频。在降噪过程中,通常会使用AudioRecord来捕获原始音频数据,然后通过自定义的降噪算法对数据进行处理,最后使用AudioTrack将...

    在Andriod中使用AudioRecord录音,使用AudioTrack播放录音的完整Demo

    AudioRecord和AudioTrack是Android SDK提供的两个核心类,分别用于音频录制和播放。本篇文章将详细解析如何利用这两个类在Android中实现一个完整的录音和播放功能的Demo。 首先,我们来了解AudioRecord。Audio...

    Android 9 Audio系统笔记:音频路由实现——从AudioTrack到audiohal

    目录一、动态路由的初始化1、获取路由策略2、向AudioPolicyManager注册路由策略二、动态路由的路由流程,以AudioTrack创建为例创建AudioTrack的路由选择如何定制音频路由1、policy路由配置2、修改AudioControl的...

    安卓Android源码——安卓视音频播放测试工程.zip

    3. **AudioTrack与AudioManager**: `AudioTrack`用于播放音频数据,而`AudioManager`则用于管理设备的音频设置,如音量控制、音频流类型等。在测试工程中,可能会用到这两个类来定制音频播放行为。 4. **MediaCodec...

    用AudioTrack播放wav

    读取wav文件,用static模式播放.注意需要添加权限,<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"></uses-permission>

    Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。

    Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。 封装好的Java代码,可同时录制PCM和WAV文件。自己定义存储位置。 Android提供了AudioRecord和MediaRecord。MediaRecord...

Global site tag (gtag.js) - Google Analytics