【发布时间】:2017-07-18 06:51:25
【问题描述】:
谁能帮我找到在应用程序中找到不同音频播放器振幅的任何方法?我需要知道我的应用中 videoCall 的音频幅度。
在我的应用中的示例我有一个 videoPlayer (youtube) 和 videoCall 功能。因此,当我收到 videoCall 时,当有人在 videoCall 上讲话时,我需要减慢/停止 videoPlayer 的声音。有什么办法可以找到吗?
我找到了一种获取手机音频播放器振幅的方法,但这提供了在应用程序中播放的所有类型音频的振幅,而无需发送任何源标识符或流类型(MUSIC_STREAM 或CALL_STREAM)或我使用的任何不同的东西可以识别给定振幅的来源,例如播放器或视频通话。
这只有在我在 Visualizer(audioSessionId) 中提供 AudioPlayer 的 audioSessionId 时才有帮助,但由于 ThirdPartySDK,我无法获取任何播放器(videoCall、youtube)的 audioSessionId。
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);
}
任何建议都会有所帮助,在此先感谢。
【问题讨论】:
-
为什么有人给-1分?
-
这个问题表明这是多么困难:- stackoverflow.com/questions/31616084/…
-
@NehaK 你想完成什么?两个玩家都是你的应用程序的一部分吗?或者您确实在谈论其他应用程序?
-
不,我想让他们在一个应用程序中,两个玩家都在一个应用程序中
-
我认为 Android 有能力做到这一点。我每次在手机上播放音乐时都会遇到这种情况,然后突然一条短信进来。音乐音频降低了一点,所以你可以听到短信通知。但我认为你不能从应用程序中做到这一点。我认为 Android 框架会自动为您执行此操作。不过,我很感兴趣你是如何解决这个问题的。 +1
标签: android audio-streaming android-video-player