package nl.sogeti.android.gpstracker.actions;
import android.app.Service;
import android.content.ContentResolver;
import android.content.Intent;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.os.IBinder;
import android.speech.tts.TextToSpeech;
import android.util.Log;
public class SpeakerService extends android.app.Service implements TextToSpeech.OnInitListener
{
public static final String ACTION_PREPARE = "nl.sogeti.android.gpstracker.intent.action.PREPARE";
public static final String ACTION_SPEAK = "nl.sogeti.android.gpstracker.intent.action.SPEAK";
private static final String TAG = SpeakerService.class.getSimpleName();
private TextToSpeech mTts;
private Uri mTrackUri;
private String mUpdate = "0";
private final ContentObserver mTrackObserver = new ContentObserver( new Handler() )
{
@Override
public void onChange( boolean selfUpdate )
{
SpeakerService.this.updateSummary();
}
};
@Override
public void onCreate()
{
super.onCreate();
// success, create the TTS instance
mTts = new TextToSpeech( this, this );
speak( "Thank you for using the Open GPS Tracker voice update service." );
}
public void onStart( Intent intent, int startId )
{
Log.i( TAG, "sentence()" );
this.mTrackUri = intent.getData();
ContentResolver resolver = this.getApplicationContext().getContentResolver();
resolver.registerContentObserver( mTrackUri, false, this.mTrackObserver );
speakUpdate();
}
/*
* (non-Javadoc)
* @see android.app.Activity#onDestroy()
*/
@Override
public void onDestroy()
{
super.onDestroy();
mTts.shutdown();
}
protected void updateSummary()
{
this.mUpdate = "" + ( new Integer( this.mUpdate ).intValue() + 1 );
}
protected void speakUpdate()
{
speak( this.mUpdate );
}
private void speak( String sentence )
{
Log.i( TAG, sentence );
mTts.speak( sentence, TextToSpeech.QUEUE_ADD, null );
}
public void onInit( int status )
{
// TODO Auto-generated method stub
}
@Override
public IBinder onBind( Intent intent )
{
return null;
}
}