我一直在試圖找到一種方法來實現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? –