0

我在提交 Android Auto 应用时收到以下反馈:

您的应用程序不支持所有必需的语音命令。在 Android Auto 上启动语音命令时音量不会降低。

我认为这意味着当用户按下 Android Auto UI 中的 Speak/Mic 按钮(或者如果他们在音乐声中尖叫“Ok,Google”时,应用程序应该降低播放音量(它是一个媒体播放器应用程序) , 我想)。

我猜另一种可能的解释是需要支持用于提高/降低音量的语音命令,但这似乎......不太可能。而且我在任何地方都没有看到任何此类 API 挂钩。

所以我假设是前一种情况,我需要在语音识别开始时降低音量。

为此,我似乎需要收到有关该事件的通知(最好还收到有关语音识别何时结束的通知)。是否有广播意图或其他方式在我的应用程序中捕获此内容,以便我可以在用户尝试说话时降低媒体播放音量?

4

1 回答 1

0

找到了解决方案。应用需要监听的是音频焦点改变事件,比如:

@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

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

于 2017-06-24T13:56:53.647 回答