zoukankan      html  css  js  c++  java
  • 实现Android语音识别服务接口 RecognitionService的方法

    之前的一篇文章介绍过SpeechRecognizer类,该类能够作为对外的一个接口,并通过Intent传递一个ComponentName获取可支持语音识别的功能的服务,一般的用户手机中假设安装了语音识别的一些软件,就会拥有这种能力,可是假设开发人员希望自己通过某公司的sdk集成自己的语音识别服务,那么就须要实现RecognitionService这个类。

    这个类是个抽象类,须要开发人员完毕当中的几个抽象方法。以下的代码凝视中对每一个方法进行了说明。

    <pre name="code" class="java">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的该服务代码展示出来。


  • 相关阅读:
    Vue 中样式穿透 /deep/
    Vue 数据冻结 Object.freeze
    Vue 启动项目内存溢出
    Typora[ markdown ] 使用3之----- 语法高亮显示
    Typora[ markdown ] 使用2之-----空格显示
    手动创建mysql数据库的语句记录
    api不能自动注入条件的解决方法
    【WTM框架】查询列表显示正常,但是导出的时候查询条件不起作用的问题记录及解决方法
    WTM问题之“数据列表”控件出现横向的滚动条的解决方法
    树莓派docker无法限制内存Your kernel does not support memory limit capabilities or the cgroup is not mounted
  • 原文地址:https://www.cnblogs.com/blfshiye/p/4074050.html
Copyright © 2011-2022 走看看