- 浏览: 1013865 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (367)
- JavaScript (23)
- Java (60)
- Python (41)
- 其他 (36)
- SQL (4)
- 开发工具 (26)
- Linux (15)
- AJAX (6)
- Cache (3)
- 正则 (4)
- 架构 (9)
- 手机 (3)
- MySQL (4)
- Android (115)
- vps (1)
- 网站 (4)
- scale (3)
- 搜索引擎 (3)
- iPhone (2)
- hessian (1)
- hessdroid (1)
- 411 (1)
- jstat (1)
- gc (1)
- gallery (1)
- 惯性 (1)
- eclipse (1)
- mac wget error (1)
- miui file explorer 无用 解决办法 (1)
- vim (1)
最新评论
-
qingyezhangluo:
哎。楼主您既然是分享代码的为什么要加密的呢?而且问你密码还不回 ...
android应用换皮肤(转) -
MagicError:
kavoe 写道下载文件有密码。。。。
http抓包工具 -
knightdf:
我先试下再来
JAVA的RAS加密例子 -
kavoe:
下载文件有密码。。。。
http抓包工具 -
changanfounder:
hmc1985 写道setCallbackDuringFlin ...
android gallery滑动惯性问题
可以以左声道或者右声道来播放 音频文件 :
import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.TextView; import android.media.MediaPlayer; import android.media.AudioManager; import android.media.AudioTrack; import android.media.AudioFormat; public class LRChannel extends Activity { private Button lButton; private Button rButton; private TextView myTextView; private MediaPlayer mMediaPlayer01 = null; private AudioTrack aAudioTrack01 = null; private String strFilePath = "/sdcard/test.mp3"; private float midVol = 0; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); lButton = (Button) findViewById(R.id.ButtonL); rButton = (Button) findViewById(R.id.ButtonR); myTextView = (TextView) findViewById(R.id.myTextView); // left button response lButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { // if ( checkSDCard() ) // { // playVideo(strFilePath); playSound(strFilePath, 0); // } } }); // right button response rButton.setOnClickListener(new Button.OnClickListener() { @Override public void onClick(View arg0) { playSound(strFilePath, 1); } }); } private void playVideo(String strPath) { mMediaPlayer01 = new MediaPlayer(); mMediaPlayer01.setAudioStreamType(AudioManager.STREAM_MUSIC); try { mMediaPlayer01.setDataSource(strPath); } catch (Exception e) { // TODO Auto-generated catch block myTextView.setText("setDataSource Exceeption:" + e.toString()); e.printStackTrace(); } try { mMediaPlayer01.prepare(); } catch (Exception e) { // TODO Auto-generated catch block myTextView.setText("prepare Exceeption:"+e.toString()); e.printStackTrace(); } mMediaPlayer01.start(); myTextView.setText("Playing"); mMediaPlayer01.setOnCompletionListener(new MediaPlayer.OnCompletionListener() { public void onCompletion(MediaPlayer arg0) { // TODO Auto-generated method stub myTextView.setText("Playing stop!"); } }); } // iChannel = 0 means left channel test, iChannel = 1 means right channel test. private void playSound(String strPath, int iChannel) { // If now is playing... if ( aAudioTrack01 != null ) { aAudioTrack01.release(); aAudioTrack01 = null; } // Get the AudioTrack minimum buffer size int iMinBufSize = AudioTrack.getMinBufferSize(44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT); if ( iMinBufSize == AudioTrack.ERROR_BAD_VALUE || iMinBufSize == AudioTrack.ERROR ) { return; } // Constructor a AudioTrack object try { aAudioTrack01 = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_STEREO, AudioFormat.ENCODING_PCM_16BIT, iMinBufSize, AudioTrack.MODE_STREAM); } catch (IllegalArgumentException iae) { myTextView.setText("new AudioTrack Exceeption:" + iae.toString()); iae.printStackTrace(); } // Write data to buffer byte data[] = new byte[iMinBufSize]; aAudioTrack01.write(data, 0, data.length); aAudioTrack01.write(data, 0, data.length); float lValue = 0; float rValue = 0; if ( iChannel == 0 ) { lValue = 1.0f; rValue = 0.0f; } else if ( iChannel == 1 ) { lValue = 0.0f; rValue = 1.0f; } aAudioTrack01.play(); if ( aAudioTrack01.setStereoVolume(lValue, rValue) == AudioTrack.SUCCESS ) { myTextView.setText("setStereoVolume successfully!"); } aAudioTrack01.stop(); if ( aAudioTrack01.setStereoVolume(midVol, midVol) == AudioTrack.SUCCESS ) { myTextView.setText("Restore setStereoVolume successfully!"); } aAudioTrack01.release(); aAudioTrack01 = null; } private boolean checkSDCard() { if ( android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED) ) { return true; } else { return false; } } @Override protected void onDestroy() { super.onDestroy(); // TODO Auto-generated method stub if ( aAudioTrack01 != null ) { aAudioTrack01.setStereoVolume(midVol, midVol); aAudioTrack01.release(); aAudioTrack01 = null; } } }
在播放音频方面,AudioTrack可以设置的效果更多,如果你用MediaPlayer,在设置播放效果时不如AudioTrack!
评论
4 楼
hzhbking
2012-05-09
不会用
3 楼
sasuke38
2011-11-30
请问怎么暂停,暂停后又怎么继续播放
2 楼
jiang4920
2011-10-25
请问在哪儿里开始播放的?
1 楼
marine8888
2011-08-15
hi,在playSound(musicPath,channel)中没有处理musicPath,playSound(...)的时候有声音吗?
发表评论
-
android屏幕适配
2012-11-16 17:24 2198屏幕适配一直是一个让人头疼的问题,论坛上讨论这个问题的最后也 ... -
禁止Eclipse中xml文件Run as的XSL Transformation生成out.xml以方便Android应用开发
2012-08-26 21:38 2648可以在Eclipse里面配置,菜单Windows->P ... -
android 自带的主题 theme 的使用
2012-08-25 23:21 2377在android的sdk 安装目录data\r ... -
android 如何判断程序是否在前台运行
2012-04-06 00:04 3107private boolean isTopActiv ... -
用代码如何检测一个android程序是否在运行
2012-04-05 23:07 3746<uses-permission android:na ... -
Android-TextView多行本文滚动轻松实现
2012-03-04 19:37 1333TextView tvAndroid123 = (T ... -
让背景模糊的效果
2012-03-04 16:22 2627设置透明度(这是窗体本身的透明度,非背景) Wi ... -
Android 使用shape
2012-03-04 16:14 1058刚刚翻论坛的时候看到的,总觉得以后会用的上这些零零碎碎 ... -
关于android中使用很多大图片的一些做法
2012-02-29 00:11 1449最近在xoom上开发应用,碰到ui设计都是使用图片,而 ... -
屏幕尺寸和像素密度的资源限定符
2012-02-23 15:31 1615屏幕尺寸和像素密度的资源限定符 以下是可以用来为 ... -
android开发之gallery 实现滚动一张且短距离滑动实现滚动
2011-12-19 18:50 1934首先gallery的特点就不用多说了吧,惯性滚动、半屏翻页,但 ... -
下拉刷新
2011-10-14 15:09 1193要实现这种效果 可以参见这里https://git ... -
android应用换皮肤(转)
2011-10-12 14:36 3210看到好多人在问题与解答里面都问怎么换肤,搜了一下论坛里面好像没 ... -
Android签名到底都有哪些作用?
2011-10-09 17:59 2308所有的Android应用程序都要求开发人员用一个证书进 ... -
Android 动态切换全屏和非全屏模式
2011-10-08 15:15 3483直接贴出代码: Java代码 ... -
Android开发——利用Cursor+CursorAdapter实现界面实时更新(转)
2011-09-20 15:47 3088好久没有更新博客了 ... -
Nginx使用反向代理时 Hessian 的 411 错误解决方案【转】
2011-09-15 13:48 2367问题描述: 用 Hessian 实现 web se ... -
理解 Android 本地数据存储 AP(转)
2011-05-18 14:25 1916样例应用程序 为了突出 Android 应用程序开发的本 ... -
Android 本地数据存储 API(二)(转)
2011-05-18 14:23 1992使用 SQLite 数据库 Android 通过 S ... -
Android 本地数据存储 API(三)(转)
2011-05-18 14:22 2576为私有数据使用设备的内部存储器 有了数据存储 API ...
相关推荐
这篇博客"android使用AudioTrack低延迟播放音频文件"详细介绍了如何利用`AudioTrack`来实现这一目标。 首先,`AudioTrack`的创建需要指定一些关键参数,包括音频格式(如采样率、位深度、声道数)、音频流类型(如...
总结来说,使用AudioTrack播放PCM音频文件涉及的关键知识点包括:PCM音频格式的理解、AudioTrack类的使用、音频参数设置、文件读取以及播放控制。通过熟练掌握这些技术,开发者可以实现自定义的音频播放功能,满足...
`AudioTrack`类是Android提供的一种高级音频播放接口,它允许开发者直接控制音频缓冲区,从而实现更低的延迟播放。下面将详细探讨如何使用`AudioTrack`来实现这一目标。 首先,`AudioTrack`的创建需要几个关键参数...
播放扩展名为rm格式的文件,不使用android 内置的Audio和video来播放PCM音频数据,通过通过解码得到PCM数据源,使用AudioTrack类实现音频文件的播放,本源码就是演示了如何使用AudioTrack来播放PCM音频数据,...
同时,AudioTrack也可以用于播放PCM数据流的音频文件,如WAV格式的音频文件。 AudioTrack是Android音频系统中播放音频的重要组件,了解AudioTrack的使用方法和工作原理,可以帮助开发者更好地使用AudioTrack进行...
在Android平台上,`AudioTrack`类是用于播放音频数据的核心组件。它允许开发者将音频数据送入设备的音频硬件进行播放,支持多种音频格式。在本文中,我们将深入探讨`AudioTrack`的工作原理、使用方法以及如何处理PCM...
在Android系统中,`AudioTrack`是用于在设备上播放音频数据的核心类。它允许开发者直接控制音频硬件,实现低延迟、高性能的音频播放。本文将深入探讨`AudioTrack`的工作原理、使用方法以及相关注意事项。 一、`...
7. **播放PCM音频**: 使用`AudioTrack`类来播放解码后的PCM数据。`AudioTrack`是一个直接音频输出接口,可以将音频数据传送到设备的音频硬件进行播放。你需要设置适当的音频属性,如采样率、通道数和位深度,确保与...
`AudioTrack`是Android系统提供的用于播放音频数据的类,它可以将PCM(脉冲编码调制)数据发送到音频硬件进行播放。创建`AudioTrack`对象时,需要提供音频格式(如采样率、位深度、通道数)、缓冲区大小以及播放模式...
Android 使用 AudioRecord 和 AudioTrack 完成音频PCM数据的采集和播放,并读写音频wav文件。 封装好的Java代码,可同时录制PCM和WAV文件。自己定义存储位置。 Android提供了AudioRecord和MediaRecord。MediaRecord...
一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧
本篇将深入探讨如何使用`AudioTrack`、OpenSL ES以及ffmpeg库来实现mp3文件的播放。这四个关键技术是Android原生音频处理的重要组成部分,它们分别是: 1. **AudioTrack**: Android SDK中的一个类,用于向音频硬件...
RT,一个使用audiotrack播放PCM音频数据的DEMO,上传的代码工程中有个音频数据文件夹,包含了用于测试的PCM数据文件,详情请看readme.txt;另外代码附详细说明,走过路过的都不要错过了,喜欢就顶下吧
`AudioRecord`和`AudioTrack`是Android SDK提供的一对关键类,分别用于录音和播放音频数据。这两个类允许开发者进行低级别的音频操作,实现更加灵活和高效的声音处理。接下来,我们将深入探讨如何使用`AudioRecord`...
在Android平台上,AudioTrack类是系统提供的一种API,允许开发者直接播放原始的音频数据,例如PCM格式的文件。本文将深入探讨如何使用AudioTrack播放PCM文件,并展示波形,同时结合给定的文件信息,我们可以推测这是...
下面我们将详细探讨如何使用`AudioTrack`来播放PCM音频。 首先,创建一个`AudioTrack`实例是必要的。你需要指定音频的参数,如声道数(单声道或立体声)、采样率(例如44100Hz)、位深度(通常为16位)以及音频格式...
AudioRecord和AudioTrack是Android SDK提供的两个核心类,分别用于录音和播放音频数据。这两个类是实现Android设备上音频输入输出的基础。 AudioRecord类允许开发者从设备的麦克风获取原始的PCM(脉冲编码调制)...
在Android平台上,音频处理是一个非常重要的领域,尤其对于开发者来说,理解如何利用音频API来创建、播放和控制声音是至关重要的。"android音频发射器,audiotrack方波,音频通信"这个标题揭示了我们将要探讨的核心...
本篇文章将深入探讨如何使用C++来播放音频流,特别是针对PCM(脉冲编码调制)裸流。PCM是一种常见的数字音频编码方式,它直接对模拟音频信号进行采样和量化,形成数字信号。 首先,我们要理解PCM裸流的本质。PCM...
本示例“音频录制和播放示例”提供了一个基础的实现方式,利用了Android SDK中的AudioRecord和AudioTrack类。下面我们将深入探讨这两个核心组件以及它们在音频处理中的作用。 AudioRecord是Android提供的一个API,...