其他分享
首页 > 其他分享> > 如何在Android中获取AudioTrack的音量?

如何在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