百度语音SDK移植使用Androidx包
题记
最近要做一个AR眼镜的项目,目前显示控制的逻辑已经完成。但不过领导想要使用语音对AR眼镜进行控制,所以我就决定使用百度SDK进行打发。
SDK的HelloWorld测试
这一部分只是顺便记录如何加入百度SDK到HelloWorld项目里,与官方教程差别不大。
SDK version:
audiobd_speech_sdk_asr_v3.0.12.2_20190515_c9eed5d
Android Studio version:
3.4.1
新建项目
在Android Studio里,选择File -> New -> New Project。
选择一个Empty Activity。
填写项目名,包名等信息。
新建好项目后,先运行一下确保没有问题。
正常运行。
加入百度语音SDK
先“暂时”使用demo里的APP_ID,API_KEY, SECRET_KEY, 包名。
导入SDK的core module
选择File -> New -> Import Module
选中SDK中的core文件夹
加载成功后。
配置依赖设置
选中app文件夹 -> 右键 -> Open Module Setting
先根据Modules core的信息,如果Compile Sdk Version,Target SDK Version, Min SDK Version等信息,设定Modules app的信息。
添加依赖
官方教程到这里结束。
Compiler的报错
然而,刚才跟着教程走一直都很顺利,但在我手中的这版Android studio是编译报错的!
错误: 程序包android.support.annotation不存在
原因是这样子的:
以前Google使用的都是android.support.v.~的包,但版本太乱太复杂,Google就收编为androidx了。
而百度语音SDK还是使用android.support.v.~的包。
为了响应新时代的号召,还是将android.support.v.~的包迁移到androidx包去吧。
原本
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
改为
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
原本
import android.support.annotation.NonNull;
改为
import androidx.annotation.NonNull;
然后就编程通过了。
调用自带的简易Demo
目前的MainActivity.java是使用继承自AppCompatActivity。
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
改为继承ActivityMiniRecog就可以了。
public class MainActivity extends ActivityMiniRecog {
// @Override
// protected void onCreate(Bundle savedInstanceState) {
// super.onCreate(savedInstanceState);
// setContentView(R.layout.activity_main);
// }
}
测试语音识别效果。
实验成功!!!
后记
其实在迁移androidx前有尝试过另外一个办法。
但这个办法不推荐大家使用。
就是修改gradle.properties里的值。