【发布时间】:2017-06-07 09:46:37
【问题描述】:
每当我调用它以传递一些语音命令时,我试图隐藏显示“现在说话”并写 google 作为标题的语音识别器对话框。我不希望它出现。相反,我希望它在后台工作,以便用户看不到它。正确的做法应该是什么?
public void getSpeechInput(View view) {
getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
Intent intent = new Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE, Locale.getDefault());
if (intent.resolveActivity(getPackageManager()) != null) {
startActivityForResult(intent, 10);
} else {
Toast.makeText(this, "Your Device Don't Support Speech Input", Toast.LENGTH_SHORT).show();
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 10:
if (resultCode == RESULT_OK && data != null) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
txvResult.setText(result.get(0));
String str = txvResult.getText().toString();
if(str.equals("lights on")){
Toast.makeText(MainActivity.this,
"matched", Toast.LENGTH_LONG).show();
count[0]=1;
turnOnFlash();
}
else if(str.equals("lights off")){
Toast.makeText(MainActivity.this,
"didnt", Toast.LENGTH_LONG).show();
count[0]=0;
turnOffFlash();
}
}
break;
}
}
我试过用这个但是没用:-
getWindow().getDecorView().setBackgroundResource(android.R.color.transparent);
【问题讨论】:
-
你需要使用
SpeechRecognizerdeveloper.android.com/reference/android/speech/… 但是很麻烦.. -
没有别的办法吗..我也在使用全屏图像视图,所以我可以把出现在图像视图后面的对话框放在一边吗..?
-
不,你不能那样做。即使您设法将其隐藏在 imageview 后面,所有点击事件都将由 imageview 进行。这是如何使用 SpeechRecognizer stackoverflow.com/q/4559930/3111083 的一个很好的例子。
标签: android android-activity speech-recognition google-speech-api