对于我的Android应用,我想在接听应用程序的电话后播放音频文件。 应用程序将启动电话呼叫,一旦接收者接听电话,应用程序应开始播放录制的音频文件。
通过在Google中进行大量搜索,我发现对于无根设备,这是不可能的。
但是这个或任何其他方式可以替代这个吗?
我想实现这个,因为应用程序的功能是:如果App用户遇到麻烦,他只需按下应用程序中的帮助按钮,然后应用程序就会开始呼叫上述联系人,并且应该尽快播放录制的音频文件接到电话的人。
答案 0 :(得分:5)
阅读以下步骤:
1.安卓设备中的一些原生音乐播放器处理此问题时,他们会在TelephonyManager.EXTRA_STATE_OFFHOOK(OFFHOOK STATE)中调用时限制音乐,因此无法使用本机播放器播放背景音乐。但在某些像“poweramp music palyer”这样的第三方apss是可能的。
2.使用MediaPlayer类也是不可能的(文档中明确提到)
3.只有在一种情况下,如果你正在开发的自定义音乐播放器(没有使用MediaPlayer类)实现
通过使用这个AudioManager.OnAudioFocusChangeListener,您可以在下面的代码“focusChange = AUDIOFOCUS_LOSS_TRANSIENT”中获取audiomanager的状态(这种状态在后台播放音乐时调用任何来电)此状态完全在开发人员手中是否为播放或暂停音乐。根据您对问题的要求,您询问是否要在呼叫处于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)
}
}
};