2017-07-18 30 views
4

任何人都可以帮助我找到任何方式来找到在应用程序中不同audioPlayer的幅度?我需要知道我的应用程序中videoCall音频的幅度。获取其源/对象/流类型的音频幅度

在我的应用程序中的示例我有一个videoPlayer(youtube)和videoCall功能。因此,当我收到videoCall时,我需要在videoCall发言时减慢/停止videoPlayer的声音。有什么方法可以找到?

我发现了一个方法来获取手机的audioPlayer的幅度,但是这提供了所有类型的音频在app玩的幅度而不发送源或流类型(​​MUSIC_STREAMCALL_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); 
} 

任何建议将有所帮助,提前致谢。

+1

为什么有人给-1点? – NehaK

+0

这个问题显示了这是多么困难: - https://stackoverflow.com/questions/31616084/retrieving-the-application-name-that-has-audio-focus-change –

+0

@NehaK你想完成什么?这两个玩家都是你的应用的一部分吗或者你确实在谈论其他应用程序? –

回答

0

我找到了解决方案,我用于VideoCall的SDK提供了所有用户的语音级别,所以我用它来实现我的功能。

我发现的其他解决方案是使用MediaRecorder,它提供了不同来源的声音级别,如 - MIC,VOICE_CALL等。但是由于SDK已经在内部使用MediaRecorder,并且android不允许使用2个MediaRecorder实例同时所以它不适合我。

android: Detect sound level