2015-01-22 9 views
6

내 Android 앱의 경우 애플리케이션에서 전화를 받으면 오디오 파일을 재생하고 싶습니다. 앱이 전화 통화를 시작하고 수신자가 전화를 받으면 앱에서 녹음 된 오디오 파일을 재생해야합니다.안드로이드가 전화 통화 중 오디오 파일을 재생합니다.

Google에서 많은 검색을하면 이것이 루틴되지 않은 장치에서 직접 가능하지 않음을 발견했습니다.

그러나 이것을 달성하기위한 다른 방법이나 다른 방법이 있습니까?

응용 프로그램 사용자가 문제가 생기면 응용 프로그램의 도움말 버튼을 누른 다음 응용 프로그램이 언급 ​​된 담당자에게 전화를 걸고 곧 녹음 된 오디오 파일을 재생해야합니다. 사람이 전화를 받았을 때

+0

두 가지 질문에서 비활성화 된 경우이 만 가능합니다 OFFHOOK 주 .And에서 재생하는 음악을 일시 정지 해달라고 OFFHOOK 상태에있을 때 음악을 재생하려면 묻는 질문에 대한 귀하의 requriment에 따라로서, 실제로 하나, * 1. * 현재 * 수신자가 전화를 받으면 안드로이드 apis를 통해 가능하지 않습니다. [Android AOSP에서 열기] (https://code.google.com/p/android/issues/detail?id= 14266), * 2. * [전화 통화 중 스트림 오디오]와 같은 음악을 재생할 수있는 몇 가지 솔루션 (http://stackoverflow.com/questions/4833522/my-streaming-audio-player-continues-to-play-during -a-phone-call-can not-make-it), 상당히 깨끗하지는 않지만 기기마다 기기마다 결과가 다를 수 있습니다. – user2450263

+0

Android에서 앱에서 음성 통화 업 링크로 오디오를 주입하는 기능이 지원되지 않습니다. 루팅 된 기기에서 기기를 사용할 수 있는지 여부는 기기가 기반으로하는 플랫폼에 따라 다릅니다 (따라서 플랫폼에 따라 달라질 수 있으며 Android ROM 자체를 수정해야 할 수도 있음).), 예를보십시오 http://stackoverflow.com/questions/15204570/inject-uplink-audio-in-call-with-snapdragon-msm8960-soc/15205455#15205455 또는 http://stackoverflow.com/questions/14432521/background-music- 통화 중/14433414 # 14433414 – Michael

답변

5

읽기 단계 :

호출이 TelephonyManager.EXTRA_STATE_OFFHOOK (OFFHOOK 주)에 따라서 재생의 방법이 없을 때이 취급, 그들이 음악을 제한하는 안드로이드 장치에서 기본 음악 플레이어의

1.Some 배경 음악은 네이티브 플레이어를 사용합니다. 그러나 "파워 앰프 뮤직 플레이어"와 같은 제 3 자 애프터 중 일부는 가능합니다. MediaPlayer를 클래스를 사용하여

2.By 또한 당신이 점에서 (MediaPlayer를 클래스를 사용하여 포함) 사용자 정의 음악 플레이어를 개발하는 경우

3.It는 하나의 경우에 가능하다 (명확하게 문서에서 언급) 할 수 없습니다 implements

AudioManager.OnAudioFocusChangeListener AudioManager.OnAudioFocusChangeListener이 코드를 사용하면 아래의 코드 "focusChange = AUDIOFOCUS_LOSS_TRANSIENT"(이 상태는 음악이 백그라운드에서 재생 될 때 전화를받습니다.)이 상태는 완전히 개발자의 손안에 있습니다 음악 재생 여부를 결정합니다. 당신이 전화가 헤드셋

AudioManager am = (AudioManager) this.getSystemService(Context.AUDIO_SERVICE); 

OnAudioFocusChangeListener afChangeListener = new OnAudioFocusChangeListener() { 
    public void onAudioFocusChange(int focusChange) { 
     if (focusChange == AUDIOFOCUS_LOSS_TRANSIENT 
      // Pause playback (during incoming call) 
     } else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) { 
      // Resume playback (incoming call ends) 
     } else if (focusChange == AudioManager.AUDIOFOCUS_LOSS) { 
      am.unregisterMediaButtonEventReceiver(RemoteControlReceiver); 
      am.abandonAudioFocus(afChangeListener); 
      // Stop playback (when any other app playing music in that situation current app stop the audio) 
     } 
    } 
}; 
관련 문제