可怕的半桶水一直在晃。程序中需要根據用戶的選擇設置語音識別的語言(目前科大訊飛支持英文、普通話、粵語),不想每次要用戶去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。
?