Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> 實現Android語音識別服務接口 RecognitionService的方法

實現Android語音識別服務接口 RecognitionService的方法

編輯:關於Android編程

之前的一篇文章介紹過SpeechRecognizer類,該類可以作為對外的一個接口,並通過Intent傳遞一個ComponentName獲取可支持語音識別的功能的服務,一般的用戶手機中如果安裝了語音識別的一些軟件,就會擁有這樣的能力,但是如果開發者希望自己通過某公司的sdk集成自己的語音識別服務,那麼就需要實現RecognitionService這個類。

這個類是個抽象類,需要開發者完成其中的幾個抽象方法。下面的代碼注釋中對每個方法進行了說明。

public class BDRecognitionService extends RecognitionService {
   
    @Override
    public void onCreate() {
        super.onCreate();
        // 在調用服務時進行一次
    }

    @Override
    protected void onStartListening(Intent recognizerIntent, Callback mCallback) {
      //這個方法具體實現了第三方sdk的接入,

 //recognizerIntent 攜帶了上層傳入的參數
//mCallback 需要將第三方sdk的結果回調給該接口,是上層與第三方sdk的橋梁
} @Override 
protected void onCancel(Callback listener)
 { //注銷 } 
@Override 
public void onDestroy() 
{ //銷毀 super.onDestroy(); } 
@Override
 protected void onStopListening(Callback listener) 
{ //暫停 }}



Callback的的接口有以下幾個

public class Callback {
        private final IRecognitionListener mListener;

        private Callback(IRecognitionListener listener) {
            mListener = listener;
        }

        
        public void beginningOfSpeech() throws RemoteException {
            if (DBG) Log.d(TAG, "beginningOfSpeech");
            mListener.onBeginningOfSpeech();
        }

        public void bufferReceived(byte[] buffer) throws RemoteException {
            mListener.onBufferReceived(buffer);
        }
        
        public void error(int error) throws RemoteException {
            Message.obtain(mHandler, MSG_RESET).sendToTarget();
            mListener.onError(error);
        }

       
        public void partialResults(Bundle partialResults) throws RemoteException {
            mListener.onPartialResults(partialResults);
        }

       
        public void readyForSpeech(Bundle params) throws RemoteException {
            mListener.onReadyForSpeech(params);
        }
      
        public void results(Bundle results) throws RemoteException {
            Message.obtain(mHandler, MSG_RESET).sendToTarget();
            mListener.onResults(results);
        }
        
        public void rmsChanged(float rmsdB) throws RemoteException {
            mListener.onRmsChanged(rmsdB);
        }
    }

之後會有一篇文章將一個實現了百度語音識別sdk的該服務代碼展示出來。


  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved