public class MainActivity extends Activity {
protected static final int GOOGLE_STT=0;
Context mContext;
EditText smsNumber, smsTextContext;
Intent i;
SpeechRecognizer mRecognizer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mContext = this;
smsNumber = (EditText) findViewById(R.id.smsNumber);
smsTextContext = (EditText) findViewById(R.id.smsText);
smsTextContext.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
//if(v.isClickable()){
i = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);//음성인식 intent생성
i.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE, getPackageName());//데이터설정
i.putExtra(RecognizerIntent.EXTRA_LANGUAGE, "ko-KR");//음성인식 언어 설정
startActivityForResult(i, GOOGLE_STT); //구글 음성인식 실행
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "말을 하세요."); //사용자에게 보여줄 문자
mRecognizer = SpeechRecognizer.createSpeechRecognizer(mContext);
mRecognizer.setRecognitionListener(listener);
mRecognizer.startListening(i);
//}
}
});
}
private RecognitionListener listener = new RecognitionListener() {
@Override
public void onReadyForSpeech(Bundle params) {
}
@Override
public void onBeginningOfSpeech() {
}
@Override
public void onRmsChanged(float rmsdB) {
}
@Override
public void onBufferReceived(byte[] buffer) {
}
@Override
public void onEndOfSpeech() {
}
@Override
public void onError(int error) {
}
@Override
public void onResults(Bundle results) {
///
String key= "";
key = SpeechRecognizer.RESULTS_RECOGNITION;
ArrayList<String> mResult = results.getStringArrayList(key);
String[] rs = new String[mResult.size()];
mResult.toArray(rs);
smsTextContext.setText("" + rs[0]);
mRecognizer.startListening(i);
///
}
@Override
public void onPartialResults(Bundle partialResults) {
}
@Override
public void onEvent(int eventType, Bundle params) {
}
};
제가 문자보내기 앱에서 문자 edit창을 음성으로 입력받는 것을 해보고 싶습니다.
하나 editext창은 전화번호를 키보드로 입력받고 두번째 edittext창은 문자입력란으로 칸을 눌렀을때 문자내용을 음성으로 인식받도록 해보고 싶습니다.
현재 처음 문자입력란을 누르면 keypad가 나오고 그 다음 한번 더 누르면 음성을 입력받는 창이 뜹니다.
음성이 텍스트로 변환되어 나타납니다.
그 다음에 다시 창을 누르면 음성을 받지 않고 keypad가 뜨도록 하고 싶습니다.
그런데 현재
음성을 입력받은 후에 텍스트로 보여지고 edit창을 누르면 또 계속 음성만 받고 있습니다.
keypad가 다시 뜨게 하려면 어떻게 해야 할지 모르겠습니다...
어떤 문제가 있는건지, 소스코드 봐주시고 알려주세요...
부탁드립니다.