> 下载SDK包: http://yuyin.baidu.com/sdk/down?appId=10094475
解压压缩包,会得到一个AS项目,导入AS项目,编译若出现空指针异常,调高最小版本SDK版本:
compileSdkVersion 25
buildToolsVersion "25.0.2"
defaultConfig {
minSdkVersion 15
targetSdkVersion 25
}
可以正常运行后,在自己的项目中导入该项目的app module,然后修改几个地方就可以用了。
1.gradle的修改:
apply plugin: 'com.android.library'
去掉:applicationId
注释掉:
buildTypes {
release {
// minifyEnabled false
// proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
debug {
}
}
2.AndroidManifest.xml的修改:
android:minSdkVersion="15"
android:targetSdkVersion="25" />
android:name="android.test.InstrumentationTestRunner"
android:label="Tests for com.baidu.speech.recognizerdemo"
android:targetPackage="自己的程序包名" />
>
android:name="com.baidu.speech.APP_ID"
android:value="自己的appid" />
android:name="com.baidu.speech.API_KEY"
android:value="自己的appkey" />
android:name="com.baidu.speech.SECRET_KEY"
android:value="自己的select_key" />
android:name="com.baidu.speech.VoiceRecognitionService"
android:exported="false" />
android:name="com.baidu.android.voicedemo.activity.ActivityMain"
android:configChanges="orientation|keyboardHidden|screenLayout"
android:screenOrientation="portrait"
android:theme="@android:style/Theme.DeviceDefault.Light">
。。。
最后应该就可以只用了,最好自己再封装一个工具类,将语音识别的环境初始化过程和调用的方法封装进去,使用就更方便了,我自己封装的SpeecherUtils
public class SpeecherUtils {
private static Handler handler;
private static MyRecognizer myRecognizer;
protected static CommonRecogParams apiParams;
private static Context context;
public static void init(Context context){
// apiParams = new OnlineRecogParams((Activity) context);
SpeecherUtils.context = context;
KLog.init(true);
apiParams = new OfflineRecogParams( context);
handler = new Handler() {
/*
* @param msg
*/
@Override
public void handleMessage(Message msg) {
super.handleMessage(msg);
KLog.e(msg.obj.toString() );
}
};
IRecogListener listener = new MessageStatusRecogListener(handler);
// 可以传入IRecogListener的实现类,也可以如SDK,传入EventListener实现类
// 如果传入IRecogListener类,在RecogEventAdapter为您做了大多数的json解析。
myRecognizer = new MyRecognizer(context, listener); // this是Activity或其它Context类
myRecognizer.loadOfflineEngine(OfflineRecogParams.fetchOfflineParams());
}
public static void start(){
SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(context);
Mapparams = apiParams.fetch(sp);
myRecognizer.start(params);
KLog.e("start");
}
public static void stop(){
myRecognizer.stop(); // 发送停止录音事件,提前结束录音等待识别结果
}
public static void cancle(){
myRecognizer.cancel(); // 取消本次识别,取消后将立即停止不会返回识别结果
}
public static void destory(){
context=null;
myRecognizer.release();
}
}