提交适用于Android Auto的应用时,我收到以下反馈:



我的意思是,当用户按下Android Auto UI中的“说话/麦克风”按钮(或者用户在音乐声中尖叫“Ok,Google”)时,该应用应降低播放音量(这是一种媒体播放器应用) , 我想)。

我猜可能还有另一种解释,那就是有语音命令需要提高或降低音量,但似乎……不太可能。而且我在任何地方都看不到任何此类API挂钩。

因此,我认为这是前一种情况,当语音识别开始时,我需要减小音量。

为此,似乎我需要接收该事件的通知(最好还接收语音识别何时结束的通知)。是否有播客意图或其他方法可以将其捕获到我的应用中,以便在用户尝试说话时减少媒体播放的音量?

最佳答案

找到了解决方案。应用程序需要收听的是音频焦点更改事件,例如:

@Override
public void onAudioFocusChange(int focusChange) {
    AudioManager audioManager = (AudioManager) getApplicationContext().getSystemService(Context.AUDIO_SERVICE);
    if (focusChange == AudioManager.AUDIOFOCUS_LOSS |+ focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT) {
        pause();
        shouldPlayOnFocus = true;
    }
    else if (focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT_CAN_DUCK) {
        if (! isPlaying()) {
            return;
        }

        //reduce the playback volume
    }
    else if (focusChange == AudioManager.AUDIOFOCUS_GAIN) {
        if (! isPlaying() && shouldPlayOnFocus) {
            start();
            shouldPlayOnFocus = false;
        }

        //restore stream volume if we reduced it earlier
    }
}

这在引用文档中介绍,在这里:

https://developer.android.com/reference/android/media/AudioManager.OnAudioFocusChangeListener.html

每当按下“讲话”按钮时,Android Auto就会触发音频焦点事件的短暂丢失(AUDIOFOCUS_LOSS_TRANSIENT)。

关于android - Android-用户按下 'Speak'按钮时是否有广播 Intent ?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44734016/

10-11 22:19
查看更多