這個語音識别需要在官網申請APPID
測試:
自己項目采用了科大訊飛語音識别服務,報告中是這樣解釋的:
(1)要想寫好Service代碼,必須了解Service的生命周期.
(2)首先啟動Service服務的方法是:
getActivity().startService(new Intent(getActivity(),VoiceService.class));
停止Service服務:
getActivity().stopService(new Intent(getActivity(),VoiceService.class));
(3)将類繼承與Service:
public class VoiceService extends Service{
}
自動重載OnBind()函數,通過OnBind()的傳回值,将Service的執行個體傳回調用者。
(3) 調用科大訊飛語音API接口代碼
先調用手機麥克風錄音:
rd.setSampleRate(RATE.rate16k);
調用語音API包中的語音識别對話框,将錄音發送到伺服器,并接受伺服器傳回的結果,将資料以連結清單資料結構的形式傳過來,擷取結果:
final StringBuilder sb = new StringBuilder();
rd.setListener(new RecognizerDialogListener() {
public void onResults(ArrayList result, boolean isLast) {
for (RecognizerResult recognizerResult : result) {
sb.append(recognizerResult.text);
public void onEnd(SpeechError error) {
});
(4)文本語音朗讀的調用:
先是聲明播放對象:
private static SynthesizerPlayer player ;
這裡我直接封裝一個朗讀函數,appid是申請的應用授權id,代碼如下:
public void speak(String words){
player = SynthesizerPlayer.createSynthesizerPlayer(getActivity(),”appid=57527406”);
player.playText(words, null,null); //播放文本
}
開啟和關閉服務:
服務中:
Service中是無法顯示對話框的,顯示對話框的方式就是使用getwindow的方法,設定視窗最高優先級即可了!