2015-01-22 2 views
6

Для моего приложения для Android я хочу воспроизвести аудиофайл после ответа на вызов из своего приложения. Приложение начнет телефонный звонок, и как только получатель поднимет вызов, приложение должно начать воспроизведение записанного аудиофайла.Воспроизведение аудиофайла Android во время телефонного звонка

В поисках многого в Google я обнаружил, что это невозможно напрямую для некорневого устройства.

Но любой вариант этого или любого другого способа достичь этого?

Я хочу реализовать это, потому что функциональность приложения: если у пользователя приложения проблемы, он может просто нажать кнопку справки в приложении, а затем приложение начнет звонить указанному контактному лицу и должно сыграть записанный звуковой файл, как только как человек получил звонок.

+0

разные вопросы один на самом деле, * 1. * в настоящее время * один раз, когда приемник выбирает вызов *, невозможно через android apis, [открыть на android AOSP] (https://code.google.com/p/android/issues/detail?id= 14266), * 2. * некоторые решения, доступные для воспроизведения музыки наподобие [stream-audio во время разговора] (http://stackoverflow.com/questions/4833522/my-streaming-audio-player-continues-to-play-during -a-phone-call-not-make-it), не совсем чистая, хотя результаты могут отличаться от устройства к устройству. – user2450263

+0

Внедрение звука в голосовой вызов восходящей линии связи из приложения не поддерживается Android. Независимо от того, сможете ли вы это сделать на корневом устройстве, зависит от того, на какой платформе оно основано (и, таким образом, любое решение, которое вы придумали, скорее всего, зависит от платформы, и может потребоваться изменить сам Android-диск), см., например, 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

Читать шаги:

1.Некоторые нативных музыкальных плееров в устройстве Android, где ее обработки, они ограничивают музыку, когда вызов находится в TelephonyManager.EXTRA_STATE_OFFHOOK (OFFHOOK ГОСУДАРСТВЕННОЙ), так что нет никакого способа игры на фоновая музыка с использованием родных плееров. Но в некоторых из сторонних приложений вроде «poweramp music palyer» это возможно.

2.By используя класс MediaPlayer также не представляется возможным (ясно сказано в документации)

3.It возможно только в одном случае, если ваш создания пользовательских музыкальный плеер (с, используя класс MediaPlayer) в том, что реализует

AudioManager.OnAudioFocusChangeListener с помощью этого вы можете получить состояние AudioManager в коде ниже «focusChange = AUDIOFOCUS_LOSS_TRANSIENT» (это состояние вызовов, когда музыка играет в фоновом режиме пришел любой входящий вызов) это состояние полностью разработчики вручную играть или приостанавливать музыку. Как по вашему requriment за вопрос, который вы просили, если вы хотите, чтобы играть музыку, когда вызов находится в OffHook СОСТОЯНИИ DonT паузы воспроизведения музыки в OffHook ГОСУДАРСТВЕННЫХ й это возможно только тогда, когда гарнитура отключена

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) 
     } 
    } 
}; 
Смежные вопросы