http://blog.csdn.net/z3465875/article/details/78480527
最近开发的项目中需要使用语音识别的功能,国内有讯飞和百度两大平台,分别看了两家的文档后,决定使用百度语音识别功能。
百度语音没有Unity的sdk包,因此就需要使用百度的安卓sdk,在Android Studio中写好功能,导出jar包供Unity使用。
第一步 在Android Studio中发布测试jar包
首先,由于是第一次自己使用Android Studio导出Unity jar包,因此先写一个测试jar包看Unity能否成功调用方法和收到回调。
打开Android Studio,新建一个工程。
输入名称和包名后点击下一步,Minimun SDK 为最小支持的安卓sdk版本,选择后点击下一步,选择Empty Activity,点击下一步,名称默认就可以,然后点击Finish。
如果在控制台出现以下错误:
Error:Failed to open zip file.
Gradle’s dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
说明gradle依赖不能加载,你可以百度自行下载适合的gradle包,下载后解压。然后在Android Studio中点击File->Settings 如图,在Project-level settings 中选择use local gradle distribution然后选择下载好的gradle路径。
在项目名称上点击右键,选择新建一个Module,然后选择Android Library。
可以看到项目中多了一个文件夹baiduvoice,文件夹名为刚才创建Android Library时输入。下文中称这个新建的文件夹为Library。
要开发Unity可用的jar包,需要导入Unity提供的class.jar 文件。该文件在Unity安装路径下的Editor\Data\PlaybackEngines\AndroidPlayer\Variations\mono\Release\Classes文件夹中,将该文件复制到baiduvoice/libs 文件夹中。
然后选择File->Project Structure,在Modules中选择刚才创建的Library,选择Dependencies,可以看到右边有加号,点击加号后选择第二个,然后找到刚才添加的class.jar。
在这个Library下新建一个class,这个class在src/main/java/…文件夹中,代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
这个类为什么不继承UnityPlayerActivity,请参考这篇文章,这篇文章指出了在自己编写Unity中使用的安卓插件时,为什么不要继承UnityPlayerActivity。
接下来,修改Library文件夹下的build.gradle文件,将一下代码添加到文件后面。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
点击界面右边的gradle,如图,选中Library点击右键,选择Refresh external project。然后点开下方的other,找到exportJar,双击,可以看到在Library下有了一个release文件夹,说明我们导出jar包成功了。
接下来,新建一个Unity工程,将刚才导出的jar包放到Unity工程中Plugins/Android文件夹下,此方法导出的jar包并不需要在Plugins/Android下添加AndroidManifest.xml文件,unity打包安卓时会自动添加。新建一个Test脚本,代码如下:
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
在场景中新建一个Canvas,并且添加一个Text, 将此脚本挂在Canvas上,为脚本的text赋值,发出安卓版本。如下图
如果在手机上显示出如下图片,则表示调用成功。