Initial Android support.

This commit is contained in:
Nolan Darilek 2019-12-30 12:57:19 -06:00
parent e02e1dd2b8
commit ecfee60db5
2 changed files with 71 additions and 1 deletions

6
TTS.gd
View File

@ -10,6 +10,8 @@ func _ready():
if TTS.can_instance() or Engine.editor_hint:
print_debug("Attempting to load TTS.")
tts = TTS.new()
elif Engine.has_singleton("AndroidTTS"):
tts = Engine.get_singleton("AndroidTTS")
else:
print_debug("TTS not available!")
@ -35,7 +37,9 @@ func stop():
tts.stop()
func get_is_rate_supported():
if tts != null:
if Engine.get_singleton("AndroidTTS"):
return false
elif tts != null:
return tts.is_rate_supported()
else:
return false

View File

@ -0,0 +1,66 @@
package games.lightsout.godot.tts;
import android.app.Activity;
import android.content.Intent;
import android.content.Context;
import android.speech.tts.TextToSpeech;
import android.util.Log;
import com.godot.game.R;
import javax.microedition.khronos.opengles.GL10;
import org.godotengine.godot.Godot;
public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListener {
protected Activity appActivity;
protected Context appContext;
private Godot activity = null;
private int instanceId = 0;
private TextToSpeech tts = null;
private Integer utteranceId = 0;
public void speak(String text, boolean interrupt) {
int mode = TextToSpeech.QUEUE_ADD;
if (interrupt)
mode = TextToSpeech.QUEUE_FLUSH;
tts.speak(text, mode, null, this.utteranceId.toString());
this.utteranceId++;
}
public void stop() {
tts.stop();
}
public void getInstanceId(int pInstanceId) {
// You will need to call this method from Godot and pass in the get_instance_id().
instanceId = pInstanceId;
}
static public Godot.SingletonBase initialize(Activity p_activity) {
return new TTS(p_activity);
}
public TTS(Activity p_activity) {
this.activity = (Godot)p_activity;
this.appActivity = p_activity;
this.appContext = appActivity.getApplicationContext();
this.tts = new TextToSpeech(this.appContext, this);
// Register class name and functions to bind.
registerClass("AndroidTTS", new String[]
{
"speak",
"stop",
"getInstanceId"
});
this.activity.runOnUiThread(new Runnable() {
public void run() {
}
});
}
public void onInit(int status) {
}
}