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);
//오류가 나서 생성함
RecognitionListener listener = null;
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);
}
..............
}
----------------------------------------------------------
09-01 14:36:53.486: D/ResourcesManager(25200): creating new AssetManager and set to /data/app/whdghks913.tistory.examplesendsms-1/base.apk
09-01 14:36:53.576: D/AndroidRuntime(25200): Shutting down VM
09-01 14:36:53.581: E/AndroidRuntime(25200): FATAL EXCEPTION: main
09-01 14:36:53.581: E/AndroidRuntime(25200): Process: whdghks913.tistory.examplesendsms, PID: 25200
09-01 14:36:53.581: E/AndroidRuntime(25200): java.lang.RuntimeException: Unable to start activity ComponentInfo{whdghks913.tistory.examplesendsms/whdghks913.tistory.examplesendsms.MainActivity}: java.lang.IllegalArgumentException: intent must not be null
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2712)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2777)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.app.ActivityThread.access$900(ActivityThread.java:179)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1462)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.os.Handler.dispatchMessage(Handler.java:102)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.os.Looper.loop(Looper.java:145)
09-01 14:36:53.581: E/AndroidRuntime(25200): at android.app.ActivityThread.main(ActivityThread.java:5972)
09-01 14:36:53.581: E/AndroidRuntime(25200): at java.lang.reflect.Method.invoke(Native Method)
09-01 14:36:53.581: E/AndroidRuntime(25200): at java.lang.reflect.Method.invoke(Method.java:372)
09-01 14:36:53.581: E/AndroidRuntime(25200): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1399)
..........
제가 문자보내기 앱에서 문자 edit창을 음성으로 입력받는 것을 해보고 싶습니다.
제가 코드를 돌려보면 디버깅에서 error는 안나는것 같은데...
하나 editext창은 전화번호를 키보드로 입력받고 두번째 edittext창은 문자입력란으로 칸을 눌렀을때 문자내용을 음성으로 인식받도록 해보고 싶습니다.
그런데... 이걸 돌려보면 앱 핸드폰 실행했을때 앱이 중지됩니다.
어떤 문제가 있는건지, 소스코드 봐주시고 알려주세요...
부탁드립니다.