[英]How to pause my application's audio/music after launching google's Voice Search (Speech Recognition)?
我制作了一个音频播放器,我需要在用户启动谷歌语音搜索时暂停它。
我只尝试了两种方法,但都失败了
编写接收器以接收广播动作意图“android.speech.action.RECOGNIZE_SPEECH”,但它根本不起作用,无法从语音搜索接收回叫。
编写服务以获取SpeechRecognizer,如下所示(部分代码)
码:
public class VoiceSearchMonitor extends Service
{
@Override
public IBinder onBind(Intent intent)
{
// TODO Auto-generated method stub
return null;
}
@Override
public void onCreate()
{
// Get SpeechRecognizer
SpeechRecognizer recognizer = SpeechRecognizer.createSpeechRecognizer(context);
// Create a new RecognitionListener
RecognitionListener listener = new RecognitionListener()
{
@Override
public void onReadyForSpeech(Bundle params)
{
// *** I want to pause my audio here ***
}
@Override
public void onEndOfSpeech()
{
// *** I want to resume my audio here ***
}
}
// make an intent
Intent intent = new Intent("android.speech.action.RECOGNIZE_SPEECH");
// Start listening
recognizer.setRecognitionListener(listener);
recognizer.startListening(intent);
}
}
在我启动语音搜索后,无法接收onReadyForSpeech
,'onEndOfSpeech'的回调,所以我无法暂停我的音频。 我只是想知道是否有办法获得谷歌语音搜索的SpeechRecognizer实例,这样我才能正确获得回调?
有谁知道我的问题的答案? 谢谢你的帮助!
喜悦
我最初为此问题采取了相同的路线,但解决方案是使用AudioManager而不是SpeechRecognizer。
我们的应用程序已经使用AudioManager.OnAudioFocusChangeListener的自定义侦听器,并且正确响应了AUDIOFOCUS_GAIN和AUDIOFOCUS_LOSS状态。 事实证明,语音搜索会触发AUDIOFOCUS_LOSS_TRANSIENT状态,因此将其添加到更改侦听器会导致在执行语音搜索时暂停播放。
总结一下:
创建监听器
AudioManager.OnAudioFocusChangeListener audioFocusListener =
new AudioManager.OnAudioFocusChangeListener() {
@Override
public void onAudioFocusChange(int focusChange) {
Logging.d(TAG, "audiofocus change");
if(focusChange == AudioManager.AUDIOFOCUS_LOSS || focusChange == AudioManager.AUDIOFOCUS_LOSS_TRANSIENT)
suspendPlayback();
if(focusChange == AudioManager.AUDIOFOCUS_GAIN)
resumePlayback();
}
};
获取AudioManager,请求焦点并传递侦听器
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
int result = audioManager.requestAudioFocus(audioFocusListener, AudioManager.STREAM_MUSIC,
AudioManager.AUDIOFOCUS_GAIN);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.