可怕的半桶水一直在晃。程序中需要根据用户的选择设置语音识别的语言(目前科大讯飞支持英文、普通话、粤语),不想每次要用户去IatSetting中去改,需要能直接修改IatSetting的设置。之前移植的IatSetting页面没有细究,直到需要进行识别语言的修改时才发现,IatSetting使用了PreferenceActivity(首选项设置页),通过集成PreferenceActivity来实现自己的设置持久化(即使程序退出也可以保存),而保存数据的对象是SharedPreferences。
在需要修改配置的时候加载PreferenceActivity页面,系统会自动将layout(放置在res/xml目录下)和SharedPreference对象进行关联,进行初始化和修改保存,自己不需要编写太多代码。
有篇很好的参考文章:http://blog.csdn.net/plussoft/article/details/9152573。
在我的代码中,新建函数:
private boolean setIatSetting(String name, String value){
SharedPreferences.Editor edit = mSharedPreferences.edit();//mSharedPreferences的初始化请自行翻阅讯飞的指引
edit.putString(name, value);
return edit.commit();
}
每次用户切换页面需要进行语言修改时调用:
setIatSetting("iat_language_preference", "mandarin");
showTip("设置听写语言为中文");
设置英文则将mandarin换成en_us。