2010-01-26 40 views
0

在我searchable.xml,我有:如何判斷從SearchManager返回的搜索字符串是否是VoiceSearch的結果?

android:voiceSearchMode="showVoiceSearchButton|launchRecognizer" 

我得到的搜索字符串返回SearchManager的,像這樣:

if (Intent.ACTION_SEARCH.equals(action)) { 
    searchString = intent.getStringExtra(SearchManager.QUERY); 
} 

有沒有辦法從意圖獲得搜索字符串是否是從哪裏來的鍵盤,還是作爲語音搜索和語音識別器的結果?

我知道我可以把實體,如:

<actionkey android:keycode="KEYCODE_SEARCH" android:queryActionMsg="search"/> 
<actionkey android:keycode="KEYCODE_ENTER" android:queryActionMsg="enter"/> 
我searchable.xml文件

,然後用intent.getIntExtra(SearchManager.ACTION_KEY,-999),看看是否搜索開始因爲用戶按下鍵盤上的輸入鍵或硬件搜索按鈕,但我看不到如何檢測是從「麥克風」圖標按鈕還是「搜索」圖標按鈕開始搜索在搜索欄中。

(在語音搜索的情況下,我需要將文本回顯給用戶,而我做了進一步的網站查詢。對於文本搜索,呼應一下剛纔輸入的用戶是多餘的。)

我怎樣才能區分這種差異?

回答

1

回答我自己的問題:如果我只鍵入查詢,則QUERY和USER_QUERY都會返回鍵入的文本。如果我說出來,USER_QUERY爲空。

0

我猜測,語音輸入只是一個輸入法編輯器(IME),並且您將無法獲得任何有關IME用於輸入文本的信息。

+0

不,它不是輸入法。 – DavidPhillipOster 2010-01-26 04:09:55

+0

語音輸入不是IME?你在哪裏看到這些信息? – 2010-01-26 15:56:47

+1

引用來自: http://developer.android.com/reference/android/app/SearchManager.html 「如果設置[launchRecognizer],語音搜索按鈕將直接將用戶帶到內置語音記錄活動,這個活動會提示用戶說話,轉錄口語文本,並將結果查詢文本轉發給可搜索的活動,就好像用戶將其鍵入搜索UI並單擊搜索按鈕一樣。 http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html說:「輸入法(IME)作爲服務實現...」 – DavidPhillipOster 2010-01-26 22:55:46

相關問題