public class MainActivity extends Activity {
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");//음성인식 언어 설정
i.putExtra(RecognizerIntent.EXTRA_PROMPT, "말을 하세요."); //사용자에게 보여줄 문자
mRecognizer = SpeechRecognizer.createSpeechRecognizer(this);
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) {
}
};
public void sendSMS(View v){
String smsNum = smsNumber.getText().toString();
String smsText = smsTextContext.getText().toString();
if (smsNum.length()>0 && smsText.length()>0){
sendSMS(smsNum, smsText);
}
else if(smsNum.length()==0)
{
Toast.makeText(this, "받는사람을 입력해 주세요", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(this, "문자내용을 입력해 주세요", Toast.LENGTH_SHORT).show();
}
}
public void sendSMS(String smsNumber, String smsText){
PendingIntent sentIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_SENT_ACTION"), 0);
PendingIntent deliveredIntent = PendingIntent.getBroadcast(this, 0, new Intent("SMS_DELIVERED_ACTION"), 0);
제가 문자보내기 앱에서 문자 edit창을 음성으로 입력받는 것을 해보고 싶습니다.
제가 코드를 돌려보면 디버깅에서 error는 안나는것 같은데...
하나 editext창은 전화번호를 키보드로 입력받고 두번째 edittext창은 문자입력란으로 칸을 눌렀을때 문자내용을 음성으로 인식받도록 해보고 싶습니다.
mRecognizer = SpeechRecognizer.createSpeechRecognizer(this); 이부분에서 error가 나고 있습니다....
The method createSpeechRecognizer(Context) in the type SpeechRecognizer is not applicable for the arguments (new View.OnClickListener(){})
라는 에러가 뜨고 있습니다.
어떤 문제가 있는건지, 소스코드 봐주시고 알려주세요...
부탁드립니다.