我一直在试图找到一种方法来实现SpeechRecognizer API在一个服务(在后台运行),以便当条件满足时,它将打开语音识别器,而不必在应用。我的问题是,这在本地是否可能?如果是这样,它将如何完成?在Android服务中触发语音识别
0
A
回答
1
这是我的代码片段。您可以在服务中使用这种识别侦听器。 我不知道你是如何安排你的服务,我已经把它留给你了。但你可以做这样的事情。 (我没有添加代码重新启动服务/启动它在计时器等)
public class MyService extends Service {
protected static SpeechRecognizer mSpeechRecognizer;
protected Intent mSpeechRecognizerIntent;
Context c;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
//if condition is met then do this
SpeechRecognitionListener h = new SpeechRecognitionListener();
mSpeechRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
mSpeechRecognizer.setRecognitionListener(h);
mSpeechRecognizerIntent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,
RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
Log.d("avail", " " + mSpeechRecognizer.isRecognitionAvailable(this));
if (mSpeechRecognizer.isRecognitionAvailable(this))
Log.d("created", "onBeginingOfSpeech");
mSpeechRecognizerIntent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,
this.getPackageName());
mSpeechRecognizer.startListening(mSpeechRecognizerIntent);
return START_STICKY;
}
@Override
public void onCreate() {
super.onCreate();
c= getApplicationContext();
}
@Nullable
@Override
public IBinder onBind(Intent intent) {
return null;
}
class SpeechRecognitionListener implements RecognitionListener {
@Override
public void onReadyForSpeech(Bundle bundle) {
Log.d("onReady", "service");
}
@Override
public void onBeginningOfSpeech() {
}
@Override
public void onRmsChanged(float v) {
}
@Override
public void onBufferReceived(byte[] bytes) {
}
@Override
public void onEndOfSpeech() {
}
@Override
public void onError(int i) {
Log.d("ERROR","ERROR");
}
@Override
public void onResults(Bundle resultsBundle) {
Log.d("Results", "onResults");
}
@Override
public void onPartialResults(Bundle bundle) {
}
@Override
public void onEvent(int i, Bundle bundle) {
}
}
}
+0
太棒了!感谢堆 – sebklopfer
+0
没有probs。干杯! – Pavan
相关问题
- 1. Android中的语音识别服务
- 2. 语音识别即服务(Android)
- 3. Android语音识别服务是否忙?
- 4. Web服务中的Microsoft语音识别
- 5. 无界限语音识别触发器
- 6. Android语音识别?
- 7. android语音识别
- 8. Android - 语音识别
- 9. Android:语音识别
- 10. Android中的语音识别
- 11. Android中的语音识别
- 12. 捕获发送给Google语音识别服务器的音频
- 13. 语音识别(网络)服务?
- 14. 了解语音识别服务
- 15. 获取Google的语音识别服务
- 16. 安卓:语音识别服务
- 17. C#语音识别 - 识别语音和执行任务
- 18. 在android中实现语音识别
- 19. 如何在命令触发器中识别语音
- 20. 语音识别不会在C++/CLI DLL中触发EventHandler
- 21. 的Android RecognizerIntent语音识别
- 22. Android帮助语音识别!
- 23. 语音识别Android应用
- 24. 关于Android语音识别
- 25. 语音识别命令Android
- 26. 连续语音识别Android
- 27. Android:语音识别方法
- 28. 语音识别Android NPE
- 29. Android的语音识别
- 30. Android Google API语音识别
你到目前为止做了什么?在后台运行SpeechRecognizer并不是一个好主意,因为它会消耗太多的电池和互联网等资源。 –
我不会在后台运行它,它会在条件满足时触发。 – sebklopfer
您是否使用自定义侦听器而不是Google Prompt知道SpeechRecognizer? –