Home >> Miscellaneous
Working with text to Speech services/implementation from
Google's Android OS 2.1 (I have tested this example only
within Emulator environment)
In this example I shall try to show a very simple user interface with
a editable text view and two buttons. These controls are laid out in
form of a tabular structure using TableLayout and corresponding
TableRow as child element to TableLayout.
Objective of this example is to use Android OS's Text to Speech service
and speak user input string out, those are entered in a edit text element,
of course on click of a button.
If you are knowledgeable about Google's Android Platform, then I suggest
you can directly go to the example code as shown below, else you may
have to go through concepts and user guide from Google's Android platform
web sites. And if interested then you may go through some of those other
examples, those are hosted in this web site @ Examples on Android Platform.
This example code:
package example;
import android.app.Activity;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TableLayout;
import android.widget.TableRow;
import android.widget.TextView;
import android.speech.tts.*;
public class TextSpeechAct extends Activity {
/** Called when the activity is first created. */
private TextToSpeech txt2Spch;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TableLayout mainLayout = new TableLayout(getApplicationContext());
mainLayout.setBackgroundColor(Color.parseColor("#ee9977"));
TableRow txtRw = new TableRow(getApplicationContext());
TextView txtFld = new TextView(getApplicationContext());
txtFld.setText("Enter Text :");
txtFld.setTextColor(Color.BLACK);
final EditText editTxt = new EditText(getApplicationContext());
int w = getWindowManager().getDefaultDisplay().getWidth();
editTxt.setWidth(w * 2/3);
editTxt.setTextSize(20);
editTxt.setLines(2);
txtRw.addView(txtFld);
txtRw.addView(editTxt);
TableRow butRw = new TableRow(getApplicationContext());
final Button spButn = new Button(getApplicationContext());
spButn.setText("Read out");
final Button clrButn = new Button(getApplicationContext());
clrButn.setText("Clear");
clrButn.setWidth(w * 1/3);
butRw.addView(spButn);
butRw.addView(clrButn);
mainLayout.addView(txtRw);
mainLayout.addView(butRw);
setContentView(mainLayout);
clrButn.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
editTxt.setText("");
}
});
spButn.setOnClickListener(new View.OnClickListener() {
Txt2SpchInitListener txtListener;
public void onClick(View v) {
if(txtListener == null)
txtListener = new Txt2SpchInitListener();
if(txt2Spch == null)
txt2Spch = new TextToSpeech(getApplicationContext(),
txtListener);
if(txtListener.status == TextToSpeech.SUCCESS) {
txt2Spch.speak(editTxt.getText().toString(),
TextToSpeech.QUEUE_FLUSH, null);
}
}
});
}
// Added @Override below, on suggestions from
// one of our visitor to this site.
@Override
public void onDestroy() {
super.onDestroy(); // Added this line on suggestions from
// one of our visitor to this site.
txt2Spch.shutdown();
}
}
final class Txt2SpchInitListener implements TextToSpeech.OnInitListener {
int status;
public void onInit(int status) {
this.status = status;
}
}
|
Txt2SpchInitListener is the listener class that receives callback
notification when the text to speech engine is initialized, and
onInit method receives the final status, whether success or failure
status from this initialization process.
So this class captures this status and is used by the main
activity class "TextSpeechAct" whether to go ahead with the speak
method call or not.
Both those buttons with labels such as "Read out" and "Clear" will
have their respective on click listener classes within the main activity
class's onCreate method and onClick method is having respective
functionality implemented for those two separate buttons.
One point to be noted is that the onDestroy callback for the Activity
class has the shutdown method called on the TextToSpeech instance,
so as to take care of proper handling of this resource on closure of
this example application from the running state.
So how it works?? I have tested this in my local development environment
with Android Platform 2.1 Emulator along with AVD only.
After successfully installation of this example APK file from Eclipse
IDE onto the Emulator environment, I could able to see the main screen
with those basic elements.
After entering a simple text in the text box (EditText view), on click
event for the Read out button, really reads out in English as output,
as I have set related locale and language setting only, in my local
development environment.
If anything missed out , please let me know at
techienjoy at yahoo . com
|
|
|
|
|
|
|
|
| Android Sensors Example : |
Example on Android Sensors Listed and
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
|
|
|
|
|
|
|
|
|
|
|
| Android Examples : |
List of ANDROid examples
with source code and output
screens captured and shown.
|
|
|
|
|
|
|
|
| Google GWT Example : |
Example using GWT and some design patterns and various
ways of implementing this example.
|
|
|
|
|
|
|
|
|
| Android Tab View Example : |
Example on Android Tab View
explained with a very simple scenario
and appropriate screens captured and shown.
|
|
| Android ListView Example : |
Example on Android ListView
explained with a very simple scenario
whereby showing folder and files with
structure and appropriate screens
captured and shown.
|
|
| Android Gallery Example : |
Example on Android Gallery View
explained with a very simple scenario
and appropriate screens captured and shown.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| Android ListView Example : |
Example on Android List View
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
| Android ListView Example : |
Example on Android ListView and
explained with a very simple scenario
and article with appropriate screens
captured and shown.
|
|
|
|
|
|
|
|