我在为Android Auto提交应用时收到以下反馈:
您的应用不支持所有必需的语音命令。体积 在Android Auto上启动语音命令时不会减少。
我认为这意味着当用户按下Android Auto UI中的Speak / Mic按钮时,应用程序应该减少播放音量(它是媒体播放器应用程序)(或者如果他们在声音中尖叫“Ok,Google”)我想他们的音乐)。
我想其他可能的解释是有语音命令用于提升/降低需要支持的音量,但这似乎......不太可能。我在任何地方都没有看到任何此类API挂钩。
所以我认为这是前一种情况,我需要在语音识别开始时减小音量。
要做到这一点,我似乎需要收到该事件的通知(最好还是语音识别何时结束的通知)。是否有一个boradcast意图或其他方式来捕获我的应用程序,以便我可以减少媒体播放音量,而用户试图说话?
答案 0 :(得分: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
只要按下“发言”按钮,Android Auto就会触发音频焦点事件(AUDIOFOCUS_LOSS_TRANSIENT
)的瞬时丢失。