12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

博观而约取,厚积而薄发。这篇文章主要讲述12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1相关的知识,希望能为你提供帮助。
建议先学

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

已经实现好了这几个类。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


首先以安卓模式来打开我们的项目
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

在asr这个目录下,导入几个类
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这几个类其实是下载的百度AI语音demo里面所提供的,里面已经提供了对百度AI的使用
首先复制这个IRecogListener
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

IRecogListener复制过来改个名字叫做OnasrListener
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


这里用到了RecogResult
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

从demo工程里面导入RecogResult
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

直接复制过来即可
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

导入RecogEventAdpter
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

导入后,这里的Listener需要改成OnAsrListener
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

全局替换
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这里的日志的引用删除
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


这里的MyLogger修改为
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

修改为Log.e 
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

还有其他的地方有,都替换为Log.e
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

创建管理类【12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1】处理录音的管理类
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

我们创建的类参考百度的例子里面的MyRecognizer
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

把MyRecognizer这个里面的代码否复制到AsrManager类里面。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

根据提示导入对应的包
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

参考demo 的类里面的包引用 复制过来
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

复制过来后,把无法识别的去掉。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

创建一个TAG
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

批量替换一下
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这里删除
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这里删除
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

删除
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

构造方法的名字要改过来
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

log修改为系统的log
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

修改为Log.e
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这里的Listener创建为一个
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这行代码删除掉。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

参数这里保持一致
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

离线的方法我们不需要,这里直接删除
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

log修改 为下面。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

stop方法也修改
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

cancel方法
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

release这段代码不需要
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

下面这个也删除。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

AseManager已经实现好了。就是用来调用百度的语音SDK来完成开始录音、停止录音以及取消录音。还有释放资源这几个方法。
为AsrManager设置Plugin因为我们的flutter还不能直接的调用它,需要通过我们的中间件。起名叫做AsrPlugin
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

接下来重点来实现AsrPlugin。这里需要用到MessageChannel

实现一个接口,这里还没有任何的提示
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这是因为我们这里还没有添加flutter的依赖。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

我们来添加对flutter的依赖,这样我们才好在里面开发plugin。
App是怎么依赖Flutter SDK的首先我们这个App项目里面依赖了flutter
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


app的gradle里面配置了这样一段代码
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

配置了以后 最终得到了FlutterRoot
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

通过FlutterRoot得到了flutter这样一个脚本。让我们当前的gradle来应用这样的脚本。这样我们的App项目就依赖了Flutter SDK了。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

参考App复制app的这段代码
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

复制过来
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

这里也需要复制
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

sync同步
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

查看Model有没有对Flutter依赖成功。首先我们调用Flutter里面的一个类,如果调用成功了就表示已经依赖成功了。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

它就是flutter包下面的。这就说明我们在这个module里面已经成功的依赖了flutter的SDK
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

实现接口内的方法
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

解决两个模块之间都引用flutter sdk的冲突两个module同时依赖了flutter。app这个Module又同时依赖asr_plugin这个module,他们两个之间的flutter sdk就会冲突。那么怎么解决这个冲突呢?
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


首先打开app这个模块的gradle。配置一下,让它对flutter依赖不冲突。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

需要进行两步修改,
第一步,在继承sdk的时候,导入了三种架构的目录。对abiFilters过滤这三种包,也就是只打这三种架构的包。加入X86是因为模拟器只支持X86的架构
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片


第二步:
添加打包的配置
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

也就是打包的时候会出现两份so。我们只取一份。
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

配置好以后进行同步
12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1

文章图片

结束 

    推荐阅读