讯飞语音识别详解-安卓实现

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31390999/article/details/82979756

讯飞语音官网给的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文件中设置

扫描二维码关注公众号,回复: 5495235 查看本文章
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的确是乱码,但是导致错误的并不是这个文件,而是导包的时候没有放在正确的位置。

猜你喜欢

转载自blog.csdn.net/qq_31390999/article/details/82979756
今日推荐