Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion ist in einigen Browsern möglicherweise nicht verfügbar.
package de.vollkanone.sprachhilfe;
import java.util.ArrayList;
import java.util.Locale;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnInitListener{
Button btn_go;
TextView tw;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(this, this);
btn_go = (Button) findViewById(R.id.btn_go);
btn_go.setVisibility(View.INVISIBLE);
tw = (TextView) findViewById(R.id.textView1);
btn_go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button("btn_go");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void button(String btn) {
if(btn.equalsIgnoreCase("btn_go")) {
erkennen(this);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SPEECH_RECOGNIZED) {
if(data != null) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(!result.isEmpty()) {
tw.setText(result.get(0));
tts.speak(result.get(0), TextToSpeech.QUEUE_FLUSH, null);
}
}
}
}
/*
public void onUtteranceCompleted (String utteranceId) {
tw.setText("Fertig...");
}
*/
static public final int SPEECH_RECOGNIZED = 1;
static public void erkennen(Activity activity) {
Intent intent = new Intent();
intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
activity.startActivityForResult(intent, SPEECH_RECOGNIZED);
}
@Override
public void onInit(int status) {
tts.setLanguage(Locale.GERMAN);
tts.setSpeechRate((float) 1.5);
btn_go.setVisibility(View.VISIBLE);
}
}
package de.vollkanone.sprachhilfe;
import android.app.Activity;
import android.speech.tts.UtteranceProgressListener;
public class MyUtteranceProgressListener extends UtteranceProgressListener
{
private MainActivity mainActivity;
public MyUtteranceProgressListener(MainActivity mainActivity)
{
this.mainActivity = mainActivity;
}
@Override
public void onStart(String utteranceId)
{
// Was soll passieren, wenn die nette Dame mit schwafeln anfängt ...
this.mainActivity.setGoVisible(false);
}
@Override
public void onDone(String utteranceId)
{
// Was soll passieren, wenn die nette Dame mit schwafeln fertig ist ...
this.mainActivity.setGoVisible(true);
}
@Override
public void onError(String utteranceId)
{
// Was soll passieren, wenn ein Fehler aufgetreten ist...
this.mainActivity.setGoVisible(true);
}
}
@Override
public void onInit(int status) {
tts.setLanguage(Locale.GERMAN);
tts.setSpeechRate((float) 1.5);
tts.setOnUtteranceProgressListener(new MyUtteranceProgressListener(this)); // Callback für TTS registrieren
this.setGoButtonVisible(true);
}
// Neue Methode, um das Verhalten des Buttons zu steuern
public void setGoVisible(boolean visibility)
{
// TODO: Eigentümer-Thread!!!
btn_go.setVisibility( visibility ? View.VISIBLE : View.INVISIBLE );
}
package de.vollkanone.sprachhilfe;
import java.util.ArrayList;
import java.util.Locale;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.speech.RecognizerIntent;
import android.speech.tts.TextToSpeech;
import android.speech.tts.TextToSpeech.OnInitListener;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity implements OnInitListener{
Button btn_go;
TextView tw;
private TextToSpeech tts;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tts = new TextToSpeech(this, this);
btn_go = (Button) findViewById(R.id.btn_go);
btn_go.setVisibility(View.INVISIBLE);
tw = (TextView) findViewById(R.id.textView1);
btn_go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
button("btn_go");
}
});
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void button(String btn) {
if(btn.equalsIgnoreCase("btn_go")) {
erkennen(this);
}
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == SPEECH_RECOGNIZED) {
if(data != null) {
ArrayList<String> result = data.getStringArrayListExtra(RecognizerIntent.EXTRA_RESULTS);
if(!result.isEmpty()) {
tw.setText(result.get(0));
tts.speak(result.get(0), TextToSpeech.QUEUE_FLUSH, null);
}
}
}
}
static public final int SPEECH_RECOGNIZED = 1;
static public void erkennen(Activity activity) {
Intent intent = new Intent();
intent.setAction(RecognizerIntent.ACTION_RECOGNIZE_SPEECH);
intent.putExtra(RecognizerIntent.EXTRA_LANGUAGE_MODEL, RecognizerIntent.LANGUAGE_MODEL_FREE_FORM);
activity.startActivityForResult(intent, SPEECH_RECOGNIZED);
}
@Override
public void onInit(int status) {
tts.setLanguage(Locale.GERMAN);
tts.setSpeechRate((float) 1.5);
btn_go.setVisibility(View.VISIBLE);
tts.setOnUtteranceProgressListener(new MyUtteranceProgressListener(this));
}
public void setGoVisible(boolean visibility)
{
btn_go.setVisibility( visibility ? View.VISIBLE : View.INVISIBLE );
}
}
package de.vollkanone.sprachhilfe;
import android.speech.tts.UtteranceProgressListener;
public class MyUtteranceProgressListener extends UtteranceProgressListener{
private MainActivity mainActivity;
public MyUtteranceProgressListener(MainActivity mainActivity)
{
this.mainActivity = mainActivity;
}
@Override
public void onStart(String utteranceId)
{
// Was soll passieren, wenn die nette Dame mit schwafeln anfängt ...
this.mainActivity.setGoVisible(false);
}
@Override
public void onDone(String utteranceId)
{
// Was soll passieren, wenn die nette Dame mit schwafeln fertig ist ...
this.mainActivity.setGoVisible(true);
}
@Override
public void onError(String utteranceId)
{
// Was soll passieren, wenn ein Fehler aufgetreten ist...
this.mainActivity.setGoVisible(true);
}
}
Geht nur leider nicht, weißt du warum?