android控制音量大小,Android AudioTrack音量控制笔记总结
最近项目中要用到AudioTrack来控制音量,但是尝试了很多次都没弄成功.后来总算弄成功.不错的却是通过AudioManager 和 AudioTrack来进行控制,但是有个注意事项.就是他们的Stream_type必须匹配.对于AudioTrack我个人做监控的时候,基本是来源于网络然后播放PCM数据,AudioTrack有2种初始化模型: MODE_STATIC,MODE_STREAM.MO
最近项目中要用到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来调整音量.
AudioManager audioManager = (AudioManager) getSystemService(Context.AUDIO_SERVICE);
intmax = audioManager.getStreamMaxVolume(AudioManager.STREAM_SYSTEM);
audioManager.adjustStreamVolume(AudioManager.STREAM_SYSTEM
, AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND) ;
intcurrent = audioManager.getStreamVolume(AudioManager.STREAM_SYSTEM);
audioManager.adjustVolume(AudioManager.ADJUST_RAISE, AudioManager.FLAG_PLAY_SOUND);
这里需要特别主意的是 AudioManager的streamType
以后AudioTrack用的是MODE_STREAM,那么AudioMnager的streamType就要用AudioManger.STERAM_SYSTEM,这个专门用于控制播放流数据的,否则设置是无效的.
(秩名)
更多推荐
所有评论(0)