讯飞语音官网给的demo是在导入android studio中经常出错,我也是反反复复搞了一个多星期终于把最简单的跑出来了....不得不说官方文档给的太太太.....如果直接是项目中需要引用讯飞语音可以直接看这个资源项目结构
https://download.csdn.net/download/qq_31390999/10708132
讯飞语音目前key值必须要和sdk对应,因此其实你是无法使用别人的key值和sdk的,所以所有的sdk和key都要换成自己的。下载后的sdk解压目录是这个样子的,文件中的assets libs 都是我们要导的资源,sample文件夹中是讯飞语音自带的demo,但是这个demo需要导入很多文件,文件导不对很容易出错
将文件夹libs下的所有资源均导入到app文件夹下的libs下,就是将sdk下libs文件下拷到app文件下,将assets文件导入到main文件夹下
很多人建议要在main文件下新建jniLibs文件夹放除了jar包以外的其它资源,但是我的一直在报错(直到我把jniLibs中的文件全复制到libs下,竟然成功了!!!)
一些权限信息
<uses-permission android:name="android.permission.INTERNET" />
<!--获取手机录音机使用权限,听写、识别、语义理解需要用到此权限 -->
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<!--读取网络信息状态 -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<!--获取当前wifi状态 -->
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<!--允许程序改变网络连接状态 -->
<uses-permission android:name="android.permission.CHANGE_NETWORK_STATE" />
<!--读取手机信息权限 -->
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<!--读取联系人权限,上传联系人需要用到此权限 -->
<uses-permission android:name="android.permission.READ_CONTACTS" />
<!--外存储写权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!--外存储读权限,构建语法需要用到此权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<!--配置权限,用来记录应用配置信息 -->
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<!--手机定位信息,用来为语义等功能提供定位,提供更精准的服务-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
如果找不到jar包,在module gradle文件中设置
implementation files('libs/Msc.jar') implementation files('libs/Sunflower.jar') implementation fileTree(include: ['*.jar'], dir: 'libs')
如果不行尝试以下方式 在module gradle 的 android的defaultConfig设置
ndk { abiFilters "armeabi-v7a", "x86", 'armeabi' // DO NOT MODIFY THIS LINE, IT'S UPDATED BY BUILD MACHINE AUTOMATICALLY. }
或者
sourceSets { main { jniLibs.srcDirs = ['libs'] } }
最终的项目结构
顺便说一下,最开始我的项目一直报各种错,我还以为是assets下iflytek里面的recognize.xml乱码导致,实际上recognize.xml的确是乱码,但是导致错误的并不是这个文件,而是导包的时候没有放在正确的位置。