Android在哪里解释媒体按钮?

时间:2016-05-15 07:30:09

标签: android android-mediaplayer

Android将物理媒体按钮(在耳机线缆中)转换为逻辑操作(如NEXT,STOP,SPEECH QUERY)?

有没有办法改变这个分配(即从中创建其他动作)?

注意:我尝试安装MediaButtonReceiver。但它只看到解释的关键。所以我只看到了按键,在键释放得更早之后就不会触发SPEECH QUERY了。

更新:只要我的应用程序在前台,我就会在onDispatchKeyEvent中看到我需要的原始键事件。但是当锁定屏幕处于活动状态时如何获取它们?

当应用程序处于后台时,会调用MediaButtonReceiver(但仅在密钥发布后才会被调用)。

1 个答案:

答案 0 :(得分:1)

在您的应用开始播放任何音频之前,它应该保留将要使用的流的音频焦点。这是通过调用requestAudioFocus()完成的,如果请求成功,则返回AUDIOFOCUS_REQUEST_GRANTED。

您必须指定您正在使用的流以及是否需要瞬态或永久性音频焦点。

// 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

要在APP中使用实时事件,RTP是可行的方法。它为RTP(实时传输协议),allowing应用程序提供API,以管理按需或交互式数据流。