android5.1 setvolume,Android9.0 setStereoVolume左右声道流程(一)

本文深入探讨了Android中设置AudioTrack左右声道音量的过程,从Java层的setStereoVolume方法开始,逐步剖析到C++层,涉及AudioTrack、AudioFlinger、音频 HAL 等组件,揭示了音量控制的内部实现。
摘要由CSDN通过智能技术生成

注意:这条路其实没有走,过后会写第二篇分析到底是怎么控制AudioTrack的左右声道的。

栗子:setStereoVolume()控制左右声道流程.

private AudioTrack mAudioTrack;

int bufferSize = AudioTrack.getMinBufferSize(mSampleRateInHz, mChannelConfig, AudioFormat.ENCODING_PCM_16BIT);

mAudioTrack = new AudioTrack(AudioManager.STREAM_MUSIC,mSampleRateInHz,mChannelConfig,AudioFormat.ENCODING_PCM_16BIT,bufferSize,AudioTrack.MODE_STREAM);

mAudioTrack.setStereoVolume(left ? 1 : 0, right ? 1 : 0);

mAudioTrack.play();

1.frameworks/base/media/java/android/media/AudioTrack.java

frameworks/base/media/java/android/media/PlayerBase.java

<1>.public int setStereoVolume(float leftGain, float rightGain) {

baseSetVolume(leftGain, rightGain);

}

<2>.void baseSetVolume(float leftVolume, float rightVolume) {

playerSetVolume(isRestricted/*muting*/,leftVolume * mPanMultiplierL, rightVolume * mPanMultiplierR);

}

<3>.void playerSetVolume(boolean muting, float leftVolume, float rightVolume) {

native_setVolume(leftVolume, rightVolume);

}

2.frameworks/base/core/jni/android_media_AudioTrack.cpp

static void android_media_AudioTrack_set_volume(JNIEnv *env, jobject thiz, jfloat leftVol, jfloat rightVol ){

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值