提交适用于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/