| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <manifest xmlns:android="http://schemas.android.com/apk/res/android" | <manifest xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| package="com.googlecode.eyesfree.espeak" | |||||
| package="com.reecedunn.espeak" | |||||
| android:versionCode="7" | android:versionCode="7" | ||||
| android:versionName="1.46.02_r7" > | android:versionName="1.46.02_r7" > | ||||
| </activity> | </activity> | ||||
| <provider | <provider | ||||
| android:name="com.googlecode.eyesfree.espeak.providers.SettingsProvider" | |||||
| android:authorities="com.googlecode.eyesfree.espeak.providers.SettingsProvider" /> | |||||
| android:name="com.reecedunn.espeak.providers.SettingsProvider" | |||||
| android:authorities="com.reecedunn.espeak.providers.SettingsProvider" /> | |||||
| </application> | </application> | ||||
| </manifest> | </manifest> |
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeClassInit( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeClassInit( | |||||
| JNIEnv* env, jclass clazz) { | JNIEnv* env, jclass clazz) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| METHOD_nativeSynthCallback = env->GetMethodID(clazz, "nativeSynthCallback", "([B)V"); | METHOD_nativeSynthCallback = env->GetMethodID(clazz, "nativeSynthCallback", "([B)V"); | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeCreate( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeCreate( | |||||
| JNIEnv *env, jobject object, jstring path) { | JNIEnv *env, jobject object, jstring path) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| native_data_t *nat = new native_data_t; | native_data_t *nat = new native_data_t; | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeDestroy( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeDestroy( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| native_data_t *nat = getNativeData(env, object); | native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jint | JNIEXPORT jint | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeGetSampleRate( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetSampleRate( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| const native_data_t *nat = getNativeData(env, object); | const native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jint | JNIEXPORT jint | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeGetChannelCount( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetChannelCount( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| const native_data_t *nat = getNativeData(env, object); | const native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jint | JNIEXPORT jint | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeGetAudioFormat( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetAudioFormat( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| const native_data_t *nat = getNativeData(env, object); | const native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jint | JNIEXPORT jint | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeGetBufferSizeInMillis( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetBufferSizeInMillis( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| const native_data_t *nat = getNativeData(env, object); | const native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jobjectArray | JNIEXPORT jobjectArray | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeGetAvailableVoices( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeGetAvailableVoices( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeSetVoiceByProperties( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetVoiceByProperties( | |||||
| JNIEnv *env, jobject object, jstring name, jstring languages, jint gender, jint age, | JNIEnv *env, jobject object, jstring name, jstring languages, jint gender, jint age, | ||||
| jint variant) { | jint variant) { | ||||
| const char *c_name = name ? env->GetStringUTFChars(name, NULL) : NULL; | const char *c_name = name ? env->GetStringUTFChars(name, NULL) : NULL; | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeSetRate( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetRate( | |||||
| JNIEnv *env, jobject object, jint rate) { | JNIEnv *env, jobject object, jint rate) { | ||||
| const int wpm = ((float)rate / 100) * espeak_GetParameter(espeakRATE, 0); | const int wpm = ((float)rate / 100) * espeak_GetParameter(espeakRATE, 0); | ||||
| if (DEBUG) LOGV("%s(rate=%d, wpm=%d)", __FUNCTION__, rate, wpm); | if (DEBUG) LOGV("%s(rate=%d, wpm=%d)", __FUNCTION__, rate, wpm); | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeSetPitch( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSetPitch( | |||||
| JNIEnv *env, jobject object, jint pitch) { | JNIEnv *env, jobject object, jint pitch) { | ||||
| // The values of pitch from android range from 50 - 200, with 100 being normal. | // The values of pitch from android range from 50 - 200, with 100 being normal. | ||||
| // The values espeak supports are from 0 - 100, with 50 being normal. | // The values espeak supports are from 0 - 100, with 50 being normal. | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeSynthesize( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeSynthesize( | |||||
| JNIEnv *env, jobject object, jstring text) { | JNIEnv *env, jobject object, jstring text) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| native_data_t *nat = getNativeData(env, object); | native_data_t *nat = getNativeData(env, object); | ||||
| } | } | ||||
| JNIEXPORT jboolean | JNIEXPORT jboolean | ||||
| JNICALL Java_com_googlecode_eyesfree_espeak_SpeechSynthesis_nativeStop( | |||||
| JNICALL Java_com_reecedunn_espeak_SpeechSynthesis_nativeStop( | |||||
| JNIEnv *env, jobject object) { | JNIEnv *env, jobject object) { | ||||
| if (DEBUG) LOGV("%s", __FUNCTION__); | if (DEBUG) LOGV("%s", __FUNCTION__); | ||||
| espeak_Cancel(); | espeak_Cancel(); |
| <?xml version="1.0" encoding="utf-8"?> | <?xml version="1.0" encoding="utf-8"?> | ||||
| <tts-engine | <tts-engine | ||||
| xmlns:android="http://schemas.android.com/apk/res/android" | xmlns:android="http://schemas.android.com/apk/res/android" | ||||
| android:settingsActivity="com.googlecode.eyesfree.espeak.TtsSettingsActivity" /> | |||||
| android:settingsActivity="com.reecedunn.espeak.TtsSettingsActivity" /> |
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.content.Context; | import android.content.Context; | ||||
| import android.speech.tts.TextToSpeech.Engine; | import android.speech.tts.TextToSpeech.Engine; | ||||
| import android.util.Log; | import android.util.Log; | ||||
| import com.googlecode.eyesfree.espeak.SpeechSynthesis.SynthReadyCallback; | |||||
| import com.googlecode.eyesfree.espeak.SpeechSynthesis.Voice; | |||||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | |||||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||||
| import java.io.File; | import java.io.File; | ||||
| import java.util.ArrayList; | import java.util.ArrayList; |
| /* | /* | ||||
| * Copyright (C) 2009 The Android Open Source Project | * Copyright (C) 2009 The Android Open Source Project | ||||
| * Copyright (C) 2012 Reece H. Dunn | |||||
| * | * | ||||
| * Licensed under the Apache License, Version 2.0 (the "License"); | * Licensed under the Apache License, Version 2.0 (the "License"); | ||||
| * you may not use this file except in compliance with the License. | * you may not use this file except in compliance with the License. | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.content.Context; | import android.content.Context; | ||||
| import java.util.zip.ZipInputStream; | import java.util.zip.ZipInputStream; | ||||
| public class DownloadVoiceData extends Activity { | public class DownloadVoiceData extends Activity { | ||||
| public static final String BROADCAST_LANGUAGES_UPDATED = "com.googlecode.eyesfree.espeak.LANGUAGES_UPDATED"; | |||||
| public static final String BROADCAST_LANGUAGES_UPDATED = "com.reecedunn.espeak.LANGUAGES_UPDATED"; | |||||
| private AsyncExtract mAsyncExtract; | private AsyncExtract mAsyncExtract; | ||||
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.content.Intent; | import android.content.Intent; |
| * API Version: 14 | * API Version: 14 | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.content.Context; | import android.content.Context; | ||||
| import android.speech.tts.TextToSpeech; | import android.speech.tts.TextToSpeech; |
| * API Version: 14 | * API Version: 14 | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.annotation.SuppressLint; | import android.annotation.SuppressLint; | ||||
| import android.content.BroadcastReceiver; | import android.content.BroadcastReceiver; | ||||
| import android.speech.tts.TextToSpeechService; | import android.speech.tts.TextToSpeechService; | ||||
| import android.util.Log; | import android.util.Log; | ||||
| import com.googlecode.eyesfree.espeak.SpeechSynthesis.SynthReadyCallback; | |||||
| import com.googlecode.eyesfree.espeak.SpeechSynthesis.Voice; | |||||
| import com.reecedunn.espeak.SpeechSynthesis.SynthReadyCallback; | |||||
| import com.reecedunn.espeak.SpeechSynthesis.Voice; | |||||
| import java.util.List; | import java.util.List; | ||||
| import java.util.Locale; | import java.util.Locale; |
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.os.Bundle; | import android.os.Bundle; | ||||
| import android.preference.ListPreference; | import android.preference.ListPreference; |
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.os.Bundle; | import android.os.Bundle; | ||||
| * implementing TTS must be a file placed here: | * implementing TTS must be a file placed here: | ||||
| * /data/data/<PACKAGE_NAME>/lib/libtts<ACTIVITY_NAME_LOWERCASED>.so | * /data/data/<PACKAGE_NAME>/lib/libtts<ACTIVITY_NAME_LOWERCASED>.so | ||||
| * Example: | * Example: | ||||
| * /data/data/com.googlecode.eyesfree.espeak/lib/libttsespeak.so | |||||
| * /data/data/com.reecedunn.espeak/lib/libttsespeak.so | |||||
| */ | */ | ||||
| public class eSpeak extends Activity { | public class eSpeak extends Activity { |
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak; | |||||
| package com.reecedunn.espeak; | |||||
| import android.app.Activity; | import android.app.Activity; | ||||
| import android.app.AlertDialog; | import android.app.AlertDialog; |
| * limitations under the License. | * limitations under the License. | ||||
| */ | */ | ||||
| package com.googlecode.eyesfree.espeak.providers; | |||||
| package com.reecedunn.espeak.providers; | |||||
| import com.googlecode.eyesfree.espeak.CheckVoiceData; | |||||
| import com.reecedunn.espeak.CheckVoiceData; | |||||
| import android.content.ContentProvider; | import android.content.ContentProvider; | ||||
| import android.content.ContentValues; | import android.content.ContentValues; |