2013-07-03 107 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。然後,您的音頻流應該與隨叫隨到的音頻流一起播放。