2013-07-03 3 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를 구현 한 방법에 따라 MODE_IN_CALL/MODE_IN_COMMUNICATION이 세션에있을 때 일부 구현시 STREAM_MUSIC 볼륨이 낮아집니다.

이 방법을 시도하지는 않았지만 가능한 해결 방법은 STREAM_MUSIC 대신 STREAM_VOICE_CALL을 사용하는 것입니다. 그러면 오디오 스트림이 통화 중 오디오 스트림과 함께 재생됩니다.