讯飞语音接口空指针异常解决方案

主要就是这句mSpeechRecognizer.setParameter(SpeechConstant.PARAMS, null) on a null object reference报错,但是注释掉这句后续的mSpeechRecognizer相关方法仍然报错,且mRecognizerDialog也出现同样问题,调了一天无果后来上拉Debug日志发现问题仍然是21002错误,也就是couldn’t find “libmsc.so”
最后一步解决方案是main目录下和lib同级建立一个jniLib,并将sdk所有文件拷贝进去(注意是全部,包括两个jar),项目结构如下:

讯飞语音接口空指针异常解决方案_第1张图片
之前采取的步骤也需要一一完成:
1.AndroidManifest.xml文件里添加meta-data

        <meta-data
            android:name="IFLYTEK_APPKEY"
            android:value="你的APPID" />

2.Application的OnCreat()里添加创建实例代码(注意不是Activity的OnCreat)
public void onCreate() {
super.onCreate();
sContext = getApplicationContext();

SpeechUtility.createUtility(Application.this,SpeechConstant.APPID +"=你的APPID");

}

3.app的build.gradle里面配置.so文件
defaultConfig{

        //配置.so文件!
        ndk {
            //选择要添加的对应cpu类型的.so库。
            abiFilters 'x86', 'armeabi', 'armeabi-v7a', 'armeabi-v8a'
        }

}

这里还遇到一个okhttp3无法加载的问题,解决办法是build.gradle里设置jdk1.8

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

以上,空指针问题应该能得到解决

你可能感兴趣的:(讯飞语音接口空指针异常解决方案)