Add Bazel build for standalone Android plugin.

This commit is contained in:
Nolan Darilek 2020-07-09 12:32:14 -05:00
parent b78848f583
commit e0f419aaf6
5 changed files with 44 additions and 27 deletions

1
.gitignore vendored
View File

@ -5,3 +5,4 @@ bazel-bin
bazel-godot-tts bazel-godot-tts
bazel-out bazel-out
bazel-testlogs bazel-testlogs
*.aar

13
WORKSPACE Normal file
View File

@ -0,0 +1,13 @@
# Load the Android build rules
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
http_archive(
name = "build_bazel_rules_android",
urls = ["https://github.com/bazelbuild/rules_android/archive/v0.1.1.zip"],
sha256 = "cd06d15dd8bb59926e4d65f9003bfc20f9da4b2519985c27e190cddc8b7a7806",
strip_prefix = "rules_android-0.1.1",
)
# Configure Android SDK Path
load("@build_bazel_rules_android//android:rules.bzl", "android_sdk_repository", "aar_import", "android_library")
android_sdk_repository(name = "androidsdk")

View File

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="games.lightsout.godot.tts">
<application>
<meta-data android:name="org.godotengine.plugin.v1.GodotTTS" android:value="games.lightsout.godot.tts.TTS" />
</application>
</manifest>

View File

@ -0,0 +1,13 @@
load("@build_bazel_rules_android//android:rules.bzl", "aar_import", "android_library")
aar_import(
name = "godot",
aar = "godot-lib.3.2.2.stable.release.aar",
)
android_library(
name = "godot_tts",
srcs = ["TTS.java"],
manifest = "AndroidManifest.xml",
deps = [":godot"],
)

View File

@ -1,8 +1,10 @@
package games.lightsout.godot.tts; package games.lightsout.godot.tts;
import java.util.Arrays;
import java.util.List; import java.util.List;
import org.godotengine.godot.Godot; import org.godotengine.godot.Godot;
import org.godotengine.godot.plugin.GodotPlugin;
import android.accessibilityservice.AccessibilityServiceInfo; import android.accessibilityservice.AccessibilityServiceInfo;
import android.app.Activity; import android.app.Activity;
@ -10,13 +12,7 @@ import android.content.Context;
import android.speech.tts.TextToSpeech; import android.speech.tts.TextToSpeech;
import android.view.accessibility.AccessibilityManager; import android.view.accessibility.AccessibilityManager;
public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListener { public class TTS extends GodotPlugin implements TextToSpeech.OnInitListener {
protected Activity appActivity;
protected Context appContext;
private Godot activity = null;
private int instanceId = 0;
private TextToSpeech tts = null; private TextToSpeech tts = null;
private float rate = 1f; private float rate = 1f;
@ -49,7 +45,7 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe
} }
public boolean has_screen_reader() { public boolean has_screen_reader() {
AccessibilityManager accessibilityManager = (AccessibilityManager) appContext AccessibilityManager accessibilityManager = (AccessibilityManager) getActivity()
.getSystemService(Context.ACCESSIBILITY_SERVICE); .getSystemService(Context.ACCESSIBILITY_SERVICE);
if (accessibilityManager != null) { if (accessibilityManager != null) {
List<AccessibilityServiceInfo> screenReaders = accessibilityManager List<AccessibilityServiceInfo> screenReaders = accessibilityManager
@ -60,29 +56,17 @@ public class TTS extends Godot.SingletonBase implements TextToSpeech.OnInitListe
} }
} }
public void getInstanceId(int pInstanceId) { public TTS(Godot godot) {
// You will need to call this method from Godot and pass in the super(godot);
// get_instance_id(). this.tts = new TextToSpeech(this.getActivity(), this);
instanceId = pInstanceId;
} }
static public Godot.SingletonBase initialize(Activity p_activity) { public String getPluginName() {
return new TTS(p_activity); return "GodotTTS";
} }
public TTS(Activity p_activity) { public List<String> getPluginMethods() {
this.activity = (Godot) p_activity; return Arrays.asList("speak", "stop", "get_rate", "set_rate", "has_screen_reader", "is_speaking");
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", "get_rate", "set_rate", "has_screen_reader",
"is_speaking", "getInstanceId" });
this.activity.runOnUiThread(new Runnable() {
public void run() {
}
});
} }
public void onInit(int status) { public void onInit(int status) {