任何人都可以帮我找到在app中找到不同audioPlayer幅度的方法吗?我需要知道我的应用程序中videoCall音频的幅度。
我的应用中的示例我有一个videoPlayer(youtube)和videoCall功能。因此,当我收到videoCall时,当someOne在videoCall上讲话时,我需要减慢/停止videoPlayer的声音。有没有办法找到它?
我找到了一种获取手机音频播放器振幅的方法,但这可以提供在应用中播放的所有类型音频的幅度,而无需发送任何源或streamType标识符(MUSIC_STREAM
或CALL_STREAM
)或任何不同的东西,我可以识别给定幅度的来源,如播放器或videoCalls。
这只会在Visualizer(audioSessionId)中提供AudioPlayer的audioSessionId时有所帮助,但由于ThirdPartySDK,我无法获得任何播放器的audioSessionId(videoCall,youtube)。
private void createVisualizer(){
int rate = Visualizer.getMaxCaptureRate();
Visualizer audioOutput = new Visualizer(0); // get output audio stream
audioOutput.setDataCaptureListener(new Visualizer.OnDataCaptureListener() {
@Override
public void onWaveFormDataCapture(Visualizer visualizer, byte[] waveform, int samplingRate) {
float intensity = ((float) waveform[0] + 128f) / 256;
Log.d("visualizer = ", "visualizer = "+visualizer+ "visualizer = "+String.valueOf(intensity));
}
@Override
public void onFftDataCapture(Visualizer visualizer, byte[] fft, int samplingRate) {
}
},rate , true, false); // waveform not freq data
Log.d("rate", String.valueOf(Visualizer.getMaxCaptureRate()));
audioOutput.setEnabled(true);
}
任何建议都会有所帮助,在此先感谢。
答案 0 :(得分:0)
我找到了解决方案,我用于VideoCall的SDK提供了所有用户的语音级别,所以我用它来实现我的功能。
我找到的其他解决方案是使用MediaRecorder,它提供声音级别的不同来源,如MIC,VOICE_CALL等。但是因为SDK已经在内部使用MediaRecorder并且android不允许使用2同时MediaRecorder的实例所以它对我没用。