织梦CMS - 轻松建站从此开始!

罗索

当前位置: 主页>嵌入式开发>Android>

Android AudioTrack音量控制笔记总结

落鹤生 发布于 2013-01-28 10:35 点击:次 
其实AudioTrack的setStereoVolume是可以控制音量的,但是这个音量的总量却是受AudioManager来管理的.因此如果我们要控制AudioTrack的大小,首先通过AudioManager来调整音量.
TAG:

最近项目中要用到AudioTrack来控制音量,但是尝试了很多次都没弄成功.

后来总算弄成功.

不错的却是通过AudioManager 和 AudioTrack来进行控制,但是有个注意事项.

就是他们的Stream_type必须匹配.

对于AudioTrack我个人做监控的时候,基本是来源于网络然后播放PCM数据,AudioTrack有2种初始化模型: MODE_STATIC,MODE_STREAM.

MODE_STREAM没write一次就要和NDK交互一次,比较耗费资源,但是MODE_STATIC就是事先分配一块固定的内存,以后大家只管往这块内存区塞入语音数据就可以了.

咱们在网络上接受数据然后播放通常采用的MODE_STREAM.

其实AudioTrack的setStereoVolume是可以控制音量的,但是这个音量的总量却是受AudioManager来管理的.

因此如果我们要控制AudioTrack的大小,首先通过AudioManager来调整音量.

  1. AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE); 
  2. int max = audioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM); 
  3. audioManager.adjustStreamVolume(AudioManager.STREAM_SYSTEM
  4. , AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND) ; 
  5. int current = audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM); 
  6. audioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND); 

这里需要特别主意的是 AudioManager的streamType

以后AudioTrack用的是MODE_STREAM,那么AudioMnager的streamType就要用AudioManger.STERAM_SYSTEM,这个专门用于控制播放流数据的,否则设置是无效的.

(秩名)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201301/16491.html]
本文出处:shouyanwang 作者:秩名 原文
顶一下
(0)
0%
踩一下
(18)
100%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容