/**
*
*/
package com.iflytek.speech.setting;
import android.os.Bundle;
import android.preference.EditTextPreference;
import android.preference.ListPreference;
import android.preference.Preference;
import android.preference.PreferenceActivity;
import android.preference.Preference.OnPreferenceChangeListener;
import android.text.InputType;
import android.text.TextUtils;
import android.view.Window;
import android.widget.Toast;
import com.iflytek.cloud.SpeechConstant;
import com.iflytek.voicedemo.R;
/**
* 评测设置界面
*/
public class IseSettings extends PreferenceActivity {
private final static String PREFER_NAME = "ise_settings";
private ListPreference mLanguagePref;
private ListPreference mCategoryPref;
private ListPreference mResultLevelPref;
private EditTextPreference mVadBosPref;
private EditTextPreference mVadEosPref;
private EditTextPreference mSpeechTimeoutPref;
private Toast mToast;
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE);
super.onCreate(savedInstanceState);
getPreferenceManager().setSharedPreferencesName(PREFER_NAME);
addPreferencesFromResource(R.xml.ise_settings);
initUI();
}
private void initUI() {
mLanguagePref = (ListPreference) findPreference(SpeechConstant.LANGUAGE);
mCategoryPref = (ListPreference) findPreference(SpeechConstant.ISE_CATEGORY);
mResultLevelPref = (ListPreference) findPreference(SpeechConstant.RESULT_LEVEL);
mVadBosPref = (EditTextPreference) findPreference(SpeechConstant.VAD_BOS);
mVadEosPref = (EditTextPreference) findPreference(SpeechConstant.VAD_EOS);
mSpeechTimeoutPref = (EditTextPreference) findPreference(SpeechConstant.KEY_SPEECH_TIMEOUT);
mToast = Toast.makeText(IseSettings.this, "", Toast.LENGTH_LONG);
mLanguagePref.setSummary("当前:" + mLanguagePref.getEntry());
mCategoryPref.setSummary("当前:" + mCategoryPref.getEntry());
mResultLevelPref.setSummary("当前:" + mResultLevelPref.getEntry());
mVadBosPref.setSummary("当前:" + mVadBosPref.getText() + "ms");
mVadEosPref.setSummary("当前:" + mVadEosPref.getText() + "ms");
String speech_timeout = mSpeechTimeoutPref.getText();
String summary = "当前:" + speech_timeout;
if (!"-1".equals(speech_timeout)) {
summary += "ms";
}
mSpeechTimeoutPref.setSummary(summary);
mLanguagePref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ("zh_cn".equals(newValue.toString())) {
if ("plain".equals(mResultLevelPref.getValue())) {
showTip("汉语评测结果格式不支持plain设置");
return false;
}
} else {
if ("read_syllable".equals(mCategoryPref.getValue())) {
showTip("英语评测不支持单字");
return false;
}
}
int newValueIndex = mLanguagePref.findIndexOfValue(newValue.toString());
String newEntry = (String) mLanguagePref.getEntries()[newValueIndex];
mLanguagePref.setSummary("当前:" + newEntry);
return true;
}
});
mCategoryPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ("en_us".equals(mLanguagePref.getValue()) && "read_syllable".equals(newValue.toString())) {
showTip("英语评测不支持单字,请选其他项");
return false;
}
int newValueIndex = mCategoryPref.findIndexOfValue(newValue.toString());
String newEntry = (String) mCategoryPref.getEntries()[newValueIndex];
mCategoryPref.setSummary("当前:" + newEntry);
return true;
}
});
mResultLevelPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
if ("zh_cn".equals(mLanguagePref.getValue()) && "plain".equals(newValue.toString())) {
showTip("汉语评测不支持plain,请选其他项");
return false;
}
mResultLevelPref.setSummary("当前:" + newValue.toString());
return true;
}
});
mVadBosPref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
mVadBosPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
int bos;
try {
bos = Integer.parseInt(newValue.toString());
} catch (Exception e) {
showTip("无效输入!");
return false;
}
if (bos < 0 || bos > 30000) {
showTip("取值范围为0~30000");
return false;
}
mVadBosPref.setSummary("当前:" + bos + "ms");
return true;
}
});
mVadEosPref.getEditText().setInputType(InputType.TYPE_CLASS_NUMBER);
mVadEosPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
int eos;
try {
eos = Integer.parseInt(newValue.toString());
} catch (Exception e) {
showTip("无效输入!");
return false;
}
if (eos < 0 || eos > 30000) {
showTip("取值范围为0~30000");
return false;
}
mVadEosPref.setSummary("当前:" + eos + "ms");
return true;
}
});
mSpeechTimeoutPref.getEditText().setInputType(InputType.TYPE_NUMBER_FLAG_SIGNED|InputType.TYPE_CLASS_NUMBER);
mSpeechTimeoutPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
int speech_timeout;
try {
speech_timeout = Integer.parseInt(newValue.toString());
} catch (Exception e) {
showTip("无效输入!");
return false;
}
if (speech_timeout < -1) {
showTip("必须大于等于-1");
return false;
}
if (speech_timeout == -1) {
mSpeechTimeoutPref.setSummary("当前:-1");
} else {
mSpeechTimeoutPref.setSummary("当前:" + speech_timeout + "ms");
}
return true;
}
});
}
private void showTip(String str) {
if(!TextUtils.isEmpty(str)) {
mToast.setText(str);
mToast.show();
}
}
}