Android在通话期间播放音频文件

Mih*_*hah 8 audio android phone-call

对于我的Android应用程序,我想在应答来自我的应用程序的呼叫后播放音频文件.应用程序将启动电话呼叫,一旦接收器接听电话,应用程序应开始播放录制的音频文件.

通过在Google中进行大量搜索,我发现对于无根设备而言,这不是直接可行的.

但任何替代这种或任何其他方式来实现这一目标?

我想实现这个,因为应用程序的功能是:如果App用户遇到麻烦,他只需按下应用程序中的帮助按钮,然后应用程序就会开始呼叫提到的联系人,并且应该在收到人员后立即播放录制的音频文件呼叫.

Kom*_*alG 5

阅读步骤:

其中,处理这种1.Some的本地音乐播放器的Android设备,他们限制音乐时通话中TelephonyManager.EXTRA_STATE_OFFHOOK(摘机状态),所以没有打使用本地players.But背景音乐中的一些第三的方式派对apss喜欢"poweramp音乐palyer"这是可能的.

2.使用MediaPlayer类也是不可能的(文档中明确提到)

3.只有在一种情况下,如果你开发的自定义音乐播放器(没有使用MediaPlayer类)实现

AudioManager.OnAudioFocusChangeListener通过使用这个你可以在下面的代码的audiomanager的状态"focusChange = AUDIOFOCUS_LOSS_TRANSIENT"(这时候音乐后台播放状态调用任何来电来了)这种状态是完全在开发商手中是否播放或暂停音乐.根据您对问题的要求,您询问是否要在呼叫处于OFFHOOK状态时播放音乐时不要暂停在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)
        }
    }
};
Run Code Online (Sandbox Code Playgroud)