对于我的Android应用程序,我想在应答应用程序的呼叫后播放音频文件。应用程序将发起电话呼叫,一旦接听者拿起电话,应用程序应开始播放录制的音频文件。
通过在Google中搜索很多次,我发现这对于没有根的设备是不可能的。
但是,有没有其他方法来实现这一点呢?
我想实现这一点,因为应用程序的功能是:如果应用程序用户遇到麻烦,他可以只按应用程序中的帮助按钮,然后应用程序开始呼叫提到的联系人,并应播放录音的音频文件,一旦收到呼叫的人。
发布于 2015-01-22 14:44:26
阅读以下步骤:
1.一些本地音乐播放器在安卓设备上处理这一点,他们限制音乐时,通话是在TelephonyManager.EXTRA_STATE_OFFHOOK (OFFHOOK状态),所以没有办法播放背景音乐使用本地players.But的一些第三方应用程序,如"poweramp音乐播放器“是可能的。
2.使用MediaPlayer类也是不可能的(文档中清楚地提到了)
3.仅在一种情况下,如果您开发的自定义音乐播放器(不使用MediaPlayer类)实现了
AudioManager.OnAudioFocusChangeListener通过使用这个,你可以在下面的代码“focusChange=AUDIOFOCUS_LOSS_TRANSIENT”中获得音频管理器的状态(当音乐在后台播放时,任何来电都会调用这个状态),这个状态完全掌握在开发人员手中,无论是播放还是暂停音乐。根据您的要求,对于您的问题,当呼叫处于OFFHOOK状态时,您询问是否要播放音乐。在OFFHOOK状态下,请不要暂停播放音乐。.And只有在禁用头戴式耳机时才有可能。
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)
}
}
};https://stackoverflow.com/questions/28082471
复制相似问题