안드로이드 개발 질문/답변
(글 수 45,052)
음.. android 음성인식기능을 구글 검색이 아닌
사용자가 만들어 놓으 db와 연동하려고하는데..
어떻게 해야 할지 감이 안잡히네요.... 음. - _-;;;
음성인식을 하면 구굴에서 검색은 되는데..
어덯게 접근을 해야 할지 망막합니다. ..;;;
목표를 이룹시다! !
2010.09.28 17:42:26
package com.kdt.m2m.voice;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ResolveInfo;
import android.speech.RecognizerIntent;
import android.widget.Toast;
public class VoiceScan {
List<ResolveInfo> activities = null;
public static final int REQUEST_CODE = 57187;
Activity activity = null;
Activity callbackActivity = null;
public VoiceScan(Activity activity,Activity callbackActivity) {
this.activity = activity;
this.callbackActivity = callbackActivity;
PackageManager pm = this.activity.getPackageManager();
List<ResolveInfo> activities = pm.queryIntentActivities(new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH), 0);
}
public boolean use(){
if (activities == null || activities.size() != 0) {
return false;
} else {
return true;
}
}
public void voiceScan(){
try{
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, "Free Form Language Model Demo");
callbackActivity.startActivityForResult(intent, REQUEST_CODE);
} catch (ActivityNotFoundException ex) {
Toast.makeText(this.activity, "Activity Not Found", Toast.LENGTH_LONG).show();
}
}
//사용법 받는곳에서 오버라이딩해서 사용.
// @Override
// protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// // TODO Auto-generated method stub
// if (requestCode == REQUEST_CODE && resultCode == RESULT_OK){
// ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
// for(int i = 0 ; i <matches.size();i++){
// text.setText(text.getText()+"\n"+matches.get(i));
// }
// }
//
// super.onActivityResult(requestCode, resultCode, data);
// }
}
음성 인식 액티비티 호출
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, Locale.getDefault());
intent.putExtra(RecognizerIntent.EXTRA_PROMPT, mContext.getString("치즈~"));
startActivityForResult(intent, yourQueryCode);
onActivityResult 에서
ArrayList<String> matches = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
String str = "";
for(int index = 0; index < matches.size(); index ++) {
str += matches.get(index);
}
str -> 인식결과 스트링
뭐, 요렇게 하심 안될까요....