对于我的 Android 应用程序,我想在从应用程序接听电话后播放音频文件。
应用程序将发起电话呼叫,一旦接收者接听电话,应用程序应开始播放录制的音频文件。
通过在谷歌上进行大量搜索,我发现这对于未root的设备来说是不可能直接实现的。
但有什么替代方案或任何其他方式来实现这一目标吗?
我想实现这一点,因为该应用程序的功能是:如果应用程序用户遇到麻烦,他只需按应用程序中的帮助按钮,然后应用程序开始呼叫提到的联系人,并且应在该人收到该联系人后立即播放录制的音频文件称呼。
阅读步骤:
1. Android 设备中的一些本机音乐播放器在处理此问题时,它们限制在 TelephonyManager 中通话时的音乐。EXTRA_STATE_OFFHOOK(摘机状态),因此无法使用本机播放器播放背景音乐。但在第三种情况下像“poweramp music palyer”这样的聚会 apss 是可能的。
2.通过使用 MediaPlayer 类也是不可能的(文档中明确提到)
3.只有在一种情况下,如果您开发的自定义音乐播放器(不使用 MediaPlayer 类)实现了
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)
}
}
};
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)