Android röstkommandon till arduino (4 / 6 steg)
Steg 4: Android kod
För android koden, kommer du behöva göra flera olika saker.
Först bara i klassen mainactivity måste du lägga till två saker. Första är en SpeechRecognizer och det andra är en TAGG för felsökning av din app.
privat SpeechRecognizer sr;
privata statisk sista sträng TAG = "MainActivity";
Nu, i onCreate funktion måste du lägga till dessa fyra rader. Två första är på knappen för att göra något, tredje och fjärde är taligenkänning.
ImageButton speakButton = (ImageButton) findViewById(R.id.btn_speak);
speakButton.setOnClickListener(this);
SR = SpeechRecognizer.createSpeechRecognizer(this);
sr.setRecognitionListener (nya listener());
Efter funktionen onCreate måste du göra en ny klass för taligenkänningen.
klass lyssnaren implementerar RecognitionListener
{
public void onReadyForSpeech (bunt params)
{}
public void onBeginningOfSpeech()
{}
public void onRmsChanged (float rmsdB)
{}
public void onBufferReceived (byte [] buffert)
{}
public void onEndOfSpeech()
{}
public void VidFel (int fel)
{
om (fel! = 7) {
Log.d (TAG, "fel" + fel);
}
}
public void onResults (bunt resultat)
{
String str = ""; Skapa nya tom sträng
Få resultat från taligenkänning
ArrayList data = results.getStringArrayList(SpeechRecognizer.RESULTS_RECOGNITION);
Om det finns data
IF(data.Size()! = 0) {
Lägga till alla data i en sträng
för (int jag = 0; jag < data.size(); i ++) {
Log.d (TAG, "resultatet" + data.get(i));
Str += data.get(i);
Str += "";
}
Skapa en gemen sträng
Str = str.toLowerCase();
Skicka en GET-begäran med budskap
Sträng meddelande = "meddelande =" + str;
nya Background_get().execute(message);
}
}
public void onPartialResults (bunt partialResults)
{
Log.d (TAG, "onPartialResults");
}
public void onEvent (int eventType, bunt params)
{
Log.d (TAG, "onEvent" + eventType);
}
}
Efter denna klass måste du lägga till en onClick-funktion som aktiveras när du trycker på knappen.
public void VidKlickning (Visa v) {
om (v.getId() == R.id.btn_speak)
{
Aktivera tal lyssnaren
Avsikt intent = nya Intent(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL,RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
intent.putExtra(RecognizerIntent.EXTRA_CALLING_PACKAGE,"voice.recognition.test");
intent.putExtra(RecognizerIntent.EXTRA_MAX_RESULTS,5);
sr.startListening(intent);
}
}
Det enda vi behöver lägga till nu är den klass som används för att skicka GET-begäranden.
Det är samma klass som jag använde i min föregående instructables.
/*****************************************************/
/ * Detta är en bakgrundsprocess för att ansluta * /
/ * till arduino server och skicka * /
/ * en GET-begäran med extra data * /
/* */
/* !! INTERNET tillstånd! */
/* */
/*****************************************************/
privat klassen Background_get utökar AsyncTask < sträng, Void, sträng > {
Protected String doInBackground (sträng... params) {
försök {
/ * Ändra IP till IP du anger i den arduino skissen * /
URL url = ny URL ("http://192.168.1.177/?" + params[0]);
HttpURLConnection anslutning = (HttpURLConnection) url.openConnection();
BufferedReader i = nya BufferedReader (nya InputStreamReader(connection.getInputStream()));
StringBuilder resultatet = nya StringBuilder();
Sträng inputLine;
medan ((inputLine = in.readLine())! = null)
Result.append(inputLine).append("\n");
in.Close();
Connection.Disconnect();
återvända result.toString();
} fånga (IOException e) {
e.printStackTrace();
}
returnera null;
}
}
Detta var kodning för app. Det enda vi behöver göra nu är att lägga till behörigheter till appen, så det kan använda tal och internet.