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

创建管理类

处理录音的管理类


我们创建的类参考百度的例子里面的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。我们只取一份。

配置好以后进行同步

结束

猜你喜欢

转载自www.cnblogs.com/wangjunwei/p/12311159.html