2013-07-03 35 views
0

我开发的应用程序。我在打电话时需要播放音乐。但我面临着与每当我试图在呼叫播放的音乐也没有那么多大声,因为它是在没有通话的问题。 有什么办法可以在通话时控制背景音乐。当我在通话时,我的音量变得更加柔和,但一旦我结束通话,它就会变得更响。注重背景音乐时,在呼叫

final AudioManager mAudioManager = (AudioManager) ctx 
        .getSystemService(AUDIO_SERVICE); 
      final int originalVolume = mAudioManager 
        .getStreamVolume(AudioManager.STREAM_MUSIC); 
      mAudioManager 
        .setStreamVolume(
          AudioManager.STREAM_MUSIC, 
          mAudioManager 
            .getStreamMaxVolume(AudioManager.STREAM_MUSIC), 
          0); 
      mp = new MediaPlayer(); 


      mp.setAudioStreamType(AudioManager.STREAM_MUSIC); 

      mAudioManager.setMode(AudioManager.MODE_NORMAL); 

      Class audioSystemClass = Class 
        .forName("android.media.AudioSystem"); 
      Method setForceUse = audioSystemClass.getMethod(
        "setForceUse", int.class, int.class); 
      // First 1 == FOR_MEDIA, second 1 == FORCE_SPEAKER. To go 
      // back to the default 
      // behavior, use FORCE_NONE (0). 
      setForceUse.invoke(null, 1, 1); 

这是我的代码。

回答

1

我看到你试图用“力音乐流扬声器” - 方法我张贴在回答another question

的问题是,在语音通话,音乐流将按照语音呼叫的路由,而忽略FOR_MEDIA力的标志。因此,您认为较低的音量很可能是由耳机而不是扬声器播放音乐的结果。

据我所知,在正在进行的通话中没有将音乐路由到扬声器而没有将语音呼叫路由到扬声器(即使用setSpeakerPhoneOn)。

0

根据您的手机制造商/运营商如何实现的Android AudioPolicyService,一些实施降低STREAM_MUSIC卷时MODE_IN_CALL/MODE_IN_COMMUNICATION开庭。

我没有试过,但可能奏效的解决方案是使用STREAM_VOICE_CALL而不是STREAM_MUSIC。然后,您的音频流应该与随叫随到的音频流一起播放。