从Google Meet获取音频会话Id



我在玩DynamicsProcessing。我想处理来自外部应用程序的音频。我只需要audioSessionId。例如,我对播放音乐没有任何问题。我用过BroadCastReceiver听过android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION,一切都像符咒一样。

<receiver android:name=".framework.AudioSessionReceiver">
<intent-filter>
<action android:name="android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION"/>
</intent-filter>
</receiver>
class AudioSessionReceiver : BroadcastReceiver() {
override fun onReceive(context: Context?, intent: Intent?) {
intent?.let {
val audioSessionId = intent.getIntExtra(Equalizer.EXTRA_AUDIO_SESSION, -1)
val packageName = intent.getStringExtra(Equalizer.EXTRA_PACKAGE_NAME)
KLog.i("audioSessionId: $audioSessionId")
KLog.i("packageName: $packageName")
} ?: KLog.w("Intent is null")
}
}

挑战是当我想在Google Meet上做同样的事情时。我不知道如何从应用程序中获取会话id。但我知道这是可能的,因为如果我在Logcat上查找,我可以直接看到它:

WebRtcAudioTrackExternal: [623:191] [21746] AudioTrack: session ID: 7649, channels: 1, sample rate: 48000, max gain: 1.0

我已经检查过,如果我手动通过session ID(audioSessionId(,它是否有效。

如何通过应用程序进行操作

非常感谢!!:-(

它可以从活动AudioRecordaudioSessionId获得,因为它是在创建AudioTrack之后创建的,数字从8到8。

val audioManager = (context.getSystemService(Context.AUDIO_SERVICE) as AudioManager)
return audioManager.activeRecordingConfigurations[0].clientAudioSessionId - 8

我已经检查过它与Google Meet进行视频会议,并均衡对方的语音。;-(

https://github.com/soygabimoreno/AudioClean

最新更新