如何在Android中获取AudioTrack的音量?
作者:互联网
我可以使用track.setStereoVolume(a,b);来设置audioTrack的音量.
但是我找不到像getStereoVolume()或setOnVolumeChangedHandler(…)这样的获取音量的方法.
如何追踪音量?
解决方法:
您无法获得音轨的左右音量.
因此,我建议您创建一个表示AudioTrack的类.
public class AudioPlayer{
AudioTrack track;
float leftVolume;
float rightVolume;
public AudioPlayer(){
//create audio track.
leftVolume = 1;
rightVolume = 1;
}
public void setStereoVolume(float left, float right){
this.leftVolume = left;
this.rightVolume = right;
track.setStereoVolume(left, right);
}
}
创建AudioTrack时,两个声道的立体声音量均为1.0.通过AudioPlayer设置音量时,它将跟踪新的音量.
只要AudioTrack完全封装在AudioPlayer中,此功能就可以使用.
编辑:
AudioTrack具有自己的音量级别,与其他轨道无关. AudioTrack正在播放的流(STREAM_MUSIC,STREAM_SYSTEM等)也会影响最终的音量.
因此,假设您的AudioTrack左右声道分别为0.5,.5,并且在STREAM_MUSIC上播放.如果该流的音量为0.5,则最终音频电平为
.5*.5 = .25 //for the left and right channels.
如果由于节电或耳机而进行了一些自动音量调节,无论如何,它都应该在Stream级(或超出此范围的某个隐藏位置)上进行.但是,它不应该调节AudioTrack的音量.
标签:volume,audiotrack,android 来源: https://codeday.me/bug/20191123/2066697.html