Android 在哪里将物理媒体按钮(在耳机线中)转换为逻辑操作(如 NEXT、STOP、SPEECH QUERY)?
有没有办法改变这个分配(即从中创建其他 Action )?
注意:我试图安装一个 MediaButtonReceiver。但它只能看到解释过的 key 。所以我只看到按键,在按键释放得足够早之后不会触发 SPEECH QUERY。
更新:只要我的应用程序处于前台,我就会在 onDispatchKeyEvent 中看到我需要的原始键事件。但是如何在锁定屏幕处于 Activity 状态时获取它们?
MediaButtonReceiver 在应用程序处于后台时被调用(但仅在释放 key 之后)。
最佳答案
在您的应用开始播放任何音频之前,它应该保持将要使用的流的音频焦点。这是通过调用 requestAudioFocus() 完成的,如果您的请求成功,它会返回 AUDIOFOCUS_REQUEST_GRANTED。
您必须指定您正在使用的流以及您是否希望需要 transient 或永久音频焦点。
// Request audio focus for playback
int result = am.requestAudioFocus(afChangeListener,
// Use the music stream.
AudioManager.STREAM_MUSIC,
// Request permanent focus.
AudioManager.AUDIOFOCUS_GAIN_TRANSIENT_MAY_DUCK);
if (result == AudioManager.AUDIOFOCUS_REQUEST_GRANTED) {
// Start playback.
}
查看更多information .
要在您的应用程序中使用实时事件,RTP 是必经之路。它为 RTP(实时传输协议(protocol))提供 API,allowing管理点播或交互式数据流的应用程序。
关于android - Android 在哪里解释媒体按钮?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37235642/