| @@ -76,6 +76,14 @@ public class TtsService extends TextToSpeechService { | |||
| super.onCreate(); | |||
| } | |||
| @Override | |||
| public void onDestroy() { | |||
| super.onDestroy(); | |||
| if (mBroadcastReceiver != null) { | |||
| unregisterReceiver(mBroadcastReceiver); | |||
| } | |||
| } | |||
| /** | |||
| * Sets up the native eSpeak engine. | |||
| */ | |||
| @@ -100,8 +108,17 @@ public class TtsService extends TextToSpeechService { | |||
| @Override | |||
| protected int onIsLanguageAvailable(String language, String country, String variant) { | |||
| if (!CheckVoiceData.hasBaseResources(this) || CheckVoiceData.canUpgradeResources(this)) { | |||
| final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); | |||
| registerReceiver(mBroadcastReceiver, filter); | |||
| if (mBroadcastReceiver == null) { | |||
| mBroadcastReceiver = new BroadcastReceiver() { | |||
| @Override | |||
| public void onReceive(Context context, Intent intent) { | |||
| initializeTtsEngine(); | |||
| } | |||
| }; | |||
| final IntentFilter filter = new IntentFilter(DownloadVoiceData.BROADCAST_LANGUAGES_UPDATED); | |||
| registerReceiver(mBroadcastReceiver, filter); | |||
| } | |||
| final Intent intent = new Intent(this, DownloadVoiceData.class); | |||
| intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); | |||
| @@ -295,10 +312,5 @@ public class TtsService extends TextToSpeechService { | |||
| /** | |||
| * Listens for language update broadcasts and initializes the eSpeak engine. | |||
| */ | |||
| private final BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver() { | |||
| @Override | |||
| public void onReceive(Context context, Intent intent) { | |||
| initializeTtsEngine(); | |||
| } | |||
| }; | |||
| private BroadcastReceiver mBroadcastReceiver = null; | |||
| } | |||