마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

코드 질문입니다. 답변 부탁드립니다.

0 추천
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(){})

라는 에러가 뜨고 있습니다.

 

어떤 문제가 있는건지, 소스코드 봐주시고 알려주세요...

부탁드립니다.

 

 

익명사용자 님이 2015년 9월 2일 질문

1개의 답변

0 추천
 
채택된 답변
답변을 위해서 소스코드를 볼 필요는 없네요.

일단 메세지를 보시면,

The method createSpeechRecognizer(Context) in the type SpeechRecognizer is not applicable for the arguments (new View.OnClickListener(){})

 

해석하자면,

사용한 SpeechRecognizer라는 클래스에 "createSpeechRecognizer"라는 메소드는

"new View.OnClickListener(){}"을 매개변수로 사용될 수 없다는 뜻입니다.

친절하게 그렇다면 어떤 매개변수를 사용해야하는지까지 다음과 같이 알려주죠.

createSpeechRecognizer(Context)

Context를 사용해야 한다고 알려줍니다.

 

이런 부분은 말씀하신대로 코드의 문제, 즉 문법적인 문제인데,

이런 문제는 대부분의 에디터에서 아주 친절하고 상세하게 문제점을 지적해줍니다.

그만큼 기본적인 부분이기 때문에 일단 친절하게 알려주는 문제 정도는 해결하실 수 있는게 좋습니다.

앞으로 작업해 나가시다보면 훨씬 해결하기 어렵고 복잡한 문제가 많을테니까요.
Jinthree (8,980 포인트) 님이 2015년 9월 2일 답변
...