I want to alter this switch such that instead of clicking the buttons my activities will launch by speaking the name of the associated fruit. For instance, the Apple class will launch by speaking the word "Apple". How should I rewrite this switch? All of my attempts at doing this have not seemed to work thus far. Any answers provided will be greatly appreciated. Thank you!
package com.example.speech;
import com.example.speech.R;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ImageButton;
public class MainActivity extends Activity implements OnClickListener{
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// find our buttons and set onClickListeners for all
ImageButton one = (ImageButton)findViewById(R.id.one);
ImageButton two = (ImageButton)findViewById(R.id.two);
ImageButton three = (ImageButton)findViewById(R.id.three);
ImageButton four = (ImageButton)findViewById(R.id.four);
ImageButton five = (ImageButton)findViewById(R.id.five);
ImageButton six = (ImageButton)findViewById(R.id.six);
one.setOnClickListener(this);
two.setOnClickListener(this);
three.setOnClickListener(this);
four.setOnClickListener(this);
five.setOnClickListener(this);
six.setOnClickListener(this);
}
public void onClick(View v) {
// do something based on the button that was clicked
switch(v.getId()) {
case R.id.one:
// create an intent indicating we want
// to start the activity.
Intent i = new Intent(this, Apple.class);
// start the activity based on the Intent
startActivity(i);
finish();
break;
case R.id.two:
Intent j = new Intent(this, Orange.class);
// start the activity based on the Intent
startActivity(j);
finish();
break;
case R.id.three:
Intent k = new Intent(this, Banana.class);
// start the activity based on the Intent
startActivity(k);
finish();
break;
case R.id.four:
Intent l = new Intent(this, Grape.class);
// start the activity based on the Intent
startActivity(l);
finish();
break;
case R.id.five:
Intent m = new Intent(this, Strawberry.class);
// start the activity based on the Intent
startActivityForResult(m, 0);
finish();
break;
case R.id.six:
Intent n = new Intent(this, Kiwi.class);
// start the activity based on the Intent
startActivity(n);
finish();
break;
default:
finish();
}
};
}
Is this the correct way to handle the voice activity result?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == VOICE_RECOGNITION_REQUEST_CODE)
//If Voice recognition is successful then it returns RESULT_OK
if(resultCode == RESULT_OK) {
ArrayList<String> textMatchList = data
.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if (!textMatchList.isEmpty()) {
// If first Match contains the word 'apple'
// Then start the apple activity.
if (textMatchList.get(0).contains("apple")) {
// create an intent indicating we want
// to start the activity.
Intent i = new Intent(this, Apple.class);
// start the activity based on the Intent
startActivity(i);
finish();
break;
I feel like something is missing after this line...
if (textMatchList.get(0).contains("apple")) {