+-
如何在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的音量.

点击查看更多相关文章

转载注明原文:如何在Android中获取AudioTrack的音量? - 乐贴网