博观而约取,厚积而薄发。这篇文章主要讲述12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1相关的知识,希望能为你提供帮助。
建议先学
文章图片
已经实现好了这几个类。
文章图片
文章图片
首先以安卓模式来打开我们的项目
文章图片
在asr这个目录下,导入几个类
文章图片
这几个类其实是下载的百度AI语音demo里面所提供的,里面已经提供了对百度AI的使用
首先复制这个IRecogListener
文章图片
IRecogListener复制过来改个名字叫做OnasrListener
文章图片
文章图片
这里用到了RecogResult
文章图片
从demo工程里面导入RecogResult
文章图片
直接复制过来即可
文章图片
导入RecogEventAdpter
文章图片
导入后,这里的Listener需要改成OnAsrListener
文章图片
全局替换
文章图片
这里的日志的引用删除
文章图片
这里的MyLogger修改为
文章图片
修改为Log.e
文章图片
还有其他的地方有,都替换为Log.e
文章图片
创建管理类【12-5打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-1】处理录音的管理类
文章图片
文章图片
我们创建的类参考百度的例子里面的MyRecognizer
文章图片
把MyRecognizer这个里面的代码否复制到AsrManager类里面。
文章图片
根据提示导入对应的包
文章图片
参考demo 的类里面的包引用 复制过来
文章图片
复制过来后,把无法识别的去掉。
文章图片
创建一个TAG
文章图片
文章图片
批量替换一下
文章图片
这里删除
文章图片
这里删除
文章图片
删除
文章图片
文章图片
构造方法的名字要改过来
文章图片
log修改为系统的log
文章图片
修改为Log.e
文章图片
这里的Listener创建为一个
文章图片
文章图片
文章图片
这行代码删除掉。
文章图片
参数这里保持一致
文章图片
离线的方法我们不需要,这里直接删除
文章图片
log修改 为下面。
文章图片
stop方法也修改
文章图片
cancel方法
文章图片
release这段代码不需要
文章图片
下面这个也删除。
文章图片
AseManager已经实现好了。就是用来调用百度的语音SDK来完成开始录音、停止录音以及取消录音。还有释放资源这几个方法。
为AsrManager设置Plugin因为我们的flutter还不能直接的调用它,需要通过我们的中间件。起名叫做AsrPlugin
文章图片
接下来重点来实现AsrPlugin。这里需要用到MessageChannel
实现一个接口,这里还没有任何的提示
文章图片
这是因为我们这里还没有添加flutter的依赖。
文章图片
我们来添加对flutter的依赖,这样我们才好在里面开发plugin。
App是怎么依赖Flutter SDK的首先我们这个App项目里面依赖了flutter
文章图片
app的gradle里面配置了这样一段代码
文章图片
配置了以后 最终得到了FlutterRoot
文章图片
通过FlutterRoot得到了flutter这样一个脚本。让我们当前的gradle来应用这样的脚本。这样我们的App项目就依赖了Flutter SDK了。
文章图片
文章图片
参考App复制app的这段代码
文章图片
复制过来
文章图片
文章图片
这里也需要复制
文章图片
文章图片
sync同步
文章图片
查看Model有没有对Flutter依赖成功。首先我们调用Flutter里面的一个类,如果调用成功了就表示已经依赖成功了。
文章图片
它就是flutter包下面的。这就说明我们在这个module里面已经成功的依赖了flutter的SDK
文章图片
实现接口内的方法
文章图片
解决两个模块之间都引用flutter sdk的冲突两个module同时依赖了flutter。app这个Module又同时依赖asr_plugin这个module,他们两个之间的flutter sdk就会冲突。那么怎么解决这个冲突呢?
文章图片
首先打开app这个模块的gradle。配置一下,让它对flutter依赖不冲突。
文章图片
需要进行两步修改,
第一步,在继承sdk的时候,导入了三种架构的目录。对abiFilters过滤这三种包,也就是只打这三种架构的包。加入X86是因为模拟器只支持X86的架构
文章图片
文章图片
文章图片
第二步:
添加打包的配置
文章图片
也就是打包的时候会出现两份so。我们只取一份。
文章图片
配置好以后进行同步
文章图片
结束
推荐阅读
- 安卓基础(页面导航传递数据)
- “ObjectContent`1”类型未能序列化内容类型“application/xml; charset=utf-8”的响应正文。
- 12-6打通Flutter与Android的任督二脉Flutter Plugin开发指南-Android端实现-2
- 如何测试网站是否支持HTTP/3()
- MongoDB,MariaDB,MySQL有什么区别(详细对比)
- 11种用于扫描Linux Server的安全缺陷和恶意软件的工具
- SQL vs. NoSQL –你的下一个项目应使用哪个()
- 如何在Ubuntu,CentOS,Debian和Windows上安装Docker()
- Kubernetes初学者简介